《编译原理》西北工业大学第三版课后答案.docx
- 文档编号:1695179
- 上传时间:2022-10-23
- 格式:DOCX
- 页数:99
- 大小:572.08KB
《编译原理》西北工业大学第三版课后答案.docx
《《编译原理》西北工业大学第三版课后答案.docx》由会员分享,可在线阅读,更多相关《《编译原理》西北工业大学第三版课后答案.docx(99页珍藏版)》请在冰豆网上搜索。
目录
第一章习题解答 1
第二章习题解答 2
2.构造产生下列语言的文法 2
3.描述语言特点 3
7.解:
5
10.证明:
因为存在句子:
abc,它对应有两个语法树(或最右推导):
7
11.解:
7
15.消除下列文法中的无用产生式和单产生式 10
第三章习题解答 10
第四章习题解答 24
第四章习题参考答案 24
35解:
37
36解:
40
37解:
42
38解:
43
39解:
识别活前缀的DFA及LR(0)分析表:
50
40解:
求LR
(1)项目集和状态转换表:
54
41解:
55
42解:
59
第五章习题解答 64
5.8解:
65
第一章习题解答
1.解:
源程序是指以某种程序设计语言所编写的程序。
目标程序是指编译程序(或解释程序)将源程序处理加工而得的另一种语言(目标语言)的程序。
翻译程序是将某种语言翻译成另一种语言的程序的统称。
编译程序与解释程序均为翻译程序,但二者工作方法不同。
解释程序的特点是并不先将高级语言程序全部翻译成机器代码,而是每读入一条高级语言程序语句,就用解释程序将其翻译成一段机器指令并执行之,然后再读入下一条语句继续进行解释、执行,如此反复。
即边解释边执行,翻译所得的指令序列并不保存。
编译程序的特点是先将高级语言程序翻译成机器语言程序,将其保存到指定的空间中,在用户需要时再执行之。
即先翻译、后执行。
2.解:
一般说来,编译程序主要由词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序、目标代码生成程序、信息表管理程序、错误检查处理程序组成。
3.解:
C语言的关键字有:
auto break casecharconst continuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile。
上述关键字在C语言中均为保留字。
4.解:
C语言中括号有三种:
{},[],()。
其中,{}用于语句括号;[]用于数组;()用于函数(定义与调用)及表达式运算(改变运算顺序)。
C语言中无END关键字。
逗号在C语言中被视为分隔符和运算符,作为优先级最低的运算符,运算结果为逗号表达式最右侧子表达式的值(如:
(a,b,c,d)的值为d)。
5.略
第二章习题解答
1.
(1)答:
26*26=676
(2)答:
26*10=260
(3)答:
{a,b,c,...,z,a0,a1,...,a9,aa,...,az,...,zz,a00,a01,...,zzz},共26+26*36+26*36*36=34658个
2.构造产生下列语言的文法
(1){anbn|n≥0}
解:
对应文法为G(S)=({S},{a,b},{S→ε|aSb},S)
(2){anbmcp|n,m,p≥0}
解:
对应文法为G(S)=({S,X,Y},{a,b,c},{S→aS|X,X→bX|Y,Y→cY|ε},S)
(3){an#bn|n≥0}∪{cn#dn|n≥0}
解:
对应文法为G(S)=({S,X,Y},{a,b,c,d,#},{S→X,S→Y,X→aXb|#,Y→cYd|#},S)
(4){w#wr#|w?
{0,1}*,wr是w的逆序排列}
解:
G(S)=({S,W,R},{0,1,#},{S→W#,W→0W0|1W1|#},S)
(5)任何不是以0打头的所有奇整数所组成的集合
解:
G(S)=({S,A,B,I,J},{-,0,1,2,3,4,5,6,7,8,9},{S→J|IBJ,B→0B|IB|e,I→J|2|4|6|8,J→1|3|5|7|9},S)
(6)所有偶数个0和偶数个1所组成的符号串集合
解:
对应文法为S→0A|1B|e,A→0S|1CB→0C|1SC→1A|0B
3.描述语言特点
(1)S→10S0S→aAA→bAA→a
解:
本文法构成的语言集为:
L(G)={(10)nabma0n|n,m≥0}。
(2)S→SSS→1A0A→1A0A→ε
解:
L(G)={1n10n11n20n2…1nm0nm|n1,n2,…,nm≥0;且n1,n2,…nm不全为零}该语言特点是:
产生的句子中,0、1个数相同,并且若干相接的1后必然紧接数量相同连续的0。
(3)S→1AS→B0A→1AA→CB→B0B→CC→1C0C→ε
解:
本文法构成的语言集为:
L(G)={1p1n0n|p≥1,n≥0}∪{1n0n0q|q≥1,n≥0},特点是具有1p1n0n或1n0n0q形式,进一步,可知其具有形式1n0mn,m≥0,且n+m>0。
(4)S→bAdcA→AGSG→εA→a
解:
可知,S=>…=>baSndcn≥0
该语言特点是:
产生的句子中,是以ba开头dc结尾的串,且ba、dc个数相同。
(5)S→aSSS→a
解:
L(G)={a(2n-1)|n≥1}可知:
奇数个a
4.解:
此文法产生的语言是:
以终结符a1、a2…an为运算对象,以∧、∨、~为运算符,以[、]为分隔符的布尔表达式串
5. 5.1解:
由于此文法包含以下规则:
AA→e,所以此文法是0型文法。
5.2证明:
略
6.解:
(1)最左推导:
<程序>T<分程序>T<标号>:
<分程序>TL:
<分程序>
TL:
<标号>:
<分程序>
TL:
L:
<分程序>
TL:
L:
<无标号分程序>
TL:
L:
<分程序首部>;<复合尾部>
TL:
L:
<分程序首部>;<说明>;<复合尾部>
TL:
L:
begin<说明>;<说明>;<复合尾部>
TL:
L:
begind;<说明>;<复合尾部>
TL:
L:
begind;d;<复合尾部>
TL:
L:
begind;d;<语句>;<复合尾部>
TL:
L:
begind;d;s;<复合尾部.
TL:
L:
begind;d;s;<语句>end
TL:
L:
begind;d;s;send
最右推导:
<程序>T<分程序>T<标号>:
<分程序>
T<标号>:
<标号>:
<分程序>
T<标号>:
<标号>:
<无标号分程序>
T<标号>:
<标号>:
<分程序首部>;<复合尾部>
T<标号>:
<标号>:
<分程序首部>;<语句>;<复合尾部>
T<标号>:
<标号>:
<分程序首部>;<语句>;<语句>;end
T<标号>:
<标号>:
<分程序首部>;<语句>;s;end
T<标号>:
<标号>:
<分程序首部>;s;s;end
T<标号>:
<标号>:
<分程序首部>;说明;s;s;end
T<标号>:
<标号>:
<分程序首部>;d;s;s;end
T<标号>:
<标号>:
begin说明;d;s;s;end
T<标号>:
<标号>:
begind;d;s;s;end
T<标号>:
L:
begind;d;s;s;end
TL:
L:
begind;d;s;s;end
(2)句子L:
L:
begind;d;s;send的相应语法树是:
7.解:
aacb是文法G[S]中的句子,相应语法树是:
最右推导:
S=>aAcB=>aAcb=>aacb
最左推导:
S=>aAcB=>aacB=>aacb
(2)aabacbadcd不是文法G[S]中的句子
因为文法中的句子不可能以非终结符d结尾
(3)aacbccb不是文法G[S]中的句子
可知,aacbccb仅是文法G[S]的一个句型的一部分,而不是一个句子。
(4)aacabcbcccaacdca不是文法G[S]中的句子
因为终结符d后必然要跟终结符a,所以不可能出现…dc…这样的句子。
(5)aacabcbcccaacbca不是文法G[S]中的句子
由
(1)可知:
aacb可归约为S,由文法的产生式规则可知,终结符c后不可能跟非终结符S,所以不可能出现…caacb…这样的句子。
8.证明:
用归纳法于n,n=1时,结论显然成立。
设n=k时,对于α1α2...αkT*b,存在βi:
i=1,2,..,k,αiT*bi成立,现在设
α1α2...αkαk+1T*b,因文法是前后文无关的,所以α1α2...αk可推导出b的一个前缀b',αk+1可推导出b的一个后缀=b"(不妨称为bk+1)。
由归纳假设,对于b',存在βi:
i=1,2,..,k,b'=β1β2...βk,使得
αiT*bi成立,另外,我们有αk+1T*b"(=bk+1)。
即n=k+1时亦成立。
证毕。
9.证明:
(1)用反证法。
假设α首符号为终结符时,β的首符号为非终结符。
即设:
α=aω;β=Aω’且α=>*β。
由题意可知:
α=aωT…TAω’=β,由于文法是CFG,终结符a不可能被替换空串或非终结符,因此假设有误。
得证;
(2)同
(1),假设:
β的首符号为非终结符时,α首符号为终结符。
即设:
α=aω;β=Aω’且α=aωT…TAω’=β,与
(1)同理,得证。
10.证明:
因为存在句子:
abc,它对应有两个语法树(或最右推导):
STABTAbcTabc
STDCTDcTabc
所以,本文法具有二义性。
11.解:
(1)STABTAaSbTAacbTbAacbTbbAacbTbbaacb
上面推导中,下划线部分为当前句型的句柄。
对应的语法树为:
全部的短语:
第一个a(a1)是句子bbaacb相对于非终结符A(A1)(产生式A?
a)的短语(直接短语);
b1a1是句子bbaacb相对于非终结符A2的短语;
b2b1a1是句子bbaacb相对于非终结符A3的短语;
c是句子bbaacb相对于非终结符S1(产生式S?
c)的短语(直接短语);
a2cb3是句子bbaacb相对于非终结符B的短语;
b2b1a1a2cb3是句子bbaacb相对于非终结符S2的短语;
注:
符号的下标是为了描述方便加上去的。
(2)句子(((b)a(a))(b))的最右推导:
ST(AS)T(A(b))T((SaA)(b))T((Sa(a))(b))
T(((b)a(a))(b))
相应的语法树是:
(3)解:
iii*i+↑对应的语法树略。
最右推导:
ETT=>F=>FP↑TFE↑TFET+↑TFEF+↑TFEP+↑TFEi+↑
TFTi+↑TFTF*i+↑TFTP*i+↑TFTi*i+↑TFFi*i+↑TFPi*i+↑
TFii*i+↑TPii*i+↑Tiii*i+↑
12.证明:
充分性:
当前文法下的每一符号串仅有一个句柄和一个句柄产生式T对当前符号串有唯一的最左归约T对每一步推导都有唯一的最右推导T有唯一的语法树。
必要性:
有唯一的语法树T对每一步推导都有唯一的最右推导T对当前符号串有唯一的最左归约T当前文法下的每一符号串仅有一个句柄和一个句柄产生式
13.化简下列各个文法
(1)解:
S→bCACdA→cSA|cCCC→cS|c
(2)解:
S→aAB|fA|gA→e|dDAD→eAB→f
(3)解:
S→ac
14.消除下列文法中的ε产生式
(1)解:
S→aAS|aS|bA→cS
(2)解:
S→aAA|aA|aA→bAc|bc|dAe|de
15.消除下列文法中的无用产生式和单产生式
(1)消除后的产生式如下:
S→aB|BC
B→DB|b
C→b
D→b|DB
(2)消除
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译原理 编译 原理 西北工业大学 第三 课后 答案