二义性 消除左递归

书是龙书

编译器中常用的方法可以分为自顶向下和自底向上的。一个是从语法分析树的顶部开始向底部构造语法分析树,一个则是从叶子节点开始,逐渐向根结点构造,这两种分析方法中,语法分析器的输入总是照着从左向右。

 

二义性:如果一个文法可以为某个句子生成多棵语法分析树,那么他就是二义性的。

例如例子id + id * id

 

 

消除左递归

如果一个文法中有一个非终结符号A使得对某个串存在一个推导A=>Aa 那么这个文法就是左递归

消除办法:

A> Aa1| Aa2|......Aam|β1|β2|βn

其中β都不以A开头,然后将A的产生式替换为

Aβ1A’ |β2A’|.....|βnA

A’ —>a1A’|a2A’|a3A’|.....

 

例子:

 

 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值