Scala Language
Combinadores de analizador
Buscar..
Observaciones
Casos de ParseResult
Un ParseResult
viene en tres sabores:
- Éxito, con un marcador en cuanto al inicio del partido y el siguiente carácter que se va a combinar.
- Fracaso, con un marcador en el inicio de donde se intentó la coincidencia. En este caso, el analizador retrocede a esa posición, donde estará cuando el análisis continúe.
- Error, que detiene el análisis. No se realiza ningún retroceso o análisis adicional.
Ejemplo básico
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 salida será la siguiente:
[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]
en el ejemplo de Alice
indica que el inicio de la partida está en la posición 1
, y el primer carácter que queda para coincidir comienza en la posición 6
.
Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow