如何解析给定的LALR(1)语法

问题描述 投票:0回答:1

我在使用LALR方法解析以下语法时遇到麻烦。

s -> y
y -> dX | ydX
X -> e | Zd
z -> F | epsilon

一开始我很好,这里是项目状态0 :( ,,分隔了前瞻状态)

s -> .y, $
y -> .dX, $d
y -> .ydX, $d

现在这很好,但是当您从d终端移至状态1时,我会感到困惑。我的书的状态2如下:

y -> d.X, $d
X -> .e, $d
X -> .Zd, $d
Z -> .f, d
Z -> ., d

超前终端“ d”来自X非终端?我以为dX来自.dX,其前瞻性终端为“ $”和$ d”,但是当进行E封闭时,前瞻性应该不是$ d的第一个即“ $”?为什么是“ $”,还是“ d”?我以为它可能来自另一个州,因为这是LALR,但最终合并状态1的州也没有广告,所以有人可以向我解释为什么会有“ d”对吗与“ $”处于该状态的前期吗?

我在使用LALR方法解析以下语法时遇到麻烦。 s-> y y-> dX | ydX X-> e | Zd z-> F | epsilon我一开始没问题,这里是项目状态0 :( the,分隔为...

compiler-construction automata lalr lr1
1个回答
0
投票

d之后的推导序列中,[[S $-> Y $-> dX $]在X之后是{$}

© www.soinside.com 2019 - 2024. All rights reserved.