Scala Language
Parser Combinators
Zoeken…
Opmerkingen
ParseResult Cases
Een ParseResult
komt in drie smaken:
- Succes, met een marker voor het begin van de wedstrijd en het volgende te matchen karakter.
- Mislukking, met een marker over het begin van waar de wedstrijd werd geprobeerd. In dit geval gaat de parser terug naar die positie, waar deze zich bevindt wanneer het parseren doorgaat.
- Fout, waardoor het parseren wordt gestopt. Er vindt geen backtracking of verdere parsering plaats.
Basis voorbeeld
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)
De output is als volgt:
[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]
in het voorbeeld van Alice
geeft aan dat het begin van de wedstrijd op positie 1
is en dat het resterende karakter van de vuist begint op positie 6
.
Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow