消除左递归(似乎无法得到它)

时间:2015-03-17 20:28:30

标签: parsing recursion

我有以下语法:

S --> SaA
S --> bB
A --> aB
A --> c
B --> Bb
B --> d

现在,看一下解决左递归的一般规则,我可以说:

B --> dB'
B' --> e | bB'

但这就是我能得到的。我尝试扩展S

S --> SaA | bB
S --> SaaB | Sac | bB

但我无法以适当的形式获得该算法。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

我想知道你为什么要努力扩展" S。它已经存在的形式,

S  -> SaA | bB

非常适合应用与B相同的转换。它将成为

S  -> bBS'
S' -> ε | aA

现在,如果需要,可以展开BS'