编译原理中的左递归

来源:百度知道 编辑:UC知道 时间:2024/05/29 05:36:20
编译原理中的左递归是什么意思,直接左递归是什么意思?能解释的清楚些么,书上的太抽象!谢谢啦~~

1.A->Aa
2.A->Ba
B->Ab (A和B属于非终结符,a和b属于终结符)

通俗点讲:左递归就是情况1所说的“->”两边都含有同一个非终结符;
情况2所说的A->Ba中“->”后面的B 与 B->Ab中“->”前面的B是相同的非终结符
这两种情况就叫作左递归。

左递归就是像例子中E->E + T | T
E->E.... 非结束符推出自己 将会无限递归中
消除左递归
不好讲清楚
举个例子吧

例 算术表达文法
E->E + T | T ( T + T . . . + T )
T->T * F | F ( F * F . . . * F )
F->( E ) | id
消除左递归后文法
E->TE'
E'->+ TE'|字符空
T->FT' 
T'->* F T '|字符空 
F->( E ) | id