什么是规范的 LR(1)项目!我读过龙书,它使我困惑,(delta,gamma,toh,...)
有人可以帮我解决这个问题吗?
这在英语中是什么意思?[A-& gt;alpha.Bbeta,a]
非常感谢..
[A -> alpha . B beta , a]
基本上意味着“假设规则A
正在扩展,到目前为止我们已经看到了alpha
。然后我们期望看到B beta
。我们还知道在A
之后,我们将看到a
”
所以,在 CLR(1)中,你有一些这些项目组成的状态。
如果前瞻(gamma)是first(B)
的成员,并且假设您有一个规则,例如B->gamma C
,那么您可以“转移”并转到包含[B -> gamma . C, beta]
的状态。正如您所看到的,.
已移动通过gamma
的6之后
如果前瞻是a
,并且假设B beta
可以生成lambda
(空字符串)(这里,假设 beta 是一个可以生成lambda
的非终端)。然后,您可以“减少”并转到包含规则的状态,例如C -> something A . a something_else, follow]
。
这是我能解释的最简单的方法。
IIRC,这是一个“项目”,即一些句子形式解析的潜在状态。
这意味着什么:
[A - > alpha.Bbeta , a]
是当试图解析 a(目标语言的子字符串)时,可以将其视为非终端A,是否已看到alpha,并且(“.”)接下来需要Bbeta,并且如果看到非终端的元素,则它是有效的A如果下一个令牌是a。
(我认为你转录 Bbeta 错误,它可能是 beta 在书中)。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(37条)