LALR分析表构造算法之一:
(1)构造文法G的LR(1)项目集族C={ I0,I1,……,In}
把所有的同心集合并在一起,记作C’={ J0,J1,……,Jm}为全并后的新族,含有项目[S’→S·,#]的项集Jk为分析表的初始状态集
(2)对于C’构造ACTION表:
a) 若该项目为移入项,即为[A→α·aβ,b]形式则置ACTION[k.a]为Sj,其中Jj=GO(Jk,a)
b) 若该项目为归约项,即为[A→α·,b]的形式,则置ACTION[k,b]=rj,其中j为第j个产生式
c) 若项目为[S’→S·,#],则置ACTION[k,#]为“接受”,即acc
(3) GOTO表的构造
假定Jk是Ii1, Ii2, Ii3,……Iit全并后的新集。由于所有这些Ii同心,那么GO(Ii1,X), GO(Ii2,X),GO(Ii3,X),……GO(Iit,X)也同心,于是将这些同心集合并起来,记为Jj,则有GO(Jk,X)= Jj于是若GO(Jk,A)=Jj,则置GOTO[k,A]=j,其中A∈Vn
(4) 分析表中空即为出错
2023-01-03 00:17:42
1.21MB
编译原理
1