收藏 分享(赏)

编译原理复习题--有答案版.doc

上传人:精品资料 文档编号:8125450 上传时间:2019-06-09 格式:DOC 页数:13 大小:216.07KB
下载 相关 举报
编译原理复习题--有答案版.doc_第1页
第1页 / 共13页
编译原理复习题--有答案版.doc_第2页
第2页 / 共13页
编译原理复习题--有答案版.doc_第3页
第3页 / 共13页
编译原理复习题--有答案版.doc_第4页
第4页 / 共13页
编译原理复习题--有答案版.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、1、 给出下面语言的相应文法 。 L1=a nbnci|n1,i0答案: S AB|B A a|aA B bBc|bc 2给出下面语言的相应文法L1=anbncmdm| m,n1,n 为奇数,m 为偶数。答案:文法 G(S):SAC AaaAbb/ab CccCcc/cc3、构造一个 DFA,它接受 =a,b上所有包含 ab 的字符串。(要求:先将正规式转化为 NFA,再将 NFA 确定化,最小化)(一) 相应的正规式为(a|b)*ab(a|b)*(二) 与此正规式对应的 NFA 为答案;在自己写的纸上4、对下面的文法 G:ETE E +E| TFT T T|FPF F *F| P(E)|a|

2、b|(1) 证明这个文法是 LL(1)的。考虑下列产生式:E -E|T -T|F -*F |P -(E) |a|bFIRST(+E)FIRST()=+=FIRST(+E)FOLLOW(E)=+#,)=FIRST(T)FIRST()=(,a,b,= FIRST(T)FOLLOW(T)=(,a,b,+,),#=FIRST(*F)FIRST()=*= FIRST(*F)FOLLOW(F)=*(,a,b,+,),#= FIRST(E)FIRST(a) FIRST(b) FIRST()= 所以,该文法式 LL(1)文法.计算这个文法的每个非终结符的 FIRST 和 FOLLOW。 (8 分)答案:FIR

3、ST(E)=(,a,b,FIRST(E)=+, FIRST(T)=(,a,b, FIRST(T)=(,a,b, FIRST(F)=(,a,b, FIRST(F)=*, FIRST(P)=(,a,b,FOLLOW(E)=#,) FOLLOW(E)=#,) FOLLOW(T)=+,),# FOLLOW(T)=+,),# FOLLOW(F)=(,a,b,+,),# FOLLOW(F)=(,a,b,+,),# FOLLOW(P)=*,(,a,b,+,),# (3)构造它的预测分析表。 (6 分)答案;在手机上写出表达式 a+b*(c-d)对应的逆波兰式和三元式序列。答案:逆波兰式:(abcd-*+)

4、三元式序列:OP ARG1 ARG2(1) - c d(2) * b (1)(3) + a (2) 给出下面语言的相应文法L1=anbnambm|n,m0给出下面语言的相应文法答案: SAB|A|B| A aAb|ab B aBb|abL2=anbnci|n1,i0给出下面语言的相应文法答案: S AB|B A a|aA B bBc|bc 17、对下面的文法 G:S S a T | a T | a TT a T | a(1) 消除该文法的左递归和提取左公因子;(2) 构造各非终结符的 FIRST 和 FOLLOW 集合;(3) 构造该文法的 LL(1)分析表,并判断该文法是否是 LL(1)的。

5、18、文法 G(S)及其 LR 分析表如下,请给出串 baba#的分析过程。(1) S DbB (2) D d (3) D (4) B a (5) B Bba (6) B LR 分析表ACTION GOTOb D a # S B D0 r3 s3 1 21 acc2 s43 r24 r6 S5 r6 65 r4 r46 s7 r17 S88 r5 r5答案: 步骤 状态 符号 输入串 0 0 # baba# 1 02 #D baba# 2 024 #Db aba# 3 0245 #Dba ba# 4 0246 #DbB ba# 5 02467 #DbBb a# 6 024678 #DbBba

6、# 7 0246 #DbB # 8 01 #S # acc 七、证明题1、证明下面文法是 LL(1)的但不是 SLR(1)的。SAaAb|BbBaAB首先该文法无左递归存在,没有公共左因子。 其次:对于 SAaAb|BbBa FIRST(AaAb)=a FIRST(BbBa)=b FIRST(AaAb)FIRST(BbBa)= 所以该文法是 LL(1)文法。(2)证明该文法不是 SLR 的。 文法的 LR(0)项目集规范族为: I0=S.S S.AaAb S.BbBa A. B. I1= S S. I2= SA.aAb I3= SB.bBa I4= SAa.Ab A. I5= SBb.Ba B

7、. I6= SAaA.b I7= SBbB.a I8= SAaAb. I9= SBbBa. 考察 I0: FOLLOW(A)=a,b FOLLOW(B)=a,b FOLLOW(A)FOLLOW(B)= a,b 产生规约-规约冲突。 所以该文法不是 SLR(1)文法。2、证明下面文法是 SLR(1)但不是 LR(0)的。SAAAb|bBaBaAc|a|aAb解:文法 GS: 0:SA 1:AAb 2:AbBa 3:BaAc 4:Ba 5:BaAb状态 5 存在“归约移进”冲突,状态 9 存在“归约归约”冲突,因此该文法不是 LR(0)文法。 状态 5: FOLLOW(B)a ,因此,FOLLOW

8、(B)b 状态 9: FOLLOW(B)a ,FOLLOW(A)#,b,c ,因此 FOLLOW(B)FOLLOW(A) 状态 5 和状态 9 的冲突均可用 SLR(1)方法解决,构造 SLR(1)分析表该 SLR(1)分析表无重定义,因此该文法是 SLR(1)文法,不是 LR(0)文法。八、语义分析题1、将语句if (A0) then while (C0) do C:=C-D翻译成四元式答案:100 (j, B, 0, 104)103 (j, -, -, 109)104 (j, C, 0, 106)105 (j, -, -, 109)106 (-, C, D, T1)107 (:=, T1,

9、 -, C)108 (j, -, -, 104)1092、写出下面语句经语法制导翻译后所生成的四元式代码序列。 if xc do c:=c+1 else x:=x+5答案:假设初始为 100,则四元式代码序列为100 if xc goto 104103 goto 109104 M:=C+1105 C:=M106 goto 102107 N:=X+5108 X:=N1097、设有文法:EE+T|TTT*F|FF(E)|i(1) 证明 E+T*F 是它的一个句型。 (3 分): *(2) 给出 E+T*F 的所有短语,直接短语和句柄。(4 分)短语: E+T*F, T*F, 直接短语: T*F 句

10、柄: T*F(3) 给出句子+*的最右推导。(4 分)没有 答案10、11、构造下面正规式相应的 DFA1(0|1)*101答案: I I0 I1 X A,B,C A,B,C B,C B,C,D B,C B,C B,C,D B,C,D B,C,E B,C,D B,C,E B,C B,C,D,y B,C,D,y B,C,E B,C,D14、对下面的文法 G:Expr- ExprExpr(Expr)|Var ExprTailExprTail- Expr|Varid VarTail VarTail(Expr) |(1)构造 LL(1)分析表。 (12 分)(2)给出对句子 idid(id)的分析过程

11、。 (8 分)答案: (1)FIRST(Expr)=_ , ( , id FIRST(ExprTail)=_ , FIRST(Var)=id FIRST(VarTail)= ( , FOLLOW(Expr)=# , ) FOLLOW(ExprTail) =# , ) FOLLOW(Var) =_ , # , ) FOLLOW(VarTail) =_ , # , ) (2) 给出对句子 idid(id)的分析过程。 (步骤 符号栈 输入串 所用产生式 0 Expr id_ _id(id) 1 # ExprTail Var id_ _id(id) ExprVar ExprTail 2 # Expr

12、Tail VarTail id id_ _id(id) Varid VarTail 3 # ExprTail VarTail _ _id(id) 4 # ExprTail _ _id(id) VarTail5 # Expr_ _ _id(id) ExprTail_ Expr6 # Expr _id(id) 7 # Expr_ _id(id) Expr_Expr 8 # Expr id(id)9 # ExprTail Var id(id) ExprVar ExprTail 10 # ExprTail VarTail id id(id) Varid VarTail 11 # ExprTail Va

13、rTail (id) 12 # ExprTail )Expr( (id) VarTail(Expr) 13 # ExprTail )Expr (id) 14 # ExprTail ) )Expr( (id) Expr(Expr) 15 # ExprTail ) )Expr id) 16 # ExprTail ) ) ExprTail Var id) ExpVarExprTai17 # ExprTail ) ) ExprTail VarTail id id) Varid VarTail 18 # ExprTail ) ) ExprTail VarTail ) 19 # ExprTail ) ) ExprTail ) VarTail 20 # ExprTail ) ) ) ExprTail 21 # ExprTail ) ) 22 # ExprTail # ExprTail 23 # # 分析成功

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报