编译原理作业参考问题详解.docx
- 文档编号:3107120
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:28
- 大小:181.07KB
编译原理作业参考问题详解.docx
《编译原理作业参考问题详解.docx》由会员分享,可在线阅读,更多相关《编译原理作业参考问题详解.docx(28页珍藏版)》请在冰豆网上搜索。
编译原理作业参考问题详解
第1章引言
1、解释下列各词
源语言:
编写源程序的语言(基本符号,关键字),各种程序设计语言都可以作为源语言。
源程序:
用接近自然语言(数学语言)的源语言(基本符号,关键字)编写的程序,它是翻译程序处理的对象。
目标程序:
目标程序是源程序经过翻译程序加工最后得到的程序。
目标程序
(结果程序)一般可由计算机直接执行。
低级语言:
机器语言和汇编语言。
高级语言:
是人们根据描述实际问题的需要而设计的一个记号系统。
如同自然语言(接近数学语言和工程语言)一样,语言的基本单位是语句,由符号组和一组用来组织它们成为有确定意义的组合规则。
翻译程序:
能够把某一种语言程序(源语言程序)改变成另一种语言程序(目
标语言程序),后者与前者在逻辑上是等价的。
其中包括:
编译程序,解释程序,汇编程序。
编译程序:
把输入的源程序翻译成等价的目标程序(汇编语言或机器语言),
然后再执行目标程序(先编译后执行),执行翻译工作的程序称为编译程序。
解释程序:
以该语言写的源程序作为输入,但不产生目标程序。
按源程序中语句动态顺序逐句的边解释边执行的过程,完成翻译工作的程序称为解释程序。
2、什么叫“遍”?
指对源程序或源程序的中间形式(如单词,中间代码)从头到尾扫描一次,并作相应的加工处理,称为一遍。
3、简述编译程序的基本过程的任务。
编译程序的工作是指从输入源程序开始到输出目标程序为止的整个过程,整个过程可以划分5个阶段。
词法分析:
输入源程序,进行词法分析,输出单词符号。
语法分析:
在词法分析的基础上,根据语言的语法规则把单词符号串分解成各类语法单位,并判断输入串是否构成语法正确的“程序”。
中间代码生成:
按照语义规则把语法分析器归约(或推导)出的语法单位翻译成一定形式的中间代码。
优化:
对中间代码进行优化处理。
目标代码生成:
把中间代码翻译成目标语言程序。
4、编译程序与解释程序的区别?
编译程序生成目标程序后,再执行目标程序;然而解释程序不生成目标程序,边解释边执行。
5、有人认为编译程序的五个组成部分缺一不可,这种看法正确吗?
编译程序的5个阶段中,词法分析,语法分析,语义分析和代码生成生成是必须完成的。
而中间代码生成和代码优化并不是必不可少的。
优化的目的是为了提高目标程序的质量,没有这一部分工作,仍然能够得到目标代码。
6、编译程序的分类
目前基本分为:
诊断编译程序,优化编译程序,交叉编译程序,可变目标编译程序。
第2章高级语言及其语法描述
1(P36)令文法为
NDND
D0129
(1)文法描述的语言L(G)是什么?
(2)给出句子34,568的最左推导和最右推导。
答:
(1)
L(G)={为可带前导0的正整数}
或L(G)={(0129)+}
或L(G)={为数字串}
(2)
最左推导:
NNDDD3D34
NNDNDDDDD5DD56D568
最右推导:
NNDN4D434
NNDN8ND8N68D68568
2*.写出一个文法,使其语言是奇数集,且每个奇数是不以0开头。
答:
SCAB|B(考虑了正负号)
A1|2|3|4|5|6|7|8|9|AA|A0|
B1|3|5|7|9
C+|-|
或:
(未考虑正负号)
SB|AB
B1|3|5|7|9
AAD|N
N2|4|6|8|B
D0|N
或:
(未考虑正负号)
SC|ABC
C1|3|5|7|9
A1|2|3|4|5|6|7|8|9
BBA|B0|
2.(P36,8)令文法为
ETE+TE-T
TFT*FT/F
F(E)i
(1)给出该文法的VN、VT和S。
(2)给出i+i*i,i*(i+i)的最左推导和最右推导。
(3)给出i+i+i,i+i*i的语法树。
答:
(1)
VN={E,T,F}
VT={+,-,*,/,(,),i}
S=E
(2)
最左推导EE+TT+TF+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+Ti
Ti
i
3.(P36,9)证明下面的文法是二义的:
SiSeS|iSi
答:
对于句子iiiei有两棵不同的语法树。
因此该文法是二义的。
SiSeSiiSeSiiieSiiiei
SiSiiSeSiiieSiiiei
第3章词法分析
1.设M=({x,y},{a,b},,x,{y})为一个非确定有限自动机NFAM,其中定义如下:
(x,a)={x,y}
(x,b)={y}
(y,a)=
(y,b)={x,y}
试构造其相应的最小化的确定有限自动机DFAM’。
答:
由定义可知(x,a),(y,b)均为多值函数,所以是一个非确定有限自动机。
(1)根据函数值,先构造NFAM
(2)确定化:
①构造DFAM’的转换矩阵:
I
Ia
Ib
{x}①
{x,y}②
{y}③
{x,y}②
{x,y}②
{x,y}②
{y}③
{x,y}②
②确定DFAM’的初始状态和终态:
(a)转换矩阵中I列的第一个状态①为DFAM’的初始状态结点。
(b)含有y状态的子集均为DFAM’的终态结点(②、③为终态结点)。
③根据DFAM’的转换矩阵画出对应的状态转换图:
(3)最小化:
①首先将其划分成终态集{2,3}和非终态集{1}
②{2,3}a={2}{2,3},{2,3}b={2}{2,3}
因此{2,3}已是不可再区分的,所以该DFAM’已是最小化的。
2.(P64,7
(1))构造正规式1(01)*101相应的DFAM。
答:
(1)构造NFAM。
1(01)*101
1(01)*101
1101
01
0
1101
1
(2)构造转换矩阵
I
I0
I1
{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}④
(3)由转换矩阵构造DFAM
3.(P64,12(a))将下图所示的NFAM转换为等价的DFAM’,并将该DFA’最小化。
答:
该有限自动机状态0输入同一字符a时到达两个不同的结点,所以是NFA。
(1)构造转换矩阵
I
Ia
Ib
{0}①
{0,1}②
{1}③
{0,1}②
{0,1}②
{1}③
{1}③
{0}①
(2)由转换矩阵构造DFAM
a
a
b
a
b
(3)将DFAM最小化
将DFAM的状态划分为非终态集{3}和终态集{1,2}
对每一个子集及每一个a进行考察;
{1,2}a={2}{1,2}
{1,2}b={3}{3}
因此{1,2}是不可区分的,所以最终状态为:
{1,2},{3}
构造最小化的DFAM:
a
b
a
4.(P64,12(b))将下图所示的NFAM转换为等价的DFAM’,并进行最小化。
答:
从图上可知该图已经是DFAM,先只需将其最小化。
首先划分为两个集合:
{0,1}和{2,3,4,5}
{2,3,4,5}a={1,3,0,5},划分为:
{2,4}和{3,5}
{2,4}a={1,0},{2,4}b={3,5},无需划分
{3,5}a={3,5},{3,5}b={2,4},无需划分
{0,1}a={1},{0,1}b={2,4},无需划分
因此,最终的划分为:
{0,1}、{2,4}和{3,5},化简后的结果:
5.(P65,14)构造一个DFAM,它接受={0,1}上所有满足如下条件的字符串:
每个1都有0直接跟在右边。
答:
(1)根据题意,得到正规式:
(0|10)*
(2)构造对应的NFAM:
(3)将NFAM确定化为DFAM。
相应的DFAM的状态转换矩阵如下:
I
I0
I1
{X,1,Y}①
{1;Y}②
{2}③
{1,Y}②
{1;Y}②
{2}③
{2}③
{1;Y}②
DFAM转换图:
(4)将DFAM最小化:
①将DFAM的状态划分为非终态集{3}和终态集{1,2}
②对每一个子集进行考察;
{1,2}0={2}{1,2}
{1,2}1={3,3}{3}
因此{0,1}是不可划分的。
因此最终划分结果为:
{1,2}和{3}
最小化后的DFAM:
第4章语法分析-自上而下
1.(P81,1)考虑下面文法G
Sa^(T)
TT,SS
(1)消除文法的左递归。
(2)经改写后的文法是否是LL
(1)的?
给出它的预测分析表。
答:
(1)消除左递归:
Sa^(T)
TST’
T’,ST’|
(2)证明改写后的文法是否是LL
(1)的。
FIRST(S)={a,^,(}FOLLOW(S)={,,),#}
FIRST(T)={a,^,(}FOLLOW(T)={)}
FIRST(T’)={,,}FOLLOW(T’)={)}
证明Sa^(T)各侯选式的FIRST是否两两相交。
FIRST(a)FIRST(^)=
FIRST(a)FIRST(()=
FIRST(^)FIRST(()=
证明T’,ST’的FIRST(T’)和FOLLOW(T’)是否相交。
FIRST(T’)FOLLOW(T’)={,,}{}=
∴该文法是LL
(1)的。
所以,改造后的文法是LL
(1)文法
③预测分析表:
a
^
(
)
,
#
S
Sa
S^
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 作业 参考 问题 详解