Scala Language
Combinatori parser
Ricerca…
Osservazioni
Casi di ParseResult
A ParseResult
disponibile in tre versioni:
- Successo, con un marcatore per l'inizio della partita e il prossimo personaggio da abbinare.
- Fallimento, con un indicatore dell'avvio di dove è stata tentata la partita. In questo caso il parser retrocede in quella posizione, dove sarà quando l'analisi continua.
- Errore, che interrompe l'analisi. Nessun backtracking o ulteriore parsing.
Esempio di base
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)
L'output sarà il seguente:
[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]
nell'esempio di Alice
indica che l'inizio della partita è in posizione 1
e il carattere di pugno che rimane per abbinare inizia nella posizione 6
.
Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow