计算机编译原理课后习题及答案详细解析(7)

2019-05-27 17:23

因为I5中:FOLLOW(A)∩{a,b}≠Ф ,I7中:FOLLOW(B)∩{a,b}≠Ф 所以,该文法不是SLR(1)文法。 或者:

从分析表中可看出存在歧义,所以该文法不是SLR(1)文法。 (4)对于输入串bab,SLR分析器所作出的动作如下:

步骤 状态栈 (1) 0 (2) 03 (3) 01 (4) 014 (5) 015 (6) 02 (7) 0A2b3 (8) 027 (9) 01

(在第5个动作产生歧义)

(b)LR(1)项目集族为:

I0 : S’ ?·S, # S ?·AS, # | a | b S ?·SA, a | b

I1 : S’ ? S· A ? S·A, a | b

# #b #S #Sa #SA #A #Ab #AS #S 符号栈 当前字符 b a a b b b # # # 剩余字符串 ab# b# b# # # 动作 移进 归约 S?b 移进 归约 A?a 移进 # 归约 A?SA 归约 S?b 归约S?AS 接受 S ?·b, # | a | b A ?·a, a | b

S ?·AS, a | b

A ?·a, a | b S ?·b, a | b

I2 : S ?A·S, # | a | b I3 : S ? b·, # | a | b S ?·b, # | a | b S ?·AS, # | a | b I4 : A ? a·, a | b A ?·SA, a | b A ?·a, a | b

I5 : A ? SA·, a | b I6 : A ? S·

S ? A·S, a | b A ?·SA, a | b

S ? ·AS, a | b A ?·a, a | b S ?·b, a | b S ?·AS, a | b A ?·SA, a | b S ?·b, a | b A ?·a, a | b I7 : S ? AS·, a | b A ? S·A, a | b

A ?·SA, a | b A ?·a, a | b S ?·AS, a | b S ?·b, a | b

∵I6状态集中存在“归约――移进”冲突,故无法构造LR(1)分析表,因而也就无法构造LALR分析表。

4、对下面的文法:S->UTa|Tb T->S|Sc|d U->US|e

判断是否为LR(0),SLR(1),LALR(1),LR(1),说明理由,并构造相应的分析表。 [答案](1)拓广文法: (0)S’->S (1)S->UTa (2)S->Tb (3)T->S (4)T->Sc (5)T->d (6)U->US (7)U->e (2)构造识别

LR(0)项目的DFA如下:

因为I1、I8

中存在冲突,所以该文法不是LR(0)文法。

因为FOLLOW(S)={#,c,a,b,d,e},FOLLOW(T)={a,b},FOLLOW(U)={d,e} I1中FOLLOW(T)∩{c}=Ф

I8中FOLLOW(U)∩{c}=Ф,FOLLOW(T)∩{c}=Ф, FOLLOW(T)∩FOLLOW(U)=Ф

I1、I8中冲突解决,所以该文法是SLR(1)文法。

状态 0 1 2 3 4 5 6 7 8 9 10

ACTION a b r3 r3 S9 r5 r5 r4 r4 S10 S9 r3 r3 r2 r2 r1 r1 c S6 S6 r2 r1 d S5 S5 r7 r6 r2 r1 e S4 S4 r7 r6 r2 r1 # acc r2 r1 GOTO S 1 8 T 3 7 U 2 2

S T U

构造识别LR(1)项目的DFA如下:

FIRST e,d e,d e FOLLOW a,b ,d,e,#,c a,b d,e

因为不存在冲突,所以该文法是LR(1)文法。

其中I2、I9可合并,I11、I13可合并,I5、I10可合并,I6、I14可合并, I12、I16可合并,I7、I15可合并,合并后无冲突,所以

状态 0 1 2 ACTION a b r3 C S6 d S5 S10 e S4 S4 # acc GOTO S 1 8 T 3 7 U 2 9 3 4 5 6 7 8 9 10 11 12 13 14 15 16 S12 r3 r5 r4 S16 S11 r5 r4 S13 r3 r5 r2 r1 r4 S13 S14 r2 r1 r7 r6 S10 r2 r1 r7 r6 S4 r2 r1 r2 r1 8 15 9 状态 0 1 2,9 3 4 5,10 6,14 7,15 8 11,13 12,16 a r5 r4 S12,16 r3 b r3 S11,13 r5 r4 S11,13 r3 r2 r1 ACTION c d S5,10 S6 S5,10 r7 S6,14 r6 r2 r2 r1 r1 e S4 S4 r7 r6 r2 r1 # acc r2 r1 S 1 8 GOTO T U 3 2,9 7,15 2,9

1、对于输入的表达式(4*7+1)*2,根据下表的语法制导定义建立一棵带注释的分析树。 val:表示非终结符的整数值,综合属性,lexval 是单词 digit 的属性

语法制导定义

产生式 L ?E E ?E语义规则 print(E.val) E.val:=E.val+T.val E.val:=T.val T.val:=T.val*F.val T.val:=F.val F.val:=E.val F.val:=digit.lexval 11+T E ?T 1T ?T*F T ?F F ?(E) F ?digit 1


计算机编译原理课后习题及答案详细解析(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:微生物大纲

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

马上注册会员

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