3

试图弄清楚在上下文无关语法中删除左递归。我习惯了某些形式,但这个让我有点困惑。

S --> S {S} S | (A) | a
A --> {S} A | epsilon

我还必须设计一个像样的解析器,我可以做到。然而,弄清楚这个左递归(尤其是第一个递归)让我感到困惑。

4

2 回答 2

0

有一篇关于左递归的有趣的维基百科文章。它还有一个关于删除非上下文语法的左递归的部分。

http://en.wikipedia.org/wiki/Left_recursion

于 2010-09-30T00:28:50.760 回答
0

尝试这个:

S --> a [ { S } S ]
    | ( [ A ] ) [ {S} S ]


A --> { S } [ A ]
于 2010-09-30T00:42:37.863 回答