编译基本知识第三版课后答案解析.docx
- 文档编号:23405002
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:59
- 大小:219.34KB
编译基本知识第三版课后答案解析.docx
《编译基本知识第三版课后答案解析.docx》由会员分享,可在线阅读,更多相关《编译基本知识第三版课后答案解析.docx(59页珍藏版)》请在冰豆网上搜索。
编译基本知识第三版课后答案解析
P36-6
(1)
L(G)是0~9
组成的数字串
编译
原理课后题答案
第二章
最左推导:
N
ND
NDD
NDDDDDDD
N
ND
DD
3D34
N
ND
NDD
DDD5DD
56D
最右推导:
N
ND
N7
ND7N27
ND27
N
ND
N4
D434
N
ND
N8
ND8N68
D68
(2)
568
568
N127D1270127
0DDD01DD012D0127
P36-7
G(S)
O
N
D
S
A
1|3|5|7|9
2|4|6|8|O
0|N
O|AO
AD|N
P36-8
文法:
T|ET|EF|T*F|T/F(E)|i
最左推导:
TiT*F
iF*Fii*F
T*FF*F
i*F
i*(i
T)i*(iF)
i*(i
i*(E)i*(
i)
T)
i*(TT)
i*(F
T)
最右推导:
EETET*F
ET*i
EF*i
Ti*iF
ETF*TF*F
F*(Ti)
F*(F
i)
F*(E)
F*(i
i)
F*(ET)
)i*(ii)
F*(
F)F*(Ei)
^语法树./********************************
E
E+
E
E
+T
E
+
i+i+i
*****************/
P36-9
句子iiiei有两个语法树:
•巳
P36-10
/**************
STS|T
T(S)|()
T
T
F
i
i-i-i
i+i*i
***************/
P36-11
/***************
L1:
AC
aAb|abeC|
L2:
AB
aA|bBc|be
L3:
AB
aAb|
aBb|
L4:
A|B
0A1|
1B0|A
***************/
第二章习题参考答案
P64-
(1)
1(01)101
确定化:
0
1
{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,}
最小化:
{0,123,4耳,{6}
{0,123,4耳0{1,3待{0,1,2,3,4,f}1{1,2,4©
{0,123,4},{0},{6}
{0,123,4}。
{1,3,5}
{0,1,23,{4},{$,{6}
{0,1,23°{1,3}{0,1,2,3}1{1,2,4}
{0,1},{23{4},{5UQ
{0,1}0{1}
0,1}1{1,2}
{2,3}0{3{2,3[{4}
{0},{1},{2,3},{4},{5},{6}
八
1
P64-8
(1)
(1|0)01
(1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)(0|5)|(0|5)
0*1(0|10*1)*|1*0(0|10*1)*
P64-12
a,b
确定化:
a
b
{0}
{0,1}
{1}
{0,1}
{0,1}
{1}
{1}
{0}
给状态编号:
a
b
0
1
2
1
1
2
2
0
3
b
{0,叽
b
{2}
{3}
最小化:
{0,1},{2,3}
{0,1}a{1}
{2,3}a{0,3{2,3}
{0,1},{2},{3}
>Q
(b)
a
已经确定化了
,进行最小化
{0,1}b{2,4}
{2,3,4,5}b
{3,5}
{2,4}
{2,3,4,5}
最小化:
{{0,1},{2,3,4,5}}
{0,1}a{1}
{2,3,4,5}a{1,3,0,q{2,4}a{1,0}{2,4}b
{3,qa{3,5}{3,5}b
{{O,1},{2,4},{3,5}}
{0,1}a
{1}
{0,1}b
{2,4}
{2,4}a
{1,0}
{2,4}b
{3,5}
{3,5L
{3,5}
{3,5}b
{2,4}
P64-4
(1)
⑵:
V
a
A
a
b
1
0
0
(0|10)*Q
©
确定化:
0
1
{X,1,Y}
{1,Y}
{2}
{1,Y}
{1,Y}
{2}
{2}
{1,Y}
给状态编号:
0
1
0
1
2
1
1
2
2
1
3
3
3
3
0
0
1
最小化:
{0,1},{2,3}
{O,1}o{1}{2,3}o{1,3}{0,1},{2},{3}
{0,1}1{2}
{2,3}1{3}
1
0
第四章
P81-
(1)按照T,S的顺序消除左递归
(S)
aF|仃)
ST
,ST|
递归子程序:
ProcedureS;
begin
ifsym='a'orsym='^'
thenabvaneeelseifsym='('
thenbegin
advance;T;
ifsym=')'thenadvanee;
elseerror;
end
else
error
end;
procedureT;
begin
end;
procedureT;
begin
ifsym=','
thenbegin
advance;
end
end;
其中
sym:
是输入串指针IP所指的符号
advance:
是把IP调至下一个输入符号
error:
是出错诊察程序
FIRST(S)={a,A,(}
FIRST(T)={a,A,(}
FIRST(T)={,,}
FOLLOW(S)={),,,#}
FOLLOW(T)={)}
FOLLOW(T)={)}
预测分析表
a
A
(
)
J
#
S
Sa
SA
S(T)
T
TST
TST
TST
T
T
T,ST
是LL
(1)文法
P81
文法:
TE
E|
FT
T|
PF
*F|(E)|a|bF
(1)
FIRST(E)={(,a,b,A}
FIRST(E')={+,4
FIRST(T)={(,a,b,A}
FIRST(T')={(,a,b,A,4
FIRST(F)={(,a,b,A}
FIRST(F')={*,耳
FIRST(P)={(,a,b,A}
FOLLOW(E)={#,)}
FOLLOW(E')={#,)}
FOLLOW(T)={+,),#}
FOLLOW(T')={+,),#}
FOLLOW(F)={(,a,b,A,+,),#}
FOLLOW(F')={(,a,b,A,+,),#}
FOLLOW(P)={*,(,a,b,A,+,),#}
(2)
考虑下列产生式:
E|
T|
*F|
(E)F|a|b
FIRST(+E)nFIRST(护{+}Q{沪©
FIRST(+E)QFOLLOW(E')={+}n{#,)}=©
FIRST(T)nFIRST(沪{(abf}n{沪©
FIRST(T)nFOLLOW(T')={(,a,b,A}□{+,),#}=©
FIRST(*F')nFIRST(9={*}n{4=©
FIRST(*F')nFOLLOW(F')={*}n{(,a,b,^,+,),#}=©
FIRST((E))nFIRST(a)nFIRST(b)nFIRST(^)=©
所以,该文法式LL
(1)文法.
⑶
+
*
(
)
a
b
A
#
E
ETE'
ETE'
ETE'
ETE'
E'
EE
E
E
T
TFT
TFT
TFT
TFT
T'
T
TT
T
TT
TT
TT
T
F
FPF
FPF
FPF
FPF
F'
F
F*F
F
F
F
F
F
F
P
P(E)
Pa
Pb
PA
⑷
ProcedureE;
begin
ifsym='('orsym='a'orsym='b'orsym='^'
thenbeginT;E'endelseerror
endprocedureE';
begin
ifsym-+'
thenbeginadvanee;Eend
elseifsym<>')'andsym<>'#'thenerror
endprocedureT;
begin
ifsym='('orsym='a'orsym='b'orsym='^'
thenbeginF;T'endelseerror
endprocedureT';
begin
ifsym='('orsym='a'orsym='b'orsym='^'
thenTelseifsym='*'thenerror
endprocedureF;
begin
ifsym='('orsym='a'orsym='b'orsym='^'
thenbeginP;F'endelseerror
endprocedureF';
begin
ifsym='*'
thenbeginadvance;F'end
endprocedureP;
begin
ifsym='a'orsym='b'orsym='^'
thenadvanceelseifsym='('thenbegin
advance;E;
ifsym=')'thenadvance
elseerror
endelseerror
end;
P81—3
/***************
(1)
是,满足三个条件。
(2)
不是,对于A不满足条件3。
(3)
不是,A、B均不满足条件3。
(4)
是,满足三个条件。
***************/
第五章
P133-
T*F
短语:
E+T*F,T*F,
直接短语:
T*F
句柄:
T*F
P133—
文法:
(1)
最左推导:
S(T)(T,S)
S(T,S)(S,S)
(((T,S),S,S)),S)(((a,a),A,S),S)(((a,a),A,(a)),a)
(S,S)(a,S)(a,(T))(a,(T,S))
((T),S)((T,S),S)((T,S,S),S)
(((S,S),S,S),S)(((a,S),S,S),S)
(((a,a),A,(T)),S)(((a,a),A,(S)),S)
(a,(S,S))(a,(a,S))(a,(a,a))
((S,S,S),S)(((T),S,S),S)
(((a,a),S,S),S)
(((a,a),A,(a)),S)
最右推导:
S(T)(T,S)
(S,(a,a))(a,(a,a))
S(T,S)(T,a)(S,a)((T),a)((T,S),a)
(T,(T))(T,(T,S))(T,(T,a))
(T,(S,a))
(T,(a,a))
((T,(T)),a)
((T,(a)),a)((T,S,(a)),a)((T-,(a)),a)((S",(a)),a)(((T,S)T,(a)),a)(((T,a),A,(a)),a)(((S,a)T,(a)),a)
((T,(S)),a)
(((T)T,(a)),a)
(((a,a)T,(a)),a)
(((a,a),A,(a)),a)
(((S,a),A,(a)),a)
(((T,ar,(a)),a)
(((LS),A,(a)),a)
(((T),A,(a)),a)((S,A,(a)),a)((T,A,(a)),a)((T,S,(a)),a)((T,(a)),a)((T,(S)),a)((T,(T)),a)((T,S),a)(da)(S,a)(T,S)
(T)
“移进-归约”
过程:
步骤
栈
输入串
动作
0
#
(((a,a),A,(a)),a)#
预备
1
#(
((a,a),A,(a)),a)#
进
2
#((
(a,a),A,(a)),a)#
进
3
#(((
a,a),A,(a)),a)#
进
4
#(((a
a),A,(a)),a)#
进
5
#(((S
a),A,(a)),a)#
归
6
#(((T
a),A,(a)),a)#
归
7
#(((T,
a),A,(a)),a)#
进
8
#(((T,a
八(a)),a)#
进
9
#(((T,S
八(a)),a)#
归
10
#(((T
八(a)),a)#
归
11
#(((T)
二(a)),a)#
进
12
#((S
化(a)),a)#归
13
#((T
化(a)),a)#归
14
#((T,
A,(a)),a)#
15
#((T,A
(a)),a)#
进
16
#((T,S
(a)),a)#
归
17
#((T
(a)),a)#归
18
#((T,
(a)),a)#
进
19
#((T,(
a)),a)#
进
20
#((T,(a
)),a)#
进
21
#((T,(S
)),a)#
归
22
#((T,(T
)),a)#
归
23
#((T,(T)
),a)#
进
24
#((T,S
),a)#
归
25
#((T
),a)#
归
26
#((T)
a)#进
27
#(S
a)#
归
28
#(T
a)#
归
进
29
#(T,
a)#
30
#(T,a
31
#(T,S
32
#(T
)#
33
#(T)
#
34
#S
#
P133-3
(1)
FIRSTVT(S)={a,A,(}
FIRSTVT(T)={,,a,A,(}
LASTVT(S)={a,A,)}
LASTVT(T)={,,a,A,)}
⑵
进
归
进
归
a
A
(
)
J
a
>
>
A
>
>
(
<
<
<
=
<
)
>
>
J
<
<
<
>
>
G6是算符文法,并且是算符优先文法
(3)优先函数
a
A
(
)
5
f
4
4
2
4
4
g
5
5
5
2
3
#(
#(a
#(t
(t,
(t,
(t,
(a
(t,
(t
(t,
(t,
(t,
(t,a
(t,
(t,s
ga
gA
g(
g)
输入字符串
(a,(a,a))#
a,(a,a))#
(a,a))#
(a,a))#
(a,a))#
a,a))#
a))#
a))#
a))#
))#
))#
动作
预备
(t,(t
))#
(t,(t)
(t,s
(t
(t)
success
P134
-5
(1)
0.S
1.S
2.S
AS3.S
4.S
AS
5.S
6.Sb
7.A
SA
8.A
9.A
SA
10.Aa
11.Aa
S
Q
S
A
©A
Oa
z
0
d
◎
确定化:
S
A
a
b
{0,2,5,7,10}
{1,2,5,7,8,10}
{2,3,5,7,10}
{11}
{6}
{1,2,5,7,8,10}
{2,5,7,8,10}
{2,3,5,7,9,10}
{11}
{6}
{2,3,5,7,10}
{2,4,5,7,8,10}
{2,3,5,7,10}
{11}
{6}
{2,5,7,8,10}
{2,5,7,8,10}
{2,3,5,7,9,10}
{11}
{6}
{2,3,5,7,9,10}
{2,4,5,7,8,10}
{2,3,5,7,10}
{11}
{6}
{2,4,5,7,8,10}
{2,5,7,8,10}
{2,3,5,7,9,10}
{11}
{6}
{11}
{6}
3:
S
S
A
SA
A
SA
A
a
S
AS
oo
-b
A
S
1Is
5:
A
SA
S
AS
S
b
A
SA
A
a
A
t
6:
A
SA
S
AS
S
AS
S
b
A
SA
A
a
a
a
DFA
构造LR(O)项目集规范族也可以用GO函数来计算得到。
所得到的项目集规范族与上图中的
项目集一样:
I0={SGO(GO(GO(GO(GO(GO(GO(GO(GO(GO(GO(GO(GO(GO(GO(GO(GO(GO(GO(GO(GO(GO(GO(GO(
I0
I0
I0
I0
I3
I3
I3
I3
,a)={,b)={,S)={,A)={,a)={,b)={,S)={,A)={
a)={b)={S)={A)={
I4,I4,I4,I4,
,a)={
I5
I5
I5
I5
I6,
I6,
I6,
6,
,b)={,S)={,A)={a)={b)={S)={A)={
7
I7
I7
I7
,a)={,b)={,S)={,A)={
S,S
ASSSASAAASSSASAAASSSASAA
AS,
a
b
S,AS,abSA,SA,abAS,AS,S}=}=S
abSA,SA,
abAS,
项目集规范族为
S
}=
}=
A
S
}=
}=
S
S}=}=
A
}=
}=
A
AS,S}=}=SS
a
b
SA,
SA,
C={I1,I2,
(3)不是SLR文法
状态
3,
6,7有移进归约冲突
状态
3:
状态
6:
状态
7:
所以不是
SA,A
a}
I1
I2
SA,A
AS,S
I1
I2
AS,SAS,I1I2
SA,
AS,I1I2
AS,SAS,I1I2
SA,
AS,I1I2
AS,SAS,
I3,I4,
I5,
FOLLOW(S')={#}不包含a,b
FOLLOW(S)={#,a,b}包含a,b,;
SA,b,A
b,A
AS,
Aa,S
SA,A
AS,b,A
b,A
AS,
SA,A
b,
b,
SA,
SA,
b,
AS,Sa}=I4
a}=I
SA,
SA,a}=
a}=I
SA,
b}=I3
A
I4
a}=
a}=
a}=
I6
I7
I6
AS,b,A
b,
SA,
SA,a}=
A
I4
a}=
I7
b,A
AS,S
SA,
b,A
a}=I5SA,A
a}=
I6
I6,I7}
移进归约冲突无法消解
FOLLOW(A)={a,b}包含a,b;移进归约冲突消解
SLR文法。
(4)构造例如LR
(1)项目集规范族
见下图:
对于状态5,因为包含项目[AASa/b],所以遇至U搜索符号a或b时,应该用AAS归约。
又因为状态5包含项目[Aaa/b],所以遇到搜索符号a时,应该移进。
因此
存在“移进-归约”矛盾,所以这个文法不是LR
(1)文法。
b
1:
S
S
#
A
SA
a/b
A
SA
a/b
A
a
a/b
S
AS
a/b
S
b
a/b
b
5:
A
SA
a/b
S
AS
a/b
S
AS
a/b
S
b
a/b
A
SA
a/b
A
a
a/b
b
8:
S
AS
a/b
S
AS
a/b
S
b
a/b
A
SA
a/b
A
a
a/b
S
3:
S
a
3:
A
a
a
Aaa/b
0:
S
S
#
S
AS
#/a/b
S
b
#/a/b
A
SA
a/b
A
a
a/b
S
a
6:
A
SA
a/b
A
SA
a/b
A
a
a/b
S
AS
a/b
S
b
a/b
4:
Sb#/a/b
9:
S
AS
a/b
A
SA
a/b
A
SA
a/b
A
a
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 基本知识 第三 课后 答案 解析