编译原理课后答案Word格式.docx
《编译原理课后答案Word格式.docx》由会员分享,可在线阅读,更多相关《编译原理课后答案Word格式.docx(28页珍藏版)》请在冰豆网上搜索。
方法2:
AB|0B|C|0
1|2|3|4|5|6|7|8|9
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=>
F+T=>
i+T=>
i+T*F=>
i+F*F=>
i+i*F=>
i+i*I
8、是有二义性的,因为句子abc有两棵语法树(或称有两个最左推导或有两个最右推导)
最左推导1:
S=>
Ac=>
abc
最左推导2:
aB=>
9、⑴
aa
(2)该文法描述了变量a和运算符+、*组成的逆波兰表达式
10、
(1)该文法描述了各种成对圆括号的语法结构
(2)是有二义性的,因为该文法的句子()()存在两种不同的最左推导:
最左推导1:
S(S)S=>
(S)S=>
()S=>
()S(S)S=>
()(S)S=>
()()S=>
()()最左推导2:
S(S)S(S)S=>
(S)S(S)S=>
()()
11、⑴因为从文法的开始符E出发可推导出E+T*F,推导过程如下:
E=>
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
SBB|b
(3)首先为了区别句子abbaa中的a和b,把它写成a1b1b2a2a3该句子的短语有:
a1b1b2a2a3,b1b2,a2a3,a1,a2,b1,b2,£
直接短语有:
a1,a2,b1,b2,£
句柄:
a1
14、
(1)G[S]:
AB
aAb|£
aBb|£
(2)G[S]:
1S0|A
0A1|£
(3)G[S]:
0S0|aSa|a16、
(1)G[A]:
A—>
aA|£
(2)G[A]:
aA|aB
bB|b
(3)G[A]:
aA|B
bB|C
C->
cC|£
、/、(和)
17、习题6、习题7和习题7中的文法所描述的语言都是由变量i、+、-、
组成算术表达式,因此它们之间是等价的
第四章参考答案
第1题:
确定化:
|0
I1
-S
A
AC
ABZ
+ABZ
S
B
C
Z
重新命名,令{AB}为B、{AC}为C、{ABZ}为Z其中S为初态,Z为终态
1
D
+Z
a,b
b
2
3
4
Ia
Ib
AZ
+AZ
重新命名,以0、1、2、3、4代替{S},{A},{AB},{AZ},{ABZ}得DFA
-0
+3
+4
其中0为初态,3,4为终态
第2题:
E
F
Io
11
X
XZ
Y
+XZ
XY
XYZ
+XYZ
以A、E、C、D、E、F代替{X},{Z},{XZ},{Y},{XY},{XYZ}
得DFA
重新命名,
其中A为初态,E,C,F为终态
+B
+C
+F
第3题:
Il
VQ
QU
VZ
V
QUZ
+VZ
+QUZ
G
重新命名,以A、E、C、D、E、F代替{S},{VQ},{QU},{VZ},{V},{QUZ},{Z}其中A为初态,D,F,G为终态
-A
+D
+G
第4题:
⑴确定化:
la
-+o
01
+01
重新命名,以A、E、C代替{0}、{01}、{1}得DFA其中A为初态,A,B为终态
-+A
最小化:
初始分划得终态组{A,B},非终态组{C}
no:
{A,B},{C}
以A、C代替{A,B}、
对终态组进行审查,判断A和B是等价的,故这是最后的划分重新命名,
{C}得DFA
(2)这是DFA,直接最小化
初始分划得:
终态组{0},非终态组{1,2,3,4,5}
{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}
{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}
{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)