- 1、本文档共22页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理 作业参考答案
编译原理 作业参考答案
PAGE
PAGE #
1、解释下列各词
源语言:编写源程序的语言(基本符号,关键字) ,各种程序设计语言都可以作为源语言。
源程序:用接近自然语言(数学语言)的源语言(基本符号,关键字)编写的程序,它是翻译 程序处理的对象。
目标程序:目标程序是源程序经过翻译程序加工最后得到的程序。目标程序
(结果程序)一般可由计算机直接执行。
低级语言:机器语言和汇编语言。
能够把某一种语言程序(源语言程序)改变成另一种语言程序(目,后者与前者在逻辑上是等价的。其中包括:编译程序,解释程序,汇编程序。 把输入的源程序翻译成等价的目标程序(汇编语言或机器语言) ,
能够把某一种语言程序(源语言程序)改变成另一种语言程序(目
,后者与前者在逻辑上是等价的。其中包括:编译程序,解释程序,汇编程序。 把输入的源程序翻译成等价的目标程序(汇编语言或机器语言) ,
翻译程序: 标语言程序)
编译程序:
然后再执行目标程序(先编译后执行) ,执行翻译工作的程序称为编译程序。
解释程序:以该语言写的源程序作为输入,但不产生目标程序。按源程序中语句动态顺序逐句 的边解释边执行的过程,完成翻译工作的程序称为解释程序。
2、什么叫“遍”?
指对源程序或源程序的中间形式(如单词,中间代码)从头到尾扫描一次,并作相应的加工处 理,称为一遍。
3、 简述编译程序的基本过程的任务。
编译程序的工作是指从输入源程序开始到输出目标程序为止的整个过程,整个过程可以划分 个阶段。
词法分析:输入源程序,进行词法分析,输出单词符号。
语法分析:在词法分析的基础上,根据语言的语法规则把单词符号串分解成各类语法单位,并 判断输入串是否构成语法正确的“程序” 。
中间代码生成:按照语义规则把语法分析器归约(或推导)出的语法单位翻译成一定形式的中 间代码。
优化:对中间代码进行优化处理。
目标代码生成:把中间代码翻译成目标语言程序。
4、 编译程序与解释程序的区别?
编译程序生成目标程序后,再执行目标程序;然而解释程序不生成目标程序,边解释边执行。
5、有人认为编译程序的五个组成部分缺一不可,这种看法正确吗?
编译程序的5个阶段中,词法分析,语法分析,语义分析和代码生成生成是必须完成的。而中 间代码生成和代码优化并不是必不可少的。优化的目的是为了提高目标程序的质量,没有这一部分 工作,仍然能够得到目标代码。
6、编译程序的分类
目前基本分为:诊断编译程序,优化编译程序,交叉编译程序,可变目标编译程序。
第2章高级语言及其语法描述
1( P36)
令文法为
N T D |ND
D T 0 |1 |2]…]9
文法描述的语言 L( G是什么?
给出句子34, 568的最左推导和最右推导。
(1)
(2)
答: (1)
L ( G) ={a]a为可带前导0的正整数} (G) ={ (0]1 hL.I 9) + } (G) ={ab为数字串}
或L或L
(2)最左推导:
最右推导:
出 ND 0^3^34
N耳 ND* DD— 5D^ 56^ 568
缶 D缶 34
ND 畑 ND乞N6归D6旨568
0开头。2* .写出一个文法,使其语言是奇数集,且每个奇数是不以
0开头。
答:
CAB|B(考虑了正负号)
CAB|B
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | AA | A0 | 1|3|5|7|9
或:
+|-| E
(未考虑正负号)
B | AB
AD | N
或:
0 | N
(未考虑正负号)
T C | ABC
T 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
2.(E(P36, 8 )令文法为
2.(
E
T T E+Te-T T T F T*F ]t/F F T (E) |i
给出该文法的 Vn、Vt和So
给出i+i*i , i* (i+i )的最左推导和最右推导。
给出i+i+i , i+i*i 的语法树。
答: (1)
Vn = { E, T, F }
Vt = { +, -, *, /, (, ), i }
3.
答:
S = E
(2)
最左推导
吕 E+JT+J F+T= i+ J i+ T*F= i+ F*F= i+i* J i+i*i JT=T*F=F*F=i*Ji*( E)= i*( E+T)=i*( T+T)=i*( F+T)= i*(i+ T) = i*(i+ F)=i*(i+i)
E+T= E+T*吕 E+T*i = E+F*i = E+i*i = T+i*i = F+i*i = i+i*i ^T=T*F=T*( E) = T*(E+T) = T*(E+F)=T*( E+i) = T*(T+i) = T*( F+i) = T*(i+i) =
文档评论(0)