删除左递归过程

时间:2014-05-10 23:06:38

标签: recursion grammar context-free-grammar left-recursion

我只是对做左手递归的事情感到好奇,我已经完成了这个问题,当我完成了左递归时,我已经为S中的所有内容添加了F。我们总是这样做左递归(我的老师)没有很好地解释)。

1)
S -> aSb | bSb | Sc | bc

left recursion:
S -> aSbF | bsbF | bcF
F -> cF | ε

Factorising:

S -> aSbF | bX
X -> aSbFbF | bXbF | cF
F -> cF |  ε

1 个答案:

答案 0 :(得分:1)

每次立即左递归都会这样做。 (它直接称自己的地方)

如果你有直接递归,那么你唯一不会这样做的时间就是..

这是一个很难解决的问题..

A - >巴
B - >轻拍| Cb
C - > cB | AC

以上是间接左递归的示例。术语" C"调用A.在这种情况下,您需要将A的内容移动到C ..

C - > cB | Bac

完成此示例需要更多步骤..但最终您将最终立即执行左递归,其中C将自行调用。