我是新来的,我刚刚开始编译器构建课程,我只是一个初学者。所以我的问题是从以下语法中删除左递归:
E→E + B | E - B | (E)|乙
E→B / F | B * F | (B)| ˚F
F→id
我知道删除左递归的规则是
如果A→Aα| β比
A→βA'
A'→αA'| ε
在上面的语法中,只有第一行才会有递归。我对(E)感到困惑,因为我无法弄清楚(E)是否为β。如果有人可以删除递归并解释它,我将不胜感激。
谢谢
(UPDATE) 所以我试图根据我的理解消除左递归,如下所示:
E→(E)E'|是“
E'→+ BE'| -BE'| ɛ
E→B / F | B * F | (B)| ˚F
F→id
没关系,还是我做错了