首页 > 试题广场 >

说明以下文法 G1 为 LR(1) 的,但不是 LALR(1

[问答题]
说明以下文法 G1 为 LR(1) 的,但不是 LALR(1) 的,也不是 SLR(1) 的。
S 是开始符号。
S → A a | b A c | B c | b B a
A → d
B → d
G1 仅产生串 da 、bdc 、dc 和 和 bda 。
读入缀 活前缀 d 后到达的 的 LR(1) 项目集簇为:
态 状态 i :{A → d.,a ; B → d.,c}
缀 读入活前缀 bd 后到达的 LR(1) 项目集簇为:
态 状态 j :{A → d.,c ; B → d.,a}
显然,在构造的 LR(1) 项目集簇中不存在移进-归约或归约-归约冲突。因此,该文法为 LR(1)
态 的。而上述状态 i 和 和 j 为同心集,合并后为{A → d.,a/c ; B → d.,a/c} ,则出现了新
是 的归约-归约冲突,而这个冲突在合并前是没有的。因此,该文法不是 LALR(1) 的。
是 很明显,该文法也不是 SLR(1) 的,因为在读入活前缀 d 后到达的 LR(0) 项目集簇(状态)
为{A → d. ; B → d. }而 ,包含了两个归约项目,而 follow(A) ∩follow(B)={a,c}
是 ≠Φ,因此,存在归约-归约冲突,故而该文法不是 SLR(1)
发表于 2017-05-01 17:51:23 回复(0)