高分请教消除左递归问题。
「已注销」 2009-08-14 03:01:00 在下在读《编译原理 龙书》时实在是理解不了左递归。
例子:
expr->expr+term
开始时向前看指针指向expr,于是决定调用expr对应的函数,但是expr不是终结符号,所以向前看指针不做变动,所以在产生式中的expr也是调用了相同的函数,导致了递归调用,叫做立即左递归。
问题1:上述表明函数的调用取决于向前看指针,这样理解对么?
对应文法
E->E+T/T 的消除左递归的方法是
使 E->TE'
E'->+TE'/空 (T是终结符号)
问题2:请高人结合expr->expr+term,举个具体的例子。
问题3:是不是一定要把 expr->expr+term 改成 expr->term+expr 才能与 E->TE' E'->+TE'/空 匹配 ? 改了以后就不存在左递归了那改了还有什么意义?
脑子里是越来越乱,请高人帮帮我,整理一下思路。