编译原理课后习题答案

上传人:hs****ma 文档编号:507382357 上传时间:2023-05-21 格式:DOC 页数:28 大小:411KB
返回 下载 相关 举报
编译原理课后习题答案_第1页
第1页 / 共28页
编译原理课后习题答案_第2页
第2页 / 共28页
编译原理课后习题答案_第3页
第3页 / 共28页
编译原理课后习题答案_第4页
第4页 / 共28页
编译原理课后习题答案_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《编译原理课后习题答案》由会员分享,可在线阅读,更多相关《编译原理课后习题答案(28页珍藏版)》请在金锄头文库上搜索。

1、第一章1典型的编译程序在逻辑功能上由哪几部分组成?答:编译程序主要由以下几个部分组成:词法分析、语法分析、语义分析、中间代码生成、中间代码优化、目标代码生成、错误处理、表格管理。2. 实现编译程序的主要方法有哪些?答:主要有:转换法、移植法、自展法、自动生成法。3. 将用户使用高级语言编写的程序翻译为可直接执行的机器语言程序有哪几种主要的方式?答:编译法、解释法。4. 编译方式和解释方式的根本区别是什么?答:编译方式:是将源程序经编译得到可执行文件后,就可脱离源程序和编译程序单独执行,所以编译方式的效率高,执行速度快;解释方式:在执行时,必须源程序和解释程序同时参与才能运行,其不产生可执行程序

2、文件,效率低,执行速度慢。第二章1. 乔姆斯基文法体系中将文法分为哪几类?文法的分类同程序设计语言的设计与实现关系如何?答:1)0型文法、1型文法、2型文法、3型文法。2)2. 写一个文法,使其语言是偶整数的集合,每个偶整数不以0为前导。答:ZSME | BS1|2|3|4|5|6|7|8|9Me | D | MDD0|SB2|4|6|8E0|B3. 设文法G为:N D|NDD 0|1|2|3|4|5|6|7|8|9请给出句子123、301和75431的最右推导和最左推导。答:NNDN3ND3N23D23123NNDNDDDDD1DD12D123NNDN1ND1N01D01301NNDNDDD

3、DD3DD30D301NNDN1ND1N31ND31N431ND431N5431D543175431NNDNDDNDDDNDDDDDDDDD7DDDD75DDD754DD7543D754314. 证明文法 SiSeS|iS| i是二义性文法。答:对于句型iiSeS存在两个不同的最左推导:SiSeSiiSesSiSiiSeS所以该文法是二义性文法。5. 给出描述下面语言的上下文无关文法。(1) L1=anbnci |n=1,i=0 (2) L2=aibj|j=i=1(3) L3=anbmcmdn |m,n=0答:(1) SABAaAb | abBcB | e(2) SASb |abAa | e(

4、3) SaSd | A | eAbAc | e6. 设计一个最简的DFA M,使其能够识别所有的被3整除的无符号十进制整数。答:7. 设计一个DFA,使其能够接受被4整除的二进制数。答:8. 写出表达下列各项的正则表达式。(1)二进制数且为5的倍数。(2)=a,b,c,第一个a位于第一个b之前的字符串。(3)=a,b,c,包含偶数个a的字符串。(4)=0,1,不包含11子串的字符串。答:(1)可以先画出相应的有限自动机:添加新的开始状态S和终止状态T:根据以上自动机,列出以下方程: S=A A=0A+1B+T B=0C+1D C=0E+1A D=0B+1C E=0D+1E解以上方程组: E=1

5、*0D A=0*1B+0*T代入 C=01*0D+1A代入 C=01*00B+01*01C+1A C=xB+yA 其中x=(01*01)*01*00 y=(01*01)*1代入 B=0C+10B+11C B=(0|11)C+10B B=(10)*(0|11)C将C=xB+yA代入上式 B=uB+vA B=u*vA其中u=(10)*(0|11)x v=(10)*(0|11)y将B=u*vA代入 A=0*1u*vA+0*T A=(0*1u*v)*0*T将A代入 S=(0*1u*v)*0*T串(0*1u*v)*0*即为所求。(2)该题目理解为:至少有一个a和一个b,且a出现在b的前面(可以有间隔),

6、则答案为:c*a(a|c)*b(a|b|c)*(3)(b|c)*a(b|c)*a)*(b|c)*(a(b|c)*a | b | c)*(4)(0|10)*(1|e)第三章1. 词法分析器的功能是什么?答:读源程序的字符序列,逐个拼出单词,并构造相应的内部表示TOKEN;同时检查源程序中的词法错误。2. 试分析分隔符(空格、跳格及回车等)对词法分析的影响。答:空格、跳格、回车等分隔符号对词法分析不起作用,可以删除。但是回车符号可以用于错误定位,所以在删除回车符号前需要统计回车的个数。3. 给出识别C语言全部实型常数的自动机。答:(+|-|e)(1-90-9*|0)(.0-90-9*|e) (E(

7、+|-|e)0-90-9*)4. 写出识别C语言中所有单词的LEX程序。答:L=A-Z | a-zD=0-9D1=1-9%(L|_)(L|D|_)*return (1);D1D*return (2);+return (3);第四章1. 设有如下文法GS:SaABbcd | eAASd | eBSAh | eC | eCSf | Cg | e(1) 求每个产生式的Predict集。(2) 该文法是否为LL(1)文法?为什么?答:(1)Predict(SaABbcd)=aPredict(S e)=#,d,f,a,h Predict(AASd)=a,dPredict(A e)=h,a,d,b,ePr

8、edict(BSAh)=a,d,hPredict(B eC)=ePredict(B e)=bPredict(CSf)=a,fPredict(C Cg)=a,f,gPredict(C e)=g,b(2)由于Predict(AASd) Predict(A e),所以该文法不是LL(1)文法。2. 下列描述括号匹配的文法中,哪些是LL(1)文法?(1)S(SS | eS ) | e(2)S(S)S | e(3)SS(S)S | e(4)S(S | SS(S) | e答:(1)不是,(2)是,(3)不是,(4)不是3. 已知文法GE:EE+T | TTT*F | FFi | (E)请按递归下降法构造该

9、文法的语法分析程序。答:求产生式的predict集合:predict(EE+T)=i,(predict(ET)=i,(predict(TT*F)=i,(predict(TF)=i,(由于文法中非终极符号E和T对应的产生式的predict集合的交集都不为空,所以该文法不满足自顶向下分析的条件,现对文法进行等价变换得到如下文法:ETEE+TE | eTFTT*FT | eFiF(E)求新文法的predict集合:Predict(ETE)=(,iPredict(E+TE)=+Predict(Ee)=#,)Predict(TFT)=i,(Predict(T*FT)=*Predict(Te)=+,),#

10、Predict(Fi)=iPredict(F(E)=(由于以上文法中任意非终极符号对应的产生式的predict集合的交集都为空,所以满足自顶向下分析的条件,所以可以写出如下的递归下降语法分析伪代码:Void E() if(token(,i) T();E(); else Error();void E() if(token+) Match(+);T();E(); else if(token#,) ; else Error();void T() if(tokeni,() F();T(); else Error();void T() if(token*) Match(*);F();T(); else

11、if(token+,),#) ; else Error();void F() if(tokeni) Match(i); else if(token() Match();E();Match(); else Error();4. 构造一个LL(1)文法G,它能识别语言L:L=w | w为字母表S上不包括两个相邻的1的非空串,其中S=0,1。并证明你所构造的文法是LL(1)文法。答:A0E | 1FB0E | 1FC0EEB | eFC | ePredict(A0E)=0Predict(A1F)=1Predict(B0E)=0Predict(B1F)=1Predict(EB)=0,1Predict(

12、Ee)=#Predict(FC)=0Predict(Fe)=#对任意非终极符号对应的产生式的predict集合的交集都为空,所以该文法是LL(1)文法。5. 已知文法GA为:AaABe | aBBb | d(1) 试给出与GA等价的LL(1)文法GA。(2) 构造GA的LL(1)分析表并给出输入串aade#的分析过程。答:(1)所求GA为:AaA(1)AABe (2)A e(3)BdB(4)BbB (5)B e(6)Predict(AaA)=aPredict(AABe)=aPredict(Ae)=#,dPredict(BdB)=dPredict(BbB)=bPredict(Be)=e对任意非终极符号对应的产生式的predict集合的交集都为空,所以该文法是LL(1)文法。(3) 分析表如下:abde#A(1)A(2)(3)(3)B(4)B(5)(6)aade#的分析过程如下分析栈输入流动作A#aade#替换(1)aA #aade#匹配A #ade#替换(2)ABe#ade#替换(1)aABe#ade#匹配ABe#de#替换(3)Be#de#替换(4)dBe#de#匹配Be#e#替换e#e#匹配#成功第五章(这章答案是错的)1

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号