D->TL;T->i;T->f;T->L,x;L->x;如何消除左递归
时间: 2024-06-07 20:06:00 浏览: 73
消除左递归
为了消除左递归,我们需要将产生式改写为右递归形式。对于给定的文法:
D->TL;
T->i;
T->f;
T->L,x;
L->x;
我们可以将其改写为右递归形式如下:
D->TL';
L'->,TL';
L'->ε
T->i;
T->f;
T->L;
其中,L'是L的一个替代符号。这里我们添加了两个新的产生式,其中一个产生式生成逗号和一个新的非终结符L',它可以继续扩展为一个L和一个逗号,或者为空。这个新的产生式可以将原来的产生式D->TL,x转换为右递归形式D->TL',而不是左递归形式。同样地,我们可以使用L'来将T->L,x转换为右递归形式T->L,L'。最后,我们将L->x保持不变,因为它不涉及到左递归。这样,我们就成功地消除了左递归。
阅读全文