编译原理LR分析

image

image

LR(0)分析存在问题及解决办法

当LR(0)含有互相冲突的项目时,则需要向前展

望符号串,检查下一个输入符号的状态

例 项目集I={X→α· bβ,A→α·,B→α· }

当面临输入符号b时,应该选择移进b,还是归约

到A,或归约到B?

解决办法 当状态I,面临输入符号是a时

(1) 若a=b,则移进b

(2) 若a∈FOLLOW(A),则用产生式A→α进行归约

(3) 若a∈FOLLOW(B),则用产生式B→α进行归约

(4) 此外,报错

SLR(1)解决冲突的方法:

假定LR(0)规范族的一个项目集I中

含有m个移进项目

A1→α·a1β1,A2→α·a2β2,…,Am→α·amβm

同时含有n个归约项目

B1→α· ,B2→α· ,…, Bn→α·

如果下列集合两两不相交

{a1,a2,…,am},FOLLOW(B1),FOLLOW(B2),…,FOLLOW(Bn)

当状态I面临输入符号a时,按以下规则移进归约

若a=ai,i=1,2,…,m, 则移进

若a∈FOLLOW(Bi),i=1,2,…,n,则用Bi→α归约

此外,报错

posted @ 2022-12-14 10:41  风归去  阅读(67)  评论(0编辑  收藏  举报