如果一个文法中有一个非终结符号A使得对某个串α存在一个推导A=》Aα,那么这个文法就是左递归的。递归分为立即左递归和非立即左递归。立即左递归单步即可看出来,非立即左递归
举个例子:
消除立即左递归只需要遵循以下规律进行转换就ok。
立即左递归:
非立即左递归:
和数学中的公因子含义相同,就是公共的因子,而左公因子就是最左边的公因子。
例如:
可以看出前n项拥有一个共同的左公因子:a,所以可以把他提取出来。
so easy啦
S → aB1|aB2|aB3|aB4|...|aBn|y
可以看出前n项拥有一个共同的左公因子:a,所以可以把他提取出来。
提取规则
so easy啦
S → aS'|y
S'→ B1|B2|B3|...|Bn