Sök…


Anmärkningar

ParseResult Fall

Ett ParseResult kommer i tre smaker:

  • Framgång, med en markör för matchens början och nästa tecken som ska matchas.
  • Misslyckande, med en markör för början av var matchen försökte. I detta fall spårar parsaren tillbaka till den positionen, där det kommer att vara när parsningen fortsätter.
  • Fel, vilket stoppar analysen. Ingen backtracking eller ytterligare analysering sker.

Grundläggande exempel

import scala.util.parsing.combinator._

class SimpleParser extends RegexParsers {
  // Define a grammar rule, turn it into a regex, and apply it the input.
  def word: Parser[String] = """[A-Z][a-z]+""".r ^^ { _.toString }
}

object SimpleParser extends SimpleParser {
  val parseAlice = parse(word, "Alice went to Alamo Square.")
  val parseBarb = parse(word, "barb went Upside Down.")
}

//Successfully finds a match
println(SimpleParser.parseAlice)
//Fails to find a match
println(SimpleParser.parseBarb)

Utgången kommer att vara följande:

[1.6] parsed: Alice
res0: Unit = ()

[1.1] failure: string matching regex `[A-Z][a-z]+' expected but `b' found

barb went Upside Down.
^

[1.6] i Alice exemplet indikerar att matchen börjar på position 1 och att nävekaraktären som återstår att matcha börjar på position 6 .



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow