构造LR(0)分析表

1.什么叫LR(0)文法

假若一个文法G的拓广文法G'的活前缀识别自动机中的每个状态(项目集)不存在下述情况︰

(1)既含移进项目又含归约项目;

(2)含有多个归约项目;

则称G是一个LR(0)文法。

2.如何构造LR(0)分析表

(1)令每个项目集I的下标k作为分析器的状态,包含项目S'→·S的集合I的下标k为分析器的初态。

(2)构造LR(O)分析表的ACTION和GOTO子表 

3.LR(0)分析表的ACTION和GOTO子表构造

4.例题分析

 

(1)状态0

对于状态0而言我们可以看到有通过终结符a到达状态2 ,因为a为终结符,到达的状态2这个操作应该填在ACTION表中,在相应位置填上s2,表示将2移进。同理状态0也可以通过b到达状态3,将s3填入对应位置。

 

我们接着分析状态0,还可以发现状态0可以通过E到达状态1,因为E为非终结符,此时做的一定是规约操作,对照推导式我们可以发现可以规约第一个推导式E->aA得到,故将1填到GOTO表的对应位置。

 (2)状态1

状态1对照表格发现只有一个接受状态,所以在1这一行的#这一列填上acc。

 

(3)状态2

(4)状态3

 

(5)状态4

 

(6)状态5

状态6告诉你要规约,用的是第1的推导式E->aA做规约,所以不管是状态a,b,c,d,#,都对其做规约。

 

(7) 结果

 

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值