消除左递归及提取左公因子

如题所述

第1个回答  2022-06-03

如果一个文法中有一个非终结符号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

相似回答