为什么没有';Antlr中语法的左递归删除选项是什么?
在用Antlr编写语法的过程中,有几次我遇到了左递归,这就是为什么我问自己为什么没有自动删除它的工具。在我做了一些研究之后,我发现了两种处理这个问题的方法——Paull算法和Robert C.Moore的著作《从上下文无关文法中移除左递归》,2000年《代码》中讨论的左角变换。我注意到Paull的算法非常不切实际,但另一方面,左角变换只会将语法规则的数量从为什么没有';Antlr中语法的左递归删除选项是什么?,antlr,grammar,left-recursion,Antlr,Grammar,Left Recursion,在用Antlr编写语法的过程中,有几次我遇到了左递归,这就是为什么我问自己为什么没有自动删除它的工具。在我做了一些研究之后,我发现了两种处理这个问题的方法——Paull算法和Robert C.Moore的著作《从上下文无关文法中移除左递归》,2000年《代码》中讨论的左角变换。我注意到Paull的算法非常不切实际,但另一方面,左角变换只会将语法规则的数量从O(n)增加到O(n^2),但大多数时间比这要低得多,这使得该算法非常有效。因此,我的问题是:左递归删除不是故意实现的,而是将责任留给语法实现
O(n)
增加到O(n^2)
,但大多数时间比这要低得多,这使得该算法非常有效。因此,我的问题是:左递归删除不是故意实现的,而是将责任留给语法实现者,还是不将其视为一种选择?这个答案有两个部分