1
我试图通过消除间接递归然后直接递归来消除CFG的左递归,如algorithm所示。左递归消除
我将使用这个语法:
A = A a | A B C | B C | D D
当I = 1和J = 1我们正在寻找替代形式A的所有作品 - > A R与:
A→δ γ | δ γ | .. | δ ķ γ
所以,当我看着A - >一个一个相匹配,我应该
A -> A a a | A B C a a | B C a | D D a
更换其即时通讯肯定是不对的
任何人都可以点我当你用生产本身来取代产品时,如何取代产品的正确方向?
注:另外,我只是停留在第一个规则,以便省略了他人的简单
任何帮助,将不胜感激
[更新]发现接近原来的希腊符号我可以。另外,我是否可能在错误的方向上接近这一点。当i = 1和j = 1,A j→A a | A B C | B C | D D,但我应该使用A j - > B C | d d 如果是这样的话,我会得到:
A -> B C A | B C B C | D D A | D D B C | B C | D D
至于那些然后消除在生产递归。这是一个更好的方向?
在语法上工作时,我发现它有助于写出来的LR(0)套。我发现这些方法比消除左递归更容易,而且如果你想手工编写代码,可以写一个递归上升解析器。 – Samsdram 2011-02-27 21:16:23