陈火旺编译原理第三版课后习题答案.docx
- 文档编号:24314798
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:45
- 大小:531.78KB
陈火旺编译原理第三版课后习题答案.docx
《陈火旺编译原理第三版课后习题答案.docx》由会员分享,可在线阅读,更多相关《陈火旺编译原理第三版课后习题答案.docx(45页珍藏版)》请在冰豆网上搜索。
陈火旺编译原理第三版课后习题答案
第二章
P36-6
⑴
L(G)是o~9组成的数字串
⑵
最左推导:
N=ND=NDD=NDDD=DDDD=ODDD=01DD=012D=0127
N=ND=DD=3D=34
N=ND=NDD=DDD=5DD=56D=568
最右推导:
N=ND=N7=ND7=N27=ND27=N127=D127=0127
N=ND=N4=D4=34
N=ND=N8=ND8=N68=D68=568
P36-7
G(S)
O>1|3|5|7|9
N>2∣4∣6∣8∣O
D>0|N
S>OlAo
A—;AD|N
P36-8
文法:
EτTE+T|E—T
TTFT*F|T/F
F>(E)|i
最左推导:
E=ET=TT=FT=iT=iT*F=iF*F=ii*F=ii*i
E=T=T*F二F*F二i*F=i*(E)=i*(ET)二i*(TT)二i*(FT)
=i*(iτ)=i*(iF)=i*(ii)
最右推导:
E=ET-ET*F=ET*i=EF*i=Ei*i=Ti*i=Fi*i=ii*iE=T=F*T=F*F=F*(E)=F*(ET)=F*(EF)=F*(Ei)
=F*(Ti)=F*(Fi)=F*(ii)=i*(ii)
^语法树./********************************
E
TFi
E
FFi
E
TFi
i
i+i+i
i-i-i
i
i+i*i
***************
**/
P36-9
句子iiiei有两个语法树:
S=iSeS=iSei=iiSei=iiieiS=iS=iiSeS=iiSei=iiiei
P36-10
/**************
S>TS|T
T>(S)∣()
***************/
P36-11
/***************
L1:
S>AC
A—aAb|abC—CC|;
L2:
S>AB
A—:
aA|;
B—bBc|bc
L3:
S>AB
AraAb|;
B>aBb|;
L4:
S>A|B
A》0A1∣;
B>1B0|A
*************
**/
第三章习题参考答案
P64—7
确定化:
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,1,2,3,4,5},{6}
{0,1,2,3,4,5}°={135}{O,123,4,5}1={1,2,4Q
{0,1,2,3,4},{5},{6}
{0,1,2,3,4}0√1,3,5}
{0,1,23,{4},{5},{6}
{0,1,23°={1,3}{0,1,2,3}1={1,2,4}
{0,1},{23{4},{f},{6}
{0,1}°={1}{0,1}1={1,2}
{2,3}0={3{231={4}
{0},{1},{2,3},{4},{5},{6}
P64-8
⑴
(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
{0}
{0,1}
{1}
{0,1}
{0,1}
{1}
{1}
{0}
φ
φ
φ
φ
给状态编号:
a
b
0
1
2
1
1
2
2
0
3
3
3
3
a
a
a
0
b
b
b
2
最小化:
{0,1},{2,3}
{0,1}a={1}{0,1}b={2}{2,3}a={0,3}{2,3}b={3}
{0,1},{2},{3}
已经确定化了,进行最小化
最小化:
{{O,1},{2,3,4,5}}
{0,1}a={1}{0,叽={2,4}
{2,3,4,5}a={1,3,0,5}{2,3,4,5}^{2,3,4,5}
{2,4}a={1,0}{2,4}b={3,5}
{3,5}a={3,5}{3,5}b={2,4}
{0,1}b={2,4}
{2,4打={3,5
{3,5}b={2,4}
{{0,1},{2,4},{3,5}}
{0,1}aH1}
{2,4}a={1,0}
{3,5}a={3,5}
确定化:
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,1},{2,3
{0,1}o√1}{0,1}ι={2}
{2,3}o={1,3}{2,3}^{3}
{0,1},{2},{3}
P81-1
(1)按照τ,s的顺序消除左递归
G(S)
S>a∣^∣仃)
T>ST
TrST|;
递归子程序:
ProCedUreS;
begin
ifsym='a'orsym='^'
thenabvance
elseifsym='('
thenbegin
advance;T;
ifsym=')'thenadvance;elseerror;
end
elseerror
end;
PrOCedUreT;
begin
S;T
end;
PrOCedUreT;
begin
ifsym=','
thenbegin
advance;
S;T
end
end;
其中:
Sym:
是输入串指针IP所指的符号advance:
是把IP调至下一个输入符号error:
是出错诊察程序
⑵
FlRST(S)={a,^,(}
FIRST(T)={a,^,(}
FIRST(T)={,,J
FoLLoW(S)={),,,#}
FoLLoW(T)={)}
FOLLOWT)={)}
预测分析表
a
^
(
)
#
S
STa
Sτ^
ST(T)
T
:
TTSTH
:
TTST
TTST
TH
TJ名
T'T,ST
是LL
(1)文法
P81-2
文法:
E>TE
E^E|;
T>FT
T》TI;
F-PF
F>*FI;
P>(E)∣a∣b∣^
(1)
FIRST(E)={(,a,b,^}
FIRST(E')={+,ε}
FIRST(T)={(,a,b,^}
FIRST(T')={(,a,b,^,ε}
FIRST(F)={(,a,b,^}
FIRST(F')={*,ε}
FIRST(P)={(,a,b,^}
FoLLoW(E)={#,)}
FoLLoW(E')={#,)}
FOLLOW(T)={+,),#}
FOLLOW(T')={+,),#}
FOLLOW(F)={(,a,b,^,+,),*}
FOLLOW(F')={(,a,b,^,+,),*}
FOLLOW(P)={*,(,a,b,^,+,),*}
⑵
考虑下列产生式:
E,E|;
TJT|:
FJ*F|:
P>(E)|A|a|b
FIRST(+E)∩FIRST(ε)={+}∩{ε}=φ
FIRST(+E)∩FOLLOW(E')={+}∩{#,)}=φ
FIRST(T)∩FIRST(ε)={(,a,b,^}∩{ε}=φ
FIRST(T)∩FOLLOW(T')={(,a,b,^}∩{+,),#}=φ
FIRST(*F')∩FIRST(ε)={*}∩{ε}=φ
FIRST(*F')∩FOLLOW(F')={*}∩{(,a,b,^,+,),*}=φFIRST((E))∩FIRST(a)∩FIRST(b)∩FIRST(^)=φ所以,该文法式LL
(1)文法.
⑶
+
*
(
)
a
b
^
#
E
EτTE'
EτTE'
EτTE'
EτTE'
E'
EJ+E
EJS
EJ8
T
TTFTH
TTFTH
TTFTH
TTFTH
T'
TJE
TJT
TJE
TJT
TJT
TJT
TJJ
F
FTPi
FTPL
FTPL
FTPF*
F'
F'τ*F'
:
FJE
FJS
FJg
FJS
FJ名
FJS
P
PT(E)
PTa
PTb
PT^
⑷
ProCedUreE;
begin
ifsym='('orsym='a'orsym='b'orsym='^'thenbeginT;E'endelseerror
end
PrOCedUreE';
begin
ifsym='+'
thenbeginadvance;Eend
elseifsym<>')'andsym<>'#'thenerrorend
PrOCedUreT;
begin
ifsym='('orsym='a'orsym='b'orsym='^'thenbeginF;T'endelseerror
end
PrOCedUreT';
begin
ifsym='('orsym='a'orsym='b'orsym='^'thenT
elseifsym='*'thenerror
end
PrOCedUreF;
begin
ifsym='('orsym='a'orsym='b'orsym='^'thenbeginP;F'endelseerror
end
PrOCedUreF';
begin
ifsym='*'
thenbeginadvance;F'end
end
PrOCedUreP;
begin
ifsym='a'orsym='b'orsym='^'
thenadvance
elseifsym='('then
begin
advance;E;
ifsym=')'thenadvance
elseerror
end
elseerror
end;
P81-3
/***************
(1)是,满足三个条件。
(2)不是,对于A不满足条件3。
(3)不是,A、B均不满足条件3。
(4)是,满足三个条件。
***************/
第五章
P133-1
E=ET=ET*F
短语:
E+T*F,T*F,
直接短语:
T*F
句柄:
T*F
P133-2
文法:
S>a∣^∣(T)
T>T,S|S
(1)
最左推导:
S=(T)=(T,S)=(S,S)=(a,S)=(a,(T))=(a,(T,S))=(a,(S,S))=(a,(a,S))=(a,(a,a))
S=(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)
最右推导:
S=(T)=(T,S)二(T,(T))二(Tl(TlS)^(Tl(Tla)^(Tl(Sla)^(T,(a,a))
=(SI(aIa)^=(a,(aIa))
S=(TIS)=(TIa)=(SIa)=((T)Ia)=((TIS)Ia)=((TI(T))Ia)=((TI(S)),a)
=((T,(a)),a)=((T,S,(a)),a)二((T,^,(a)),a)二((S,^,(a)),a)=(((T),^,(a)),a)=(((T,S)l^,(a)),a)=(((T,a),^,(a)),a)=(((S,a),^,(a)),a)=(((a,a),^,(a)),a)⑵
(((a,a),^,(a)),a)
(((Sm),^,(a)),a)
(((T,a),^,(a)),a)
(((TS),^,(a)),a)
(((TL,^,(a)),a)
((S,^,(a)),a)((T,^,(a)),a)
((TS,(a)),a)
((T,(a)),a)
((T,(S)),a)
((T,(T)),a)
((TS),a)
((ILa)
(S,a)
(LS)
(TL
S
“移进-归约”过程:
步骤
栈
输入串
动作
0
#
(((a,a),^,(a)),a)#
预备
1
#(
((a,a),^,(a)),a)#
进
2
#((
(a,a),^,(a)),a)#
进
3
#(((
a,a),^,(a)),a)#
进
4
#(((a
a),^,(a)),a)#
进
5
#(((S
a),^,(a)),a)#
归
6
#(((T
a),^,(a)),a)#
归
7
#(((T,
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)#
进
15
#((T,^
(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)
FlRSTVT(S)={a,^,(}FlRSTVT(T)={,,a,^,(}LASTVT(S)={a,^,)}LASTVT(T)={,,a,^,)}⑵
a
^
(
)
5
a
>
>
^
>
>
(
V
V
V
=
V
)
>
>
5
V
V
V
>
>
G6是算符文法,并且是算符优先文法
(3)优先函数
a
^
(
)
5
f
4
4
2
4
4
g
5
5
5
2
3
(4)
栈
输入字符串
动作
#
(a,(a,a))#
预备
#(
a,(a,a))#
进
#(a
(a,a))#
进
#(t
(a,a))#
归
#(t,
(a,a))#
进
#(t,(
a,a))#
进
#(t,(a
a))#
进
#(t,(t
a))#
归
#(t,(t,
a))#
进
#(t,(t,a
))#
进
#(t,(t,s
))#
归
#(t,(t
))#
归
#(t,(t)
)#
进
#(t,s
)#
归
#(t
)#
归
#(t)
#
进
#S
#
归
SUCCeSS
P134-5
(1)
O.SrS1.SrS■2.S'AS3.SrAS
4.SrAS'5.Srb6.Srb■7.ArSA
8.A-∙∙SA9.ArSA■10.Ara11.Ara■
⑵
确定化:
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}
⑹
}
}
{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}
φ
φ
φ
φ
DFA
构造LR(O)项目集规范族也可以用Go函数来计算得到。
所得到的项目集规范族与上图中的
项目集一样:
l0={SrS,SrAS,Srb,ArSA,Ara}
GO(10,a)={A-a}=Ii
GO(IO,b)={Srb}=12
GO(IO,S)={SrS,ArSA,ArSA,Ara,S"AS,Srb}=I3
GO(I0,A)={
S>AS,
S
>AS,
S>
b,
A>SA,
A>
a}=I
4
GO(13,a)={
A—;a
}=I
1
GO(13,b)={
Srb
}=i
2
GO(I3,S)={
A—:
SA,
S>
AS,
S>
b,A_SA,
A>
a}=15
GO(13,A)={
A>SA,
S>
AS,
S>
AS,
S-b,
A>
SA,
A>
a
}=16
GO(I4,a)={
Ara
}=I
1
GO(I4,b)={
S》b
}=I
2
GO(I4,S)={
S>AS■,
A>
SA,
S)
AS,
Srb,
A)
SA,
A>
a
}=I7
GO(I4,A)={
S>AS,
S
>AS,
S>
b,
A>SA,
A>
a}=I
4
GO(15,a)={
Ara
}=I
1
GO(15,b)={
Srb
}=i
2
GO(I5,S)={
A—:
SA,
S>
AS,
S>
b,A—TSA,
A>
a}=i5
GO(15,A)={
A>SA,
S>
AS,
S>
AS,
Srb,
A>
SA,
A>
a
}=16
GO(16,a)={
A-a
}=I
1
GO(16,b)={
Srb
}=i
2
GO(I6,S)={
S■■AS■,
A>
SA,
S—
AS,
Srb,
A>
SA,
A>
a
}=17
GO(16,A)={
S>AS,
S—
>AS,
S—
b,,
A》SA,
A>
a}=I
4
GO(17,a)={
A-a
}=I
1
GO(17,b)={
SJb
}=I
2
GO(I7,S)={
AJSA,
S—
AS,
S—
b,A—SA,
A>
a}=i5
GO(17,A)={
A—SA■,
S—■
AS,
S—■
AS,
Srb,
A>
SA,
A>
a
}=16
项目集规范族为
C={11,I
2,1
3,14,
I5,
∣6,I
∣7}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 陈火旺 编译 原理 第三 课后 习题 答案