编辑(概括问题):
我想解析一个语法,在哪里
<prefix> ::= [a-z]*
<middle> ::= xxx
<suffix> ::= b+
<grammar> ::= <prefix><middle><suffix>
我希望(例如)以下单词通过:aaaaxxxbb
, axxxaaxxxbbb
,xxxxxxbb
原帖:
我希望以下解析器能够回溯并最终找到解决方案:
val before = P(AnyChar.rep.!)
val content = P("xxx".!)
val after = P("b".rep.!)
val all = P(before ~ content ~ after ~ End)
def test() = {
val r = all.parse("aaaaxxxbbb")
println(r)
}
相反,看起来该before
部分贪婪地解析了所有文本,并且解析器在没有回溯的情况下失败。
我错过了什么吗?