我有以下名为“变量”的快速解析解析器:
val alphabet = 'A' to 'z'
val variable: Parser[String] = P(CharsWhileIn(alphabet).!)
我希望这个解析器在像“end”这样的特定单词上失败,同时仍然返回一个 Parser[String]。
尝试否定前瞻:
val alphabet = 'A' to 'Z'
val variable: P[String] = P(!"end" ~ CharIn(alphabet).rep(min = 1)).!
这将成功的地方:
println( variable.parse("ABCend") ) // Success(ABC,3)
但这不会:
println( variable.parse("endABC") ) // Failure(!("end"):1:4 ..."ABC")