编译原理课后复习题答案陈火旺+第三版.docx
《编译原理课后复习题答案陈火旺+第三版.docx》由会员分享,可在线阅读,更多相关《编译原理课后复习题答案陈火旺+第三版.docx(40页珍藏版)》请在冰豆网上搜索。
![编译原理课后复习题答案陈火旺+第三版.docx](https://file1.bdocx.com/fileroot1/2022-10/13/a1f8c75b-9360-4539-98e5-dca9438952c6/a1f8c75b-9360-4539-98e5-dca9438952c61.gif)
编译原理课后复习题答案陈火旺+第三版
第二章
P36-6
(1)
L(Gi)是o~9组成的数字串
(2)最左推导:
N
ND
NDD
NDDDDDDD
0DDD
01DD
012D0127
N
ND
DD
3D34
N
ND
NDD
DDD5DD
56D
568
最右推导:
N
ND
N7
ND7N27
ND27
N127
D127
0127
N
ND
N4
D434
N
ND
N8
ND8N68
D68
568
P36-7
G(S)
O1|3|5|7|9
N2|4|6|8|O
D0|N
SO|AO
AAD|N
P36-8
文法:
ET|ET|ET
TF|T*F|T/F
F(E)|i
最左推导:
EE
TTTF
T
iT
iT*F
iF*Fi
i*Fii*i
ET
T*F
F*F
i
*F
i*(
E)i*(E
T)
i*(T
T)i*(FT)
i*(i
T)i
*(iF)
i
*(ii
)
最右推导
EE
TE
T*F
E
T*i
E
F*iE
i*i
Ti*
iFi*iii*
ET
F*T
F*F
F
*(E)
F
*(ET)
F*(E
F)
F*(Ei)
F*(T
i)
F*(Fi)
F*(i
i)
i*(ii)
/********************************
P36-9
句子iiiei有两个语法树:
SiSeSiSeiiiSeiiiiei
SiSiiSeSiiSeiiiiei
P36-10
/**************
STS|T
T(S)|()
***************/
P36-11
/***************
L1:
SAC
AaAb|abCcC|
L2:
SAB
AaA|
BbBc|bc
L3:
SAB
AaAb|
BaBb|
L4:
SA|B
A0A1|
B1B0|A
***************/
第三章习题参考答案
P64-7
确定化:
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,}
最小化:
{0,1,2,3,4,5},{6}
{0,123,4,5}。
{1,3,5}{0,1,2,3,4,5}1{1,2,4©
{0,1,2,3,4},{5},{6}
{0,1,2,34}。
{1,3,5}
{0,1,23,{4},{5},{6}
{0,1,23。
{1,3}{0,123^{1,2,4}
{0,1},{2,0}{4},{$,{6
{0,1}0{1}{0,1}1{1,2}
{2,3}0B门匡{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)
01(0|101)|10(0|101)
P64-12
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
最小化:
{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}
已经确定化了,进行最小化
最小化:
{{0,1},{2,3,4,5}}
{0,1}a{1}{0,1}b{2,4}
{2,3,4,5爲{1,3,0,5}{2,3,4,5}b{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},{2,4},{3,5}}
{0,1}a
{2,4}a
{3,5}a
{1}
{1,0}
{3,5}
{0,叽{2,4}
{2,4}b
{3,5}b
{3,5}
{2,4}
⑵:
0
0
1
{X,1,Y}
{1,Y}
{2}
确定化:
{1,Y}
{1,Y}
{2}
{2}
{1,Y}
0
0
0
0
给状态编号:
0
1
0
1
2
1
1
2
2
1
3
3
3
3
最小化:
{0,1},{2,3
{0,1}0{1}{0,1}1{2}
{2,3}o{1,3}{2,3}i{3}
{0,1},{2},{3}
P81-1
(1)按照T,S的顺序消除左递归
G(S)
SaF|(T)
TST
T,ST|
递归子程序:
procedureS;
begin
ifsym='a'orsym='人'
thenabvanee
elseifsym='('
thenbegin
advance;T;
ifsym=')'thenadvanee;elseerror;
end
elseerror
end;
procedureT;
begin
S;T
end;
procedureT;
begin
ifsym=','
thenbegin
advanee;
S;T
end
end;
其中:
sym:
是输入串指针IP所指的符号
advanee:
是把IP调至下一个输入符号error:
是出错诊察程序
⑵
FIRST(S)={a],(}
FIRST(T)={af,(}
FIRST(T)={,,}
FOLLOW(S)={),,,#}
FOLLOW(T)={)}
FOLLOWT)={)}
预测分析表
a
A
(
)
J
#
S
Sa
SA
S(T)
T
rTST
rTST
TST
T
T
T,ST
是LL
(1)文法
P81-2
文法:
ETE
EE|
TFT
TT|
FPF
F*F|
P(E)|a|b$
(1)
FIRST(E)={(,a,bf}
FIRST(E')={+,£}
FIRST(T)={(,a,b]}
FIRST(T')={(,a,b,A,£}
FIRST(F)={(,a,b,A}
FIRST(F')={*,£}
FIRST(P)={(,a,bf}
FOLLOW(E)={#,)}
FOLLOW(E')={#,)}
FOLLOW(T)={+,),#}
FOLLOW(T')={+,),#}
FOLLOW(F)={(,a,b,A,+,),#}
FOLLOW(F')={(,a,b,A,+,),#}
FOLLOW(P)={*,(,a,bf,+,),#}
⑵
考虑下列产生式:
EE|
TT|
F*F|
P(E)|A|a|b
FIRST(+E)AFIRST(£)={+}n{£}=$
FIRST(+E)AFOLLOW(E')={+}A{#,)}=$
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)文法.
⑶
+
*
(
)
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
F
PF
F
PF
F
PF
FPF
F'
F
F*F
F
F
F
F
F
F:
P
P
(E)
P
a
P
b
PA
⑷
procedureE;
begin
ifsym='('orsym='a'orsym='b'orsym='人'thenbeginT;E'endelseerror
end
procedureE:
begin
ifsym='+'
thenbeginadvanee;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='*'
thenbeginadvanee;F'end
end
procedureP;
begin
ifsym='a'orsym='b'orsym='A'
thenadvanee
elseifsym='('then
begin
advanee;E;
ifsym=')'thenadvaneeelseerrorendelseerror
end;
P81—3
/***************
(1)是,满足三个条件。
(2)不是,对于A不满足条件3。
(3)不是,AB均不满足条件3。
(4)是,满足三