练习:读者以文法G6为例: (1) A→aB (2) A→Bb (3) B→Ac (4) B→d 消除文法中的左递归,并检验改写后的文法是否为LL(1)文法。 参考答案: 用产生式(1)、(2)的右部代替产生式(3)中的非终结符A得到左部为B的产生式为: (1) B→aBc (2) B→Bbc (3) B→d 消除左递归后得: B→(aBc|d)B′ B′→bcB′|ε 再把原来其余的产生式A→aB,A→Bb加入,最终文法为: (1) A→aB (2) A→Bb (3) B→(aBc|d)B′ (4) B′→bcB′|ε 可以检验改写后的文法不是LL(1)文法。 |