编译原理课后习题答案.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

PAGE

PAGE28

第一章

典型的编译程序在逻辑功能上由哪几部分组成?

答:编译程序主要由以下几个部分组成:词法分析、语法分析、语义分析、中间代码生成、中间代码优化、目标代码生成、错误处理、表格管理。

实现编译程序的主要方法有哪些?

答:主要有:转换法、移植法、自展法、自动生成法。

将用户使用高级语言编写的程序翻译为可直接执行的机器语言程序有哪几种主要的方式?

答:编译法、解释法。

编译方式和解释方式的根本区别是什么?

答:编译方式:是将源程序经编译得到可执行文件后,就可脱离源程序和编译程序单独执行,所以编译方式的效率高,执行速度快;

解释方式:在执行时,必须源程序和解释程序同时参与才能运行,其不产生可执行程序文件,效率低,执行速度慢。

第二章

第二章

乔姆斯基文法体系中将文法分为哪几类?文法的分类同程序设计语言的设计与实现关系如何?

答:1)0型文法、1型文法、2型文法、3型文法。

2)

写一个文法,使其语言是偶整数的集合,每个偶整数不以0为前导。答:

Z?SME|B

S?1|2|3|4|5|6|7|8|9M??|D|MD

D?0|SB?2|4|6|8E?0|B

设文法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?123N?ND?N1?ND1?N01?D01?301N?ND?NDD?DDD?3DD?30D?301N?ND?N1?ND1?N31?ND31?N431?ND431?N5431?D5431?75431

N?ND?NDD?NDDD?NDDDD?DDDDD?7DDDD?75DDD?754DD?7543D?75431

证明文法S?iSeS|iS|i是二义性文法。

答:对于句型iiSeS存在两个不同的最左推导:

S?iSeS?iiSesS?iS?iiSeS

所以该文法是二义性文法。

给出描述下面语言的上下文无关文法。

(1)L1={anbnci|n=1,i=0}

(2)L2={aibj|j=i=1}

(3)L3={anbmcmdn|m,n=0}

答:

S?AB

A?aAb|abB?cB|?

S?ASb|ab

A?a|?

S?aSd|A|?

A?bAc|?

设计一个最简的DFAM,使其能够识别所有的被3整除的无符号十进制整数。答:

2|5|8

0|3|6|9

0

1|4|7

0|3|6|9

1 1|4|7 2

2|5|8 2|5|8

1|4|7

设计一个DFA,使其能够接受被4整除的二进制数。答:

0|3|6|9

01

0

1

1

0

1

1

0

2

0

3

1

写出表达下列各项的正则表达式。

二进制数且为5的倍数。

Σ={a,b,c},第一个a位于第一个b之前的字符串。

(4)Σ={0,1},不包含

(4)Σ={0,1},不包含11子串的字符串。

答:

(1)

可以先画出相应的有限自动机:

1

0

0

1

A

1

B

0

C

1

D

0

E

1

0

添加新的开始状态S和终止状态T:

1

0

S ? A 1 B

? 1

0

0 C 1

1

D 0 E

0

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|?)

第三章

第三章

词法分析器的功能是什么?

答:读源程序的字符序列,逐个拼出单词,并构造相应的内部表

文档评论(0)

dqy118 + 关注
官方认证
内容提供者

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

认证主体上海海滋实业有限公司
IP属地湖北
统一社会信用代码/组织机构代码
91310115MA7DL1JF2N

1亿VIP精品文档

相关文档