Scala Language
Combinateurs d'analyseur
Recherche…
Remarques
Cas ParseResult
Un ParseResult
décline en trois ParseResult
:
- Succès, avec un marqueur pour le début du match et le prochain personnage à rechercher.
- Échec, avec un marqueur indiquant le début de la tentative de match. Dans ce cas, l'analyseur revient à cette position, où il se trouvera lorsque l'analyse se poursuivra.
- Erreur qui arrête l'analyse. Aucun retour en arrière ou analyse supplémentaire ne se produit.
Exemple de 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)
La sortie sera la suivante:
[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]
dans l'exemple d' Alice
indique que le début du match est à la position 1
et que le premier caractère restant à faire correspondre commence à la position 6
.
Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow