Scala Language
Parser-Kombinatoren
Suche…
Bemerkungen
ParseResult-Fälle
Ein ParseResult
in drei ParseResult
:
- Erfolg, mit einer Markierung für den Beginn des Matches und dem nächsten übereinstimmenden Zeichen.
- Fehler, mit einer Markierung für den Beginn des Versuchs In diesem Fall führt der Parser zu dieser Position zurück, wo er sich befinden wird, wenn die Analyse fortgesetzt wird.
- Fehler, der die Analyse stoppt. Es erfolgt kein Backtracking oder weiteres Parsen.
Basisbeispiel
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)
Die Ausgabe lautet wie folgt:
[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]
im Beispiel von Alice
zeigt an, dass der Beginn des Matches an Position 1
ist und der erste Charakter, der noch passt, an Position 6
beginnt.
Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow