scala fastparse中的匹配失败

时间:2017-10-09 15:14:36

标签: scala fastparse

我有以下fastparse解析器名为"变量":

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

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

1 个答案:

答案 0 :(得分:2)

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