第五章 编译原理课后习题答案.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第一章 1.典型的编译程序在逻辑功能上由哪几部分组成? 答:编译程序主要由以下几个部分组成:词法分析、语法分析、语义分析、中间代码生成、中间代码优化、目标代码生成、错误处理、表格管理。 2. 实现编译程序的主要方法有哪些? 答:主要有:转换法、移植法、自展法、自动生成法。 3. 将用户使用高级语言编写的程序翻译为可直接执行的机器语言程序有哪几种主要的方式? 答:编译法、解释法。 4. 编译方式和解释方式的根本区别是什么? 答:编译方式:是将源程序经编译得到可执行文件后,就可脱离源程序和编译程序单独执行,所以编译方式的效率高,执行速度快; 解释方式:在执行时,必须源程序和解释程序同时参与才能运行,其不产生可执行程序文件,效率低,执行速度慢。 第二章 乔姆斯基文法体系中将文法分为哪几类?文法的分类同程序设计语言的设计与实现关系如何? 答:1)0型文法、1型文法、2型文法、3型文法。 2) 2. 写一个文法,使其语言是偶整数的集合,每个偶整数不以0为前导。 答: Z(SME | B S(1|2|3|4|5|6|7|8|9 M(( | D | MD D(0|S B(2|4|6|8 E(0|B 3. 设文法G为: N( D|ND D( 0|1|2|3|4|5|6|7|8|9 请给出句子123、301和75431的最右推导和最左推导。 答:N(ND(N3(ND3(N23(D23(123 N(ND(NDD(DDD(1DD(12D(123 N(ND(N1(ND1(N01(D01(301 N(ND(NDD(DDD(3DD(30D(301 N(ND(N1(ND1(N31(ND31(N431(ND431(N5431(D5431(75431 N(ND(NDD(NDDD(NDDDD(DDDDD(7DDDD(75DDD(754DD(7543D(75431 4. 证明文法 S(iSeS|iS| i是二义性文法。 答:对于句型iiSeS存在两个不同的最左推导: S(iSeS(iiSes S(iS(iiSeS 所以该文法是二义性文法。 5. 给出描述下面语言的上下文无关文法。 (1) L1={anbnci |n=1,i=0 } (2) L2={aibj|j=i=1} (3) L3={anbmcmdn |m,n=0} 答: S(AB A(aAb | ab B(cB | ( S(ASb |ab A(a | ( S(aSd | A | ( A(bAc | ( 6. 设计一个最简的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*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的前面(可以有间隔),则答案为: 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|() 第三章 1. 词法分析器的功能是什么? 答:读源程序的字符序列,逐个拼出单词,并构造相应的内部表示TOKEN;同时检查源程序中的词法错误。 试分析分隔符(空格、跳格及回车等)对词法分析的影响。 答:空格、跳格、回车等分隔符号对词法分析不起作用,可以删除。但是回车符号可以用于错误定位,所以在删除回车符号前需要统计回车的个数。 给出识别C语言全部实型常数的自动机。 答

文档评论(0)

daijun + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档