编译原理课后答案.docx
《编译原理课后答案.docx》由会员分享,可在线阅读,更多相关《编译原理课后答案.docx(28页珍藏版)》请在冰豆网上搜索。
![编译原理课后答案.docx](https://file1.bdocx.com/fileroot1/2022-11/17/0fd606f1-1592-4805-8f14-54701da4b528/0fd606f1-1592-4805-8f14-54701da4b5281.gif)
编译原理课后答案
AVV*
第二早
1、L(G[S])={abc}
2、L(G[N])={n位整数或空字符串|n>0}
3、G[E]:
E—>E+D|E-D|D
D—>0|1|2|3|4|5|6|7|8|9
4、L(G[Z])={anbn|n>0}5、
(1)考虑不包括“0”的情况
G[S]:
S—>0S|ABC|2|4|6|8
A—>1|2|3|4|5|6|7|8|9B—>AB|0B|&
C—>0|2|4|6|8
考虑包括“0”的情况:
G[S]:
S—>AB|C
B—>AB|C
A—>0|1|2|3|4|5|6|7|8|9
C—>0|2|4|6|8
(2)方法1:
G[S]:
S—>ABC|2|4|6|8
A—>1|2|3|4|5|6|7|8|9
B—>AB|0B|&
C—>0|2|4|6|8
方法2:
G[S]:
S—>AB|C
B—>AB|0B|C|0
A—>1|2|3|4|5|6|7|8|9
C—>2|4|6|8
&设<表达式>为E,<项>为T,<因子〉为F,注:
推导过程不能省略,以下均为最左推导
(1)E=>T=>F=>i
(4)E=>E+T=>T+T=>T*F+T=>F*F+T=>i*F+T=>i*i+T=>i*i+F=>i*i+i
(6)E=>E+T=>T+T=>F+T=>i+T=>i+T*F=>i+F*F=>i+i*F=>i+i*I
8、是有二义性的,因为句子abc有两棵语法树(或称有两个最左推导或有两个最右推导)
最左推导1:
S=>Ac=>abc
最左推导2:
S=>aB=>abc
9、⑴
aa
(2)该文法描述了变量a和运算符+、*组成的逆波兰表达式
10、
(1)该文法描述了各种成对圆括号的语法结构
(2)是有二义性的,因为该文法的句子()()存在两种不同的最左推导:
最左推导1:
S=>S(S)S=>(S)S=>()S=>()S(S)S=>()(S)S=>()()S=>()()最左推导2:
S=>S(S)S=>S(S)S(S)S=>(S)S(S)S=>()S(S)S=>()(S)S=>()()S=>()()
11、⑴因为从文法的开始符E出发可推导出E+T*F,推导过程如下:
E=>E+T=>E+T*F,所以E+T*F是句型。
从子树和短语之间的关系可知:
E+T*F是句型E+T*F相对于E的短语;
T*F是句型E+T*F相对于T的短语,也是简单短语和句柄。
13、
(1)最左推导:
S=>ABS=>aBS=>aSBBS=>aBBS=>abBS=>abbS=>abbAa=>abbaa
(2)S—>ABS|Aa|£
A—>a
B—>SBB|b
(3)首先为了区别句子abbaa中的a和b,把它写成a1b1b2a2a3该句子的短语有:
a1b1b2a2a3,b1b2,a2a3,a1,a2,b1,b2,£
直接短语有:
a1,a2,b1,b2,£
句柄:
a1
14、
(1)G[S]:
S—>AB
A—>aAb|£
B—>aBb|£
(2)G[S]:
S—>1S0|A
A—>0A1|£
(3)G[S]:
S—>0S0|aSa|a16、
(1)G[A]:
A—>aA|£
(2)G[A]:
A—>aA|aB
B—>bB|b
(3)G[A]:
A—>aA|B
B—>bB|C
C->cC|£
、/、(和)
17、习题6、习题7和习题7中的文法所描述的语言都是由变量i、+、-、
组成算术表达式,因此它们之间是等价的
第四章参考答案
第1题:
确定化:
|0
I1
-S
A
A
A
AB
AB
AC
AB
AC
A
ABZ
+ABZ
AC
AB
S
A
B
C
Z
重新命名,令{AB}为B、{AC}为C、{ABZ}为Z其中S为初态,Z为终态
0
1
-S
A
A
A
B
B
C
B
C
A
D
+Z
C
B
a,b
a
b
b
确定化:
0
1
2
3
4
Ia
Ib
-S
A
A
AB
AZ
AB
AB
ABZ
+AZ
AB
AZ
+ABZ
AB
ABZ
重新命名,以0、1、2、3、4代替{S},{A},{AB},{AZ},{ABZ}得DFA
Ia
Ib
-0
1
1
2
3
2
2
4
+3
2
3
+4
2
4
其中0为初态,3,4为终态
第2题:
A
B
C
D
E
F
Io
11
Z
X
+Z
XZ
Y
+XZ
XZ
XY
Y
XY
XY
XYZ
X
+XYZ
XYZ
XY
以A、E、C、D、E、F代替{X},{Z},{XZ},{Y},{XY},{XYZ}
得DFA
0
1
A
B
A
重新命名,
其中A为初态,E,C,F为终态
+B
C
D
+C
C
E
D
E
E
F
A
+F
F
E
第3题:
得DFA
确定化:
Io
Il
-S
VQ
QU
VQ
VZ
QU
QU
V
QUZ
+VZ
Z
Z
V
Z
+QUZ
VZ
QUZ
+Z
Z
Z
B
C
D
E
F
G
重新命名,以A、E、C、D、E、F代替{S},{VQ},{QU},{VZ},{V},{QUZ},{Z}其中A为初态,D,F,G为终态
0
1
-A
B
C
B
D
C
C
E
F
+D
G
G
E
G
+F
D
F
+G
G
G
第4题:
⑴确定化:
la
Ib
-+o
01
1
+01
01
1
1
0
A
B
C
重新命名,以A、E、C代替{0}、{01}、{1}得DFA其中A为初态,A,B为终态
a
b
-+A
B
C
+B
B
C
C
A
最小化:
初始分划得终态组{A,B},非终态组{C}
no:
{A,B},{C}
以A、C代替{A,B}、
对终态组进行审查,判断A和B是等价的,故这是最后的划分重新命名,
{C}得DFA
a
b
-+A
A
C
C
A
(2)这是DFA,直接最小化
初始分划得:
终态组{0},非终态组{1,2,3,4,5}
no:
{0},{1,234,5}
对{1,2,3,4,5}进行审查:
•••{4}输入a后到达{0},{1,2,3,5}输入a后到达{1,3,5},故得到新分划{0,1,3,5},{4}
ni:
{0},{4},{1,2,3,5}
对{1,2,3,5}进行审查:
•••{1,5}输入b后到达{4},{2,3}输入b后到达{2,3},故得到新分划{1,5},{2,3}
口2:
{0},{4},{1,5},{2,3}
对{1,5},{2,3}进行审查:
{1,5}输入a后到达{1,5}
{2}输入a后到达{1},{3}输入a后到达⑶,故得到新分划{2},{3}
口3:
{0},{2},{3},{4},{1,5}
这是最后分划了
重新命名,以0,2,3,4,1代替{0},{2},{3},{4},{1,5}得DFA略
确定化:
最小化:
初始分划得:
终态组{3,4},非终态组{0,1,2,5,6}
口0:
{3,4},{0,1,2,5,6}
对{0,125,6}进行审查:
{1,2}输入b到达{3,4},而{0,5,6}输入b到达{2,5,6},故得到新分划{1,2},{0,5,6}
ni:
{3,4},{1,2},{0,5,6}
对{0,5,6}进行审查:
{0}经过b到达{2},{5,6}经过b到达{5,6},故得到新分划{0}{5,6}
n3:
{0},{1,2},{3,4},{5,6}
这是最后划分了。
重新命名,以0,1,3,5代替{0},{1,2},{3,4},{5,6}得DFA略
第9题
这是DFA,直接最小化
初始分划得:
终态组{6,7},非终态组{1,2,3,4,5}
no:
{6,7},{1,2,3,4,5}
对{1,2,3,4,5}进行审查:
{1,2}输入b到达{2},而{3,4}输入b到达{6,7},{5}输入b不会有任何动作,故得到新分划{1,2},{3,4},{5}
ni:
{6,7},{3,4},{5},{1,2}
这是最后划分了。
重新命名,以1,3,5,6代替{1,2},{3,4},{5},{6,7}得DFA
第11题
根据正则文法(左线性文法)转化为NFA的方法构造NFA:
确定化:
所识别的语言是:
4(a|b)a(ba|a)*
第13题
(1)假设d{A,B,…,Y,Z}n{0,1,2,…,8,9}文法可以等价得化为:
<单词>—><标识符>|<整数>
<标识符>—><标识符>d|<标识符>n|d
<整数>—><整数>n|n
(2)根据正则文法(左线性文法)转化为NFA的方法构造NFA:
重新命名状态,令A、B、C分别代表<单词>、<标识符>、<整数>
第五章习题参考答案
1、⑴对(a,(a,a)的最左推导为:
S二'(T)='(T,S)=(S,S)=(a,S)=•(a,(T))=■(a,(T,S))=(a,(S,S)尸'
(a,(a,S))=(a,(a,a))
对(((a,a),卜、,(a)),a)的最左推导为:
S=.(T)=(T,S)=(S,S)二•((T),S)=.((T,S),S)=((T,S,S),S)=.
((S,S,S),S)=:
(((T),S,S),S)=、(((T,S),S,S),S)=・(((S,S),S,S),S尸,(((a,S),S,S),S)='(((a,a),S,S),S)=■(((a,a),人,S),S)
='(((a,a),人,(T)),S)(((a,a),人,(S)),S)=,(((a,a),人,(a)),S)(((a,a),人,(a)),a)
对(((a,a),,(a)),a)的最左推导为:
S(T)(T,S)(S,S)((T),S)((T,S)