编译原理第三版课后答案.docx
《编译原理第三版课后答案.docx》由会员分享,可在线阅读,更多相关《编译原理第三版课后答案.docx(38页珍藏版)》请在冰豆网上搜索。
编译原理第三版课后答案
编译原理_第三版_课后答案
编译原理课后题答案
第二章
P36-6
(1)
是0~9组成的数字串
⑵
最左推导:
N=ND=NDD=NDDD=DDDD=ODDD=O1DD=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|0
D、0|N
S>0|A0
A>AD|N
P36-8
文法:
ETTE+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*(iT)二i*(iF)=i*(ii)
最右推导:
E=ET=ET*F=ET*i=EF*i=Ei*i=Ti*i=Fi*i=ii*i
E=T=F*T=F*F=F*(E)=F*(ET)=F*(EF)=F*(Ei)
=F*(Ti)=F*(Fi)=F*(ii)=i*(ii)
/********************************
i
i+i+i
i-i-i
i
i+i*i
*****************
P36-9
句子iiiei有两个语法树:
S二iSeS二iSei二iiSei=iiiei
S=iS=iiSeS=iiSei=iiiei
P36-10
/**************
S>TS|T
T>(S)|()
***************
***************
L1:
S>AC
AraAb|ab
CrcC|;
L2:
S>AB
A》aA|;
BrbBc|bc
L3:
S>AB
A—:
aAb|;
B=aBb|;
L4:
S>A|B
A—;0A1|;
B-1B0|A
***************/
第三章习题参考答案
P64-7
1(01)*101
1101
确定化:
0
1
{X}
0
{1,2,3}
0
0
0
{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,}
10
11
最小化:
{0,1,2,3,4,5},{6}
{0,123,4,5}。
={135}{0,1,2,3,4,5}^{1,2,4,6}
{0,1,2,3,4},{5},{6}
{0,123,4}。
={1,3,5}
{0,1,23,{4},{5},{6}
{0,1,23°={1,3}{0,1,2,3}厂{1,2,4}
{0,1},{2,0}{4},{$,{6
{0,1}0<1}{0,1}厂{1,2}
{2,3}厂{3{23厂{4}
{0},{1},{2,3},{4},{5},{6}
0010
01
0
1
11
(1|0)*01
(2)
⑴2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*(0|5)|(0|5)
(3)
0*1(0|10*1)*|1*0(0|10*1)*
P64-12
(a)
a,b
a
确定化:
a
b
{0}
{0,1}
{1}
{0,1}
{0,1}
{1}
{1}
:
{0}
0
0
0
0
给状态编号:
a
b
0
1
2
1
1
2
2
0
3
3
3
3
abbb
最小化:
{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}
aa
bb
a
b
(b)
bba
ab
a
ab
ba
aa
已经确定化了,进行最小化
最小化:
{{0,1},{2,3,4,5}}
{0,1}a={1}{0,1}b={2,4}
{2,3,4,5}a二{1,3,0,5{2,3,4,5}b二{2,3,4,5}
{2,4}a二{1,0{2,4}厂{3,5
{3,5L二{3,5{3,5}厂{2,4}
{{0,1},{2,4},{3,5}}
{0,1}a二{1}{0,1}b二{2,4}
{2,4人二{1,0{2,4}严{3,5
{3,5L二{3,5}{3,5}厂{2,4}
•・A
bba
aba
P64-14
(1)0
1
=>:
0
⑵:
确定化:
0
1
{X,1,Y}
{1,Y}
{2}
{1,Y}
{1,Y}
{2}
{2}
r{1,Y}
0
0
0
0
给状态编号:
0
1
0
1
2
1
1
2
2
1
3
3
3
3
第四章
10
11
1
0
最小化:
{0,1},{2,3
{0,1}。
={1}{0,1}^{2}
{2,3}。
={1,3}{2,3h二{3}
{0,1},{2},{3}
0
111
0
0
P81—1
(1)按照T,S的顺序消除左递归
G(S)
S>af|仃)
T>ST
T>,ST|;
递归子程序:
procedureS;
begin
ifsym='a'orsym='A'
thenabvanee
elseifsym='('
thenbegin
advance;T;
ifsym=')'thenadvanee;
elseerror;
end
elseerror
end;
procedureT;
begin
S;
end;
procedure;
begin
ifsym二','
thenbegin
advanee;
S;
end
end;
其中:
sym:
是输入串指针IP所指的符号
advanee:
是把IP调至下一个输入符号
error:
是出错诊察程序
FIRST(S)二{a,八,(}
FIRST(T)二{a,八,(}
FIRST()={,,}
FOLLOW(S)={),,,#}
FOLLOW(T)={)}
FOLLOW()={)}
预测分析表
a
A
(
)
J
#
S
Sta
Sta
St(T)
T
:
Ttst
rtts「
TtST'
TJs
TJ,ST
是LL
(1)文法
P81-2
文法:
E>TE
EEp
T>FT
TJT|;
F>PF
F"―;*F|;
P>(E)|a|b|A
(1)
FIRST(E)二{(,a,b"}
FIRST(E')二{+,£}
FIRST(T)={(,a,b,A}
FIRST(T')={(,a,b,A,&}
FIRST(F)={(,a,b,A}
FIRST(F')={*,£}
FIRST(P)={(,a,b,A}
FOLLOW(E)二{#,)}
FOLLOW(E')二{#,)}
FOLLOW(T)二{+,),#}
FOLLOW(T')二{+,),#}
FOLLOW(F)={(,a,b,"+,),#}
FOLLOW(F')二{(,a,b,"+,),#}
FOLLOW(P)二{*,(,a,b,"+,),#}
⑵
考虑下列产生式
E>E|;
T>T|;
FJ*F|;
P>(E)|A|a|b
FIRST(+E)QFIRST(£)={+}A{£}=©
FIRST(+E)AFOLLOW(E')二{+}Q{#,)}=©
FIRST(T)AFIRST(£)={(,a,b,A}A{£}=©
FIRST(T)AFOLLOW(T')={(,a,b,A}A{+,),#}=©
FIRST(*F')AFIRST(£)={*}A{£}=©
FIRST(*F')AFOLLOW(F')二{*}A{(,a,b,A,+,),#}=©
FIRST((E))AFIRST(a)AFIRST(b)AFIRST(A)=©所以,该文法式LL
(1)文法.
(3)
+
*
(
)
a
b
A
#
E
EtTE'
EtTE'
EtTE'
EtTE'
E'
EE
EJ名
EJs
T
Tt
TtF「
TtFT*
TtFT
T'
TJE
TJT
TJ「
Ttt
TtT
TtT
Tts
F
FtPF'
FtPF'
FtPF'
FtPF'
F'
FJe
F
FJe
FJg
FJ名
FJ8
FJE
FJ8
P
Pt(E)
Pta
Ptb
Pta
⑷
procedureE;
begin
ifsym='('orsym='a'orsym='b'orsym='A'
thenbeginT;E'end
elseerror
end
procedureE:
begin
ifsym='+'
thenbeginadvanee;Eend
elseifsym<>')'andsym<>'#'thenerror
end
procedureT;
begin
ifsym='('orsym='a'orsym='b'orsym='A'
thenbeginF;T'end
elseerror
end
procedureT:
begin
ifsym='('orsym='a'orsym='b'orsym='A'thenT
elseifsym='*'thenerror
end
procedureF;
begin
ifsym='('orsym='a'orsym='b'orsym='A'
thenbeginP;F'end
elseerror
end
procedureF:
be