第7章作业参考答案

2020-04-18 06:35

第7章 LR 分析

1.已知文法A→aAd|aAb|ε

判断该文法是否是SLR(1)文法,若是构造相应分析表,并对输入串ab#给出分析过程。 答案:文法:A→aAd|aAb|ε

拓广文法为G′,增加产生式S′→A 若产生式排序为: 0 S' →A 1 A →aAd 2 A →aAb 3 A →ε

由产生式知:

First (S' ) = {ε,a} First (A ) = {ε,a} Follow(A ) = {d,b,#}

G′的LR(0)项目集规范族及识别活前缀的DFA 如下图所示:

在I0 中:A →.aAd 和A →.aAb 为移进项目,A →.为归约项目,存在移进-归约冲突,因此所给文法不是LR(0)文法。

在I0、I2 中:Follow(A) ∩{a}= {d,b,#} ∩{a}=φ

所以在I0、I2 中的移进-归约冲突可以由Follow 集解决,所以G 是SLR(1)文法。 构造的SLR(1)分析表如下:题目1 的SLR(1)分析表

对输入串ab#的分析过程

10.判断下列各题所示文法是否为LR类方法,若是请说明是LR(0),SLR(1),LALR(1)或LR(1)的哪一种,并构造相应的分析表,若不是请说明理由. (3)S->aAd|eBd|aBr|eAr A->a B->a 答案:

1)列出扩展文法G'的产生式列表: (0)S'->S (1)S->aAd

(2)S->eBd (3)S->aBr (4)S->eAr (5)A->a

(6)B->a

2) G'的LR(0)项目集族及识别活前缀的DFA 如下图所示: S d I0: I1: I4: I9: A S'->.S S'->S. S->aA.d S->aAd. S->.aAd B a I2: I5: I10: S->.eBd r S->a.Ad S->aB.r S->aBrd. S->.aBr S->a.Br S->.eAr I6: a A->.a e A->a. B->.a B->a. I3: a S->e.Bd d S->e.Ar I7: B I11: B->.a S->eB.d S->eBd. A A->.a r I8: I12: S->eA.r S->eAr.

从上图中看出项目集I6中存在归约-归约冲突,所以该文法不是LR(0)文法。 下面判断是否为SLR(1)文法:

Follow(S)={#} Follow(A)={d,r} Follow(B)={d,r}

对于I6,Follow(A) ∩Follow(B)= {d,r}不为φ,所以项目集I6中的归约-归约冲突不能消除,该文法不是SLR(1)文法。

下面判断是否为LR(1)文法,在上面的项目集规范族中加入搜索符: S I0: d I1: I4: I9: S'->.S,# S'->S.,# A S->aA.d,# S->aAd.,# S->.aAd,# B S->.eBd,# a I2: I5: I10: r S->.aBr,# S->a.Ad,# S->aB.r,# S->aBr.,# S->.eAr,# S->a.Br,# I6: a A->.a,d e A->a.,d B->.a,r B->a.,r I3: S->e.Bd,# d I11: I7: S->e.Ar,# B S->eBd.,# S->eB.d,# B->.a,d A A->.a,r r I12: I8: a S->eAr. ,# S->eA.r,# I13: B->a.,d A->a.,r 从上图可以看出原来存的的归约-归约冲突已经消除,所以该文法为LR(1)文法。 但若合并同心项目集I6和I13,则归约-归约冲突又会重现,因此该文法不是LALR(1)文法。 3)LR(1)分析表 State 0 1 2 3 4 5 6 7 8 9 Action a e d r # S2 S3 acc S6 S13 S9 S10 R5 R6 S11 S12 R1 Goto S A B 1 4 5 8 7 10 11 12 13 R3 R2 R4 R6 R5

11.设文法G[S]为:

S->AS|ε A->aA|b

(1) 证明G[S]是LR[1]文法; 扩展文法G’为: (0) S’->S (1) S->AS (2) S->ε (3) A->aA (4) A->b

G'的LR(1)项目集族及识别活前缀的DFA 如下图所示: S I0: I1:

A S’->.S,# S’->S.,#

S->.AS,#

I2: S->.,# A

A->.aA,a/b/# S->A.S,#

S I5: A->.b, a/b/# S->.AS,#

S->AS.,# S->.,# a b A->.aA,a/b/#

A->.b, a/b/# I4: b A->b., a/b/# a

I3: b A I6: A->a.A,a/b/# A->aA.,a/b/# A->.aA,a/b/#

a A->.b, a/b/#

从上图中可以看出,每个项目集中均无移进-归约冲突和归约-归约冲突,所以该文法为LR(1)文法。

(2) 构造它的LR(1)分析表;

State 0 1 2 3 4 5 Action a b # S3 S4 R2 acc S3 S4 R2 S3 S4 R4 R4 R4 R1 Goto S A 1 2 5 2 6 6 R3 R3 R3 (3) 给出输入符号串abab#的分析过程。 序号 状态栈 符号栈 输入缓冲区 动作 1 0 # abab# S3,移进 2 03 #a bab# S4,移进 3 034 #ab ab# R4,归约 A->b 4 036 #aA ab# R3,归约 A->aA 5 02 #A ab# S3,移进 6 023 #Aa b# S4,移进 7 0234 #Aab # R4,归约 A->b 8 0236 #AaA # R3,归约 A->aA 9 022 #AA # R2,归约 S->ε 10 0225 #AAS # R1,归约 S->AS 11 025 #AS # R1,归约 S->AS 12 01 #S # acc 成功

15.已知文法为: S->a|∧|(T) T->T,S|S

(1) 构造它的LR(0),LALR(1),LR(1)分析表; 扩展文法G’为: (0) S’->S (1) S->a (2) S->∧ (3) S->(T) (4) T->T,S (5) T->S

1)LR(0)项目集族及识别活前缀的DFA 如下图所示: S I0: I1: S’->.S S’->S. S->.a a I2: S->.∧ S->a. S->.(T) a a ( ( ∧ I3: I8: ∧ S->∧. T->T, .S I4: ∧ ( S->.a S->(.T) S->.∧ T->.T,S I5: T , S->.(T) T->.S S->(T.) S S->.a T->T.,S S->.∧ I9: ) S->.(T) LR(0)分析表: T->T, S. I7: S S->(T). I6: T->S.,


第7章作业参考答案.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:正确认识新疆历史民族宗教问题教案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: