Compiler construction 对如何从这个语法中删除左递归感到困惑吗

Compiler construction 对如何从这个语法中删除左递归感到困惑吗,compiler-construction,left-recursion,Compiler Construction,Left Recursion,我是新来的,刚刚开始学习编译器构造课程,我只是一个初学者。所以我的问题是关于从以下语法中删除左递归: E→ E+B | E-B |(E)| B E→ B/F | B*F |(B)| F F→ id 我知道删除左递归的规则是 如果→ Aα|β大于 A.→ βA' A'→ αA'|ε 在上面的语法中,只有第一行有左递归。我对(E)感到困惑,因为我不知道(E)是否为β。如果有人能删除递归并解释它,我将不胜感激 多谢各位 (更新) 因此,根据我的理解,我试图消除左递归,如下所示: E→ (E) E'|

我是新来的,刚刚开始学习编译器构造课程,我只是一个初学者。所以我的问题是关于从以下语法中删除左递归:
E→ E+B | E-B |(E)| B
E→ B/F | B*F |(B)| F
F→ id
我知道删除左递归的规则是
如果→ Aα|β大于
A.→ βA'
A'→ αA'|ε
在上面的语法中,只有第一行有左递归。我对(E)感到困惑,因为我不知道(E)是否为β。如果有人能删除递归并解释它,我将不胜感激

多谢各位

(更新) 因此,根据我的理解,我试图消除左递归,如下所示:

E→ (E) E'| BE'
E'→ +成为|-成为|ɛ
E→ B/F | B*F |(B)| F
F→ id

它是好的还是我做错了

在该语法中,
B
没有产品,使得所有引用它的产品都无用。我怀疑第二行的左侧应该是
B
,而不是
E
,我建议您在花更多时间解决这个问题之前验证一下。(此外,这个家庭作业问题已经被问了很多次,也被回答了很多次,因此值得在网站上搜索。)