构造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) 结果

 

 

 


版权声明:本文为qq_55168827原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。