左递归消除问题

时间:2014-05-05 12:01:05

标签: left-recursion

所以我有这个左递归语法

E → E Op1 E2 | E2

就目前而言,它是递归的,所以我通过另外一步消除了左递归:

E → X E2
X → E Op1 E2 | ε

我有一种沉闷的感觉但是我错误地消除了它,因为如果我追踪它,那么第一组E仍将以E开头。我对么?或者我错过了什么?这个问题是更大的语法集合的一部分,仅供参考。

1 个答案:

答案 0 :(得分:1)

你遗漏的是递归消除的第二部分:而不是

X → E Op1 E2 | ε

你需要

X → Op1 E2 X | ε