我读过的所有内容都表明 Treetop 会像正则表达式一样回溯,但我很难做到这一点。
假设我有以下语法:
grammar TestGrammar
rule open_close
'{' .+ '}'
end
end
这与字符串不匹配{abc}。我怀疑那是因为从这封信开始.+就消耗了一切。a即abc}当我只希望它消费时它正在消费abc。
这似乎与类似的正则表达式不同。正则表达式/{.+}/将匹配{abc}。据我了解,这是可能的,因为正则表达式引擎在将关闭}作为 的一部分使用后回溯.+,然后无法匹配。
那么 Treetop 可以这样回溯吗?如果是这样,怎么做?
我知道您可以使用否定来匹配“除 a 之外的任何内容}”。但这不是我的本意。假设我希望能够匹配字符串{ab}c}。在这种情况下,我想要的标记是开头{、中间字符串ab}c和结尾}。这是一个人为的示例,但在使用嵌套表达式(如{a b {c d}}.