上下文无关文法中的递归转换与算术表达式文法
1. 递归转换
1.1 直接左递归
直接左递归指的是形如 A —> Ax 的产生式,其中 x 为非空字符串。这种产生式从右向左生成列表。例如,下面的文法 G3.29 生成以 b 或 cc 开头的 d 和 e 的列表:
G3.29
1. S —> Sd (在右侧生成一个 d)
2. S —> Se (在右侧生成一个 e)
3. S —> b (生成初始的 b)
4. S —> cc (生成初始的 cc)
该文法定义的语言为 (b|cc)(d|e)* 。例如,推导 bdde 的过程为: S => Se => Sde => Sdde => bdde 。
消除直接左递归通常很简单,只需从左向右生成列表。与 G3.29 等价且从左向右生成列表的文法 G3.30 如下:
G3.30
1. S —> bL (生成初始的 b)
2. S —> ccL (生成初始的 cc)
3. L —> dL (L
超级会员免费看
订阅专栏 解锁全文

3708

被折叠的 条评论
为什么被折叠?



