繁体   English   中英

在LR(1)解析中向前看

[英]Look ahead in LR(1) parsing

我有一些问题需要了解如何在LR(1)中取得成功。 我已经找到了关于同一问题LR(1)的问题-向前看,但这对我没有帮助。

S'->.S,$
S->.L=R,$
S->.R,$
L->.*R,=/$
L->.id,=/$
R->.L,$

我了解S和S生产的前瞻性,但不了解L和R生产……您能帮我吗? 先感谢您。

对于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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM