我有一个我正在尝试构建的新通用编程语言的语法文件。我试图使该语言健壮且易于使用(它深受 Ruby 等的启发),并且在此过程中我引入了一些左递归规则。
我见过一些似乎表明以下左递归规则的示例:
rule l_recurse
l_recurse / 'something else'
end
可以通过将其更改为非左递归:
rule r_recurse
'something else' / r_recurse
end
对我来说,这看起来会有不同的问题并且仍然会失败。我是对的,还是这“行得通”?
我试图(查找和)消除的特定左递归可在此语法文件中找到。我不确定哪些规则会受到影响,但至少有一些规则被指出具有左递归。(顺便说一句,我试图通过收紧范围规则来消除他提到的特定范围问题。)