2017-10-09 28 views
0

我有以下fastparse解析器名爲「變量」:未能在比賽中階fastparse

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

我想爲這個解析器像「結束」的特定詞失敗, 同時還返回一個解析器[串]。

回答

1

嘗試用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")