次の単純な Scala パーサーがあります。
object MainTest extends JavaTokenParsers {
def line: Parser[String] = "A"
def main(args: Array[String]): Unit = {
println(parseAll(line, """AB""".stripMargin))
}
}
これで 1 行 (この場合は "AB") を処理し、その行が "A" (または指定した他のパターン) と等しくない場合はエラーを返します。
残念ながら、これは失敗します:
[1.2] failure: string matching regex `\z' expected but `B' found
AB
^
問題は、行末に到達していなくても 'A' が一致することです。入力を行に分割すると、行全体が一致するかどうかのいずれかになるように、すべての「AB」行でパーサーが失敗するようにしたいと考えています。
出来ますか?