0
问题是,PEGs(解析表达式语法)do not allow left-recursive rules。 我已阅读有关此主题的可用答案,但具体问题(如this one)或非常简单(例如x = symbol:(x '.')
)。如何解决PEG中的左递归
我创建了以下非常简单的语法来说明问题
EXAMPLE = x+
x = symbol:(x y*/x y z)
y = symbol:('.' x)
z = symbol:('$')
此语法可以使用PEG.js parser generator进行测试。
在正式语言中“流利”的人是否可以描述如何将此规则/规则重写为PEG?还是有一个通用的方法/算法,可以解决左递归?
编辑:我刚刚发现this Wikipedia page,它描述了一个方法,以消除左递归,我会研究,并尝试将其应用到上面显示的语法。
x没有锚点。你能提供一个有效输入的例子吗? – fafl