Scala Language
パーサー結合子
サーチ…
備考
ParseResult Cases
ParseResult
には3つの味があります:
- 一致の開始点と一致する次の文字についてのマーカーで、成功する。
- マッチが試行された場所の開始点に関するマーカーを含む失敗。この場合、パーサーはその位置にバックトラックします。ここでは、解析が続行されます。
- エラー。解析を停止します。バックトラックやそれ以上の解析は行われません。
基本的な例
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.
^
Alice
例の[1.6]
は、一致の開始が位置1
にあり、一致する残りの先頭の文字が位置6
で始まることを示しています。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow