试图找出在上下文无关语法中删除左递归。我已经习惯了某些形式,但这个让我感到有些困惑。
S --> S {S} S | (A) | a
A --> {S} A | epsilon
我还必须设计一个像样的解析器,我可以做。然而,弄清楚这个左递归(特别是第一个)让我感到困惑。
答案 0 :(得分:0)
关于左递归有一篇有趣的维基百科文章。它还有一节关于删除非上下文语法的左递归。
答案 1 :(得分:0)
试试这个:
S --> a [ { S } S ]
| ( [ A ] ) [ {S} S ]
A --> { S } [ A ]