首页 > 解决方案 > LR(1) 解析,前瞻符号问题

问题描述

我理解 LR(1) 解析和前瞻符号的概念。我有练习的解决方案,但它不同意我的解决方案。

我正在尝试为以下语法填充 LR(1) 解析表:

S->xAz 
S->BAx
A->Ay
A->e
B->yB
B->y

Ι 不必扩展语法,因为 S 不会出现在任何规则的任何右侧。

First(A)=y,e
First(Ax)=x,y
First(B)=y
First(Ay)=y

括号中的前瞻符号。

所以,I0 = Closure(S->.xAz($) , S->.BAx($) ) =

S->.xAz($)
S->.BAx($)
B->.yB(x,y)
B->.y(x,y)

当我尝试GOTO(0,x)我认为我应该去:

S->x.Az($)
A->.Ay(z)
A->. (z) 

查找 A-> 的前瞻符号。& A->. 是的,我首先选择(z)。但是官方书籍解决方案说前瞻是(z,y)。 y 是从哪里来的?

先感谢您

标签: parsingcompiler-constructionlr1

解决方案


推荐阅读