在 scala fastparse 中匹配失败

fail on match in scala fastparse

我有以下 fastparse 解析器,名称为 "variable":

val alphabet = 'A' to 'z'
val variable: Parser[String] = P(CharsWhileIn(alphabet).!)

我希望这个解析器在 "end" 这样的特定单词上失败, 同时仍然返回一个 Parser[String].

试试 negative lookahead:

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")