首先,给文法增加一个辅助的开始产生式S'->.S$。令T是至今看到的状态集合,E是至今已找到的(移进或转换)边集合。
初始化T为{Closure({S'->.S$})}
初始化E为空
repeat
for T中的每一个状态I
forI中的每一项A->α.Xβ
let J是Goto(I,X)
T<-T{J}
E<-E{I X-> J}
until E和T在本次迭代没有改变
但对于符号$,我们不计算GOTO(I,$),采用accept
LR(0)的归约动作集合R:
R->{}
for T中的每一个状态I
forT中的每一项A->α
R<-R∪{(I,A->α)}
本文详细介绍了如何构建LR(0)解析表的过程,包括初始化状态集和边集,通过迭代计算Goto函数来扩展状态集合,以及定义归约动作集合。适用于希望深入了解编译原理中自下而上解析技术的读者。
2692

被折叠的 条评论
为什么被折叠?



