从无上下文语法中删除循环递归

时间:2014-02-14 01:13:07

标签: compiler-construction context-free-grammar ll

我正在尝试解决问题,将此CFG写入LL(1)解析表。但是,问题是它在L / A之间有循环左递归,我找不到任何解释如何执行此操作的资源。

以下是有问题的CFG:

L -> Aa | Bb
A -> La | aa
B -> bBb | ba

任何人都可以帮助解释如何从语法中删除这个循环吗?谢谢!

1 个答案:

答案 0 :(得分:0)

在这个例子中,你可以把它拉起来:

L -> Aa | Bb | Laa
A -> aa
B -> bBb | ba