Scala Language
Комбинировщики Parser
Поиск…
замечания
Случаи ParseResult
ParseResult
выпускается в трех вариантах:
- Успех, с отметкой о начале матча и следующем символе, который будет соответствовать.
- Отказ, с отметкой о начале того, где была предпринята попытка матча. В этом случае синтаксический анализатор возвращается в это положение, где это будет происходить при разборе парсинга.
- Ошибка, которая останавливает разбор. Никакой обратный отсчет или дальнейший синтаксический анализ не происходит.
Основной пример
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)
Выход будет следующим:
[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]
в примере Alice
указывает, что начало матча находится в позиции 1
, а оставшийся совпадение первого конца начинается с позиции 6
.
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow