Left recursion 左递归消除问题

Left recursion 左递归消除问题,left-recursion,Left Recursion,我有一个左递归语法 E → E Op1 E2 | E2 目前,它是左递归,因此我通过加入另一个步骤消除了左递归: E → X E2 X → E Op1 E2 | ε 然而,我有一种令人沮丧的感觉,我错误地消除了它,因为如果我跟踪它,那么第一组E仍将以E开始。我说得对吗?还是我遗漏了什么?这个问题是更大语法集的一部分,仅供参考 您缺少的是递归消除的第二部分:而不是 X → E Op1 E2 | ε 你需要 X → Op1 E2 X | ε 你在实现某种编译器吗?或者这只是一个普通的问题?你

我有一个左递归语法

E → E Op1 E2 | E2
目前,它是左递归,因此我通过加入另一个步骤消除了左递归:

E → X E2
X → E Op1 E2 | ε

然而,我有一种令人沮丧的感觉,我错误地消除了它,因为如果我跟踪它,那么第一组
E
仍将以
E
开始。我说得对吗?还是我遗漏了什么?这个问题是更大语法集的一部分,仅供参考

您缺少的是递归消除的第二部分:而不是

X → E Op1 E2 | ε
你需要

X → Op1 E2 X | ε

你在实现某种编译器吗?或者这只是一个普通的问题?你的推理似乎是正确的;但是,我会把这个问题看作是一个偏离主题的问题,因为它主要是关于理论计算机科学,而不是严格意义上的编程。我最终必须将这些语法集合实现到解析器中,然后编写一个程序来实现这些解析器,所以我认为这是合适的。