[英]Look ahead in LR(1) parsing
对于LR / SLR / LALR解析的非常好的处理,我建议使用The Dragon Book 。
构造LR(1)项目集在第4.7.2节中,过程CLOSURE
。
对于您的示例,请考虑对LR(1)项目S->.L=R,$
执行“展开”(在CLOSURE
期间):结果是LR(1)项目
L->.*R,=
L->.id,=
前瞻是FIRST("=R$")
中的每个终端符号,即,点前非终端后面的所有内容,再加上前瞻,此时新项目的前瞻只是=
。
接下来,考虑S->.R,$
“扩展”。 同样,新项目中的前瞻是FIRST("$"
)中的所有终端符号: R
没有任何内容,因此仅前瞻。 这产生了物品
R ->.L,$
进一步扩展此项,以FIRST("$")
所有非终结点为先行对象
L->.*R,$
L->.id,$
因此,您可以看到原始示例中的L->.*R,=/$
只是两个单独项目L->.*R,=
和L->.*R,$
的简写形式它们是沿着单独的“扩展”链获得的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.