没有合适的资源?快使用搜索试试~ 我知道了~
编译原理作业参考答案.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 36 浏览量
2021-10-11
22:57:59
上传
评论
收藏 651KB DOC 举报
温馨提示
试读
18页
编译原理作业参考答案.doc
资源推荐
资源详情
资源评论
第 1 章 引 言
1、解释以下各词
源语言:编写源程序的语言〔根本符号,关键字〕,各种程序设计语言都可以作为源语言。
源程序: 用接近自然语言〔数学语言〕的源语言〔根本符号,关键字〕编写的程序,它是翻译
程序处理的对象。
目标程序: 目标程序是源程序经过翻译程序加工最后得到的程序。目标程序
〔结果程序〕一般可由计算机直接执行。
低级语言:机器语言和汇编语言。
高级语言:是人们根据描述实际问题的需要而设计的一个记号系统。如同自然语言〔接近数学
语言和工程语言〕一样,语言的根本单位是语句,由符号组和一组用来组织它们成为有确定意义的
组合规那么。
翻译程序: 能够把某一种语言程序〔源语言程序〕改变成另一种语言程序〔目
标语言程序〕,后者与前者在逻辑上是等价的。其中包括:编译程序,解释程序,汇编程序。
编译程序:把输入的源程序翻译成等价的目标程序〔汇编语言或机器语言〕,
然后再执行目标程序〔先编译后执行〕,执行翻译工作的程序称为编译程序。
解释程序: 以该语言写的源程序作为输入,但不产生目标程序。按源程序中语句动态顺序逐句
的边解释边执行的过程,完成翻译工作的程序称为解释程序。
2、什么叫“遍〞?
指对源程序或源程序的中间形式〔如单词,中间代码〕从头到尾扫描一次,并作相应的加工处
理,称为一遍。
3、简述编译程序的根本过程的任务。
编译程序的工作是指从输入源程序开始到输出目标程序为止的整个过程,整个过程可以划分 5
个阶段。
词法分析:输入源程序,进展词法分析,输出单词符号。
语法分析:在词法分析的根底上,根据语言的语法规那么把单词符号串分解成各类语法单位 ,
并判断输入串是否构成语确的“程序〞。
中间代码生成:按照语义规那么把语法分析器归约〔或推导〕出的语法单位翻译成一定形式
的中间代码。
优化:对中间代码进展优化处理。
目标代码生成:把中间代码翻译成目标语言程序。
4、编译程序与解释程序的区别?
编译程序生成目标程序后,再执行目标程序;然而解释程序不生成目标程序,边解释边执行。
5、有人认为编译程序的五个组成局部缺一不可,这种看确吗?
编译程序的 5 个阶段中,词法分析,语法分析,语义分析和代码生成生成是必须完成的。而
中间代码生成和代码优化并不是必不可少的。优化的目的是为了提高目标程序的质量,没有这一局
部工作,仍然能够得到目标代码。
6、编译程序的分类
目前根本分为:诊断编译程序,优化编译程序,交叉编译程序,可变目标编译程序。
1 / 18
第 2 章 高级语言与其语法描述
1〔P36〕令文法为
N DND
D0129
〔1〕文法描述的语言 L〔G〕是什么?
〔2〕给出句子 34,568 的最左推导和最右推导。
答:〔1〕
L〔G〕={为可带前导 0 的正整数}
或 L〔G〕={〔0129〕
+
}
或 L〔G〕={为数字串}
〔2〕
最左推导:NNDDD3D34
NNDNDDDDD5DD56D568
最右推导:NNDN4D434
NNDN8ND8N68D68568
2*.写出一个文法,使其语言是奇数集,且每个奇数是不以 0 开头。
答:
S CAB|B 〔考虑了正负号〕
A 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | AA | A0 |
B 1|3|5|7|9
C +|-|
或:〔未考虑正负号〕
S B | AB
B 1 | 3 | 5 | 7 | 9
A AD | N
N 2 | 4 | 6 | 8 | B
D 0 | N
或:〔未考虑正负号〕
S C | ABC
C 1 | 3 | 5 | 7 | 9
A 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
B BA | B0 |
2.〔P36, 8〕令文法为
E TE+TE-T
T FT*FT/F
F〔E〕i
〔1〕给出该文法的 V
N
、V
T
和 S。
〔2〕给出 i+i*i,i*〔i+i〕的最左推导和最右推导。
〔3〕给出 i+i+i,i+i*i 的语法树。
答:〔1〕
V
N
= { E, T, F }
2 / 18
V
T
= { +, -, *, /, (, ), i }
S = E
〔2〕
最左推导 EE+TT+T F+Ti+Ti+T*Fi+F*Fi+i*Fi+i*i
ETT*FF*Fi*Fi*(E)i*(E+T)i*(T+T)i*(F+T)i*(i+T)
i*(i+F)i*(i+i)
最右推导 EE+TE+T*FE+T*iE+F*iE+i*iT+i*iF+i*ii+i*i
ETT*FT*(E)T*(E+T)T*(E+F)T*(E+i)T*(T+i)T*(F+i)
T*(i+i)F*(i+i)i*(i+i)
⑵构造语法树
E 最左推导构造语法树
E + T
E + T i
T i
i
3.〔P36, 9〕证明下面的文法是二义的:
S iSeS | iS i
答:对于句子 iiiei 有两棵不同的语法树。因此该文法是二义的。
S iSeS iiSeS iiieS iiiei
S iS iiSeS iiieS iiiei
第 3 章 词法分析
1.设 M=〔{x,y},{a,b},,x,{y}〕为一个非确定有限自动机 NFA M,其中
定义如下:
〔x,a〕={x,y}
〔x,b〕={y}
〔y,a〕=
〔y,b〕={x,y}
试构造其相应的最小化确实定有限自动机 DFA M’。
3 / 18
答:由定义可知〔x,a〕,〔y,b〕均为多值函数,所以是一个非确定有限自动
机。
〔1〕根据函数值,先构造 NFA M
〔2〕确定化:
① 构造 DFA M’的转换矩阵:
I I
a
I
b
{x} ①
{x,y} ②
{y} ③
{x,y} ② {x,y} ② {x,y} ②
{y} ③
{x,y} ②
② 确定 DFA M’的初始状态和终态:
〔a〕转换矩阵中 I 列的第一个状态①为 DFA M’的初始状态结点。
〔b〕含有 y 状态的子集均为 DFA M’的终态结点(②、③为终态结点)。
③ 根据 DFA M’的转换矩阵画出对应的状态转换图:
〔3〕最小化:
① 首先将其划分成终态集{2,3}和非终态集{1}
②{2,3}a={2}{2,3}, {2,3}b={2}{2,3}
因此{2,3}已是不可再区分的,所以该 DFA M’已是最小化的。
2. 〔P64,7(1)〕构造正规式 1(0 1)
*
101 相应的 DFA M。
答:〔1〕构造 NFA M。
1〔01〕
*
101
1 〔01〕
*
1 0 1
1 1 0 1
01
0
1 1 0 1
1
〔2〕构造转换矩阵
I I
0
I
1
{X} ① {1, 2, 3} ②
{1, 2, 3} ② {2, 3} ③ {2, 3, 4} ④
{2, 3} ③ {2, 3} ③ {2, 3, 4}④
{2, 3, 4} ④ {2, 3, 5} ⑤ {2, 3, 4}④
{2, 3, 5}⑤ {2, 3} ③ {2, 3, 4, Y}⑥
{2, 3, 4, Y } ⑥ {2, 3, 5} ⑤ {2, 3, 4}④
4 / 18
X
Y
X 3
2
1 542
Y
X 1 2 3 4 5
Y
X 3 51 4
Y
剩余17页未读,继续阅读
资源评论
huayuya123
- 粉丝: 26
- 资源: 31万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 连接Redis服务器 在使用Redis之前,首先需要使用redis-cli工具连接到Redis服务器 redis-cli是Re
- 连接Redis服务器 在使用Redis之前,首先需要使用redis-cli工具连接到Redis服务器 redis-cli是Red
- 连接Redis服务器 在使用Redis之前,首先需要使用redis-cli工具连接到Redis服务器 redis-cli是Red
- redis命令实践 详细教程
- redis命令实践 详细教程
- redis命令实践 详细教程
- redis命令实践 详细教程
- redis命令实践 详细教程
- redis命令实践 详细教程
- cadvisor.tar 容器镜像,可以监控容器
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功