考虑下面的表达式语法 G。
E -> E - T | T
T -> T + F | F
F -> (E) | id
下列哪个文法不是左递归的,而是等价于 G 的。
A)
E -> E - T | T
T -> T + F | F
F -> (E) | id
B)
E -> TE'
E' -> -TE' | ε
T -> T + F | F
F -> (E) | id
C)
E -> TX
X -> -TX | ε
T -> FY
Y -> +FY | ε
F -> (E) | id
D)
E -> TX | (TX)
X -> -TX | +TX | ε
T -> id
(一) A
(乙)乙
(C)丙
(四)丁答案: (C)
解释:我们知道左递归:A -> Aα/β
去掉左递归后可以写成
A->βA’
A’->αA’/ε
因此对于:E->E-T/T
α= -T , β= T 。因此删除左递归后的新产品
是 E->TE’ 和 E’->- TE’/ ε
T->FT’ 和 T’->+FT’/ ε
F->(E)/id 。
这个问题的测验