编译原理作业题答案 编译原理课后题答案Word文件下载.docx
- 文档编号:12959514
- 上传时间:2022-10-01
- 格式:DOCX
- 页数:38
- 大小:205KB
编译原理作业题答案 编译原理课后题答案Word文件下载.docx
《编译原理作业题答案 编译原理课后题答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《编译原理作业题答案 编译原理课后题答案Word文件下载.docx(38页珍藏版)》请在冰豆网上搜索。
B→A|0
或:
G(S):
S→MWN|NN→1|3|5|7|9M→1|2|3|4|5|6|7|8|9
W→WV|εV→M|0
8、令文法为:
E→T|E+T|E-T
T→F|T*F|T/F
F→(E)|i
(1)i+i*i、i*(i+i)的最左推导和最右推导;
(2)给出i+i+i、i+i*i和i-i-i的语法树。
(1)i+i*i、i*(i+i)的最左推导分别为:
E=>T=>E+T=>F+T=>i+T=>i+T*F=>i+F*F=>i+i*F=>i+i*i
E=>T=>T*F=>F*F=>i*F=>i*(E)=>i*(E+T)=>i*(T+T)=>i*(F+T)
=>i*(i+T)=>i*(i+F)=>i*(i+i)
i+i*i、i*(i+i)的最右推导分别为:
E=>T=>E+T=>E+T*F=>E+T*i=>E+F*i=>E+i*i=>T+i*i
=>F+i*i=>i+i*i
E=>T=>T*F=>T*(E+T)=>T*(E+F)=>T*(E+i)=>T*(T+i)
=>T*(F+i)=>T*(i+i)=>F*(i+i)=>i*(i+i)
(2)EEE
E+TE+TE-T
TT*FTT*FE-TF
FFiFFiTFi
iiiiFi
i+i+Ii+i*i
ii-i-i
9、证明下面的文法是二义的:
S→iSeS|iS|i
证明:
思路:
要证明该文法是二义的,必须找到一个句子,使得该句子具有两个不同的最右
推导或两个不同的语法树。
对于句子iiiei,存在如下两个最右推导:
S=>iSeS=>iSei=>iiSei=>iiiei
S=>iS=>iiSeS=>iiSei=>iiiei
由此,该文法是二义的。
10、把下面文法改写为无二义的:
S→SS|(S)|()
对于句子()()(),存在如下两棵语法树,所以该文法是二义性文法,引起
SS
SSSS
SS()()SS
()()()()
二义性的原因在于S→SS,可将其改造成等价的递归结构,消除二义性。
改造后的文法为:
S→TS|TT→(S)|()
11、给出下面语言的相应文法:
L1={anbnci|n>
=1,i>
=0}
L2={aibncn|n>
L3={anbnambm|n,m>
L4={1n0m1m0n|n,m>
解答:
分析:
L1:
要求a和b的个数一样多,并至少为1个,c的个数为0个以上,可用一个非终结符去生成anbn串,一个非终结符生成ci;
L2同L1。
L3:
将anbnambm分为两段考虑,anbn和ambm,然后使用两个终结符分别产生。
L4:
采用从里往外扩展的方式,先用一个非终结符生成中间的m个0和m个1,然后,再用另一个非终结符在该串的基础上扩充前后的n个0和n个1。
L1的文法:
S→ACA→aAb|abC→Cc|ε
L2的文法:
S→ABA→Aa|εB→bBc|bc
L3的文法:
S→ABA→aAb|εB→aBb|ε
L4的文法:
S→1A0|AA→0A1|ε
第三章词法分析
7、构造下列正规式相应的DFA:
(1)1(0|1)*101
(2)1(1010*|1(010)*1)*0(3)0*10*10*10*
解答:
(1)第1步:
根据正规式构造NFA,引入初态X和终止态Y。
(2)第2步:
对上NFA进行确定化,得到如下状态转化矩阵。
状态
I0
I1
X
Φ
{1,2,3}
{2,3}
{2,3,4}
{2,3,5}
{2,3,4,Y}
根据上面的状态转换矩阵,重新命名,得到相应的DFA
(3)第3步化简该DFA,获得最简的DFA,即为所求的DFA。
首先初始分为终态集和非终态集两个集合:
{0,1,2,3,4}和{5}
考察{0,1,2,3,4}
{0,1,2,3,4}0={_2,4}0状态不能接受0字符,0把{0,1,2,3,4}分为{0},{1,2,3,4}
考察{1,2,3,4}
{1,2,3,4}0={2,4},2和4目前等价,{1,2,3,4}1={3,5},3和5不等价
1把{1,2,3,4}分为{1,2,3}和{4}
考察{1,2,3}
{1,2,3}0={2,4},2和4不等价,所以{1,2,3}可分为{1,2},{3}
考察{1,2}
{1,2}0={2}{1,2}1={3}{1,2}不可再细分
最终分为5个小组:
{0},{1,2},{3},{4},{5}
保留状态1,删除状态2,
1状态经0弧到2,改为1经0到1;
4经0到2,改为4经0到1
为化简后的DFA为
8、给出下面正规表达式:
(1)以01结尾的二进制数串;
(2)能被5整除的十进制整数;
(3)包含奇数个1或奇数个0的二进制数串;
分析:
(1)分两部分考虑,一部分实现由0和1构成的任意串,一部分01,两部分连接到一起就可以了。
本题答案为(0|1)*01
(2)要求由0~9这10个数字组成的字符串,并且不能以0开头,要能被5整除。
要被5整除则需以0或5结尾。
分两种情况考虑,
一是1位整数,那么该整数是0和5;
另外一种情况是多位整数。
分3部分考虑:
末尾必须是0或5,第1位必须不为0,中间部分任意。
本题答案为(1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*(0|5)|(0|5)
(3)
12、将图3.18的(a)和(b)分别确定化和最少化。
(a)(b)
(1)a图是一个NFA,要对它进行确定化。
第1步:
确定化,得到DFA。
确定化后得到的状态转换矩阵为下图:
Ia
Ib
{0}
{0,1}
{1}
给状态重新编号,得到新的状态转换矩阵:
0+-
1
2
1-
a
第2步:
最小化
首先将状态划分为两个集合{0,1}和{2}
{0,1}a={1}{0,1}b={2}不可再分
取状态0做代表,删除1
得到新的DFA,
(2)图b所示为一DFA,需要把它进行最小化。
首先将状态初始划分为终态集和非终态集两部分:
{2,3,4,5},{0,1}
首先考察处理{0,1}
{0,1}a={1}{0,1}b={2,4},2和4等价,{2,4}目前不可再分
考察处理{2,3,4,5}
{2,3,4,5}a={1,3,0,5}1,0和3,5是可区别的,{2,3,4,5}可细分为{2,4},{3,5}
考察{2,4}
{2,4}a={0,1}{2,4}b={3,5}0和1,3和5等价,{2,4}不可再分
{3,5}a={3,5}{3,5}b={2,4}2和4,3和5等价,{3,5}不可再分
最终分组为{0,1}{2,4}{3,5}
取0,2,3做为代表,删除1,4,5
最小化后的DFA为:
14.构造一个DFA,它接受∑={0,1}上满足如下条件的字符串:
每个0都有1直接跟在右边。
第1步:
写出正规式,为(0|10)*。
构造NFA。
第3步:
确定化。
状态转换矩阵为:
{X,0,Y}
{0,Y}
{1}
重命名的状态转换矩阵为:
化简后的DFA为:
第4步:
对该确定化后的DFA进行最小化。
首先初始划分为:
{0,1},{2}
考察{0,1}
{0,1}0={1}{0,1}1={2}所以{0,1}不可再细分
保留0,删除1后,得到化简后的DFA即为所求得的DFA。
15.给定右线性文法G:
S→0S|1S|1A|0B
A→1C|1
B→0C|0
C→0C|1C|0|1
求出一个与G等价的左线性文法。
分析:
将右线性文法改为左线性文法,没有直接的方法,可以通过状态转换图来实现.先求得右线性文法对应的NFA,即状态转换图,然后确定化为DFA,再根据DFA,求出左线性文法。
求文法G所对应的NFA.如下图
对该NFA进行确定化和最小化
{S}
{S,B}
{S,A}
{S,B,C,T}
{S,A,C,T}
重命名后的状态转换矩阵为:
0+
3
4
3-
4-
确定化后的DFA为
最小化:
初始划分为:
{0,1,2},{3,4}
考察{3,4}
{3,4}0={3}{3,4}1={4}{3,4}不可再分.
考察{0,1,2}
{0,1,2}0={1,3}{0,1,2}可再分为{0,2}和{1}
考察{0,2}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译原理作业题答案 编译原理课后题答案 编译 原理 作业题 答案 课后
![提示](https://static.bdocx.com/images/bang_tan.gif)