陈火旺编译原理课后习题答案Word格式.docx
《陈火旺编译原理课后习题答案Word格式.docx》由会员分享,可在线阅读,更多相关《陈火旺编译原理课后习题答案Word格式.docx(39页珍藏版)》请在冰豆网上搜索。
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)
*(ii
)
最右推导
TE
E
T*i
F*iE
i*i
Ti*
iFi*iii*
F*T
F
*(E)
*(ET)
F*(E
F)
F*(Ei)
F*(T
i)
F*(Fi)
F*(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:
AaAb|
BaBb|
L4:
SA|B
A0A1|
B1B0|A
第三章习题参考答案
P64-7
确定化:
1
{X}
{1,2,3}
{2,3}
{2,3,4}
{2,3,5}
{2,3,4,Y}
{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}
给状态编号:
2
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,0}
{3,5}
{0,叽{2,4}
{2,4}b
{3,5}b
{2,4}
⑵:
{X,1,Y}
{1,Y}
{2}
{1,Y}
{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的顺序消除左递归
SaF|(T)
TST
T,ST|
递归子程序:
procedureS;
begin
ifsym='
a'
orsym='
人'
thenabvanee
elseifsym='
('
thenbegin
advance;
T;
)'
thenadvanee;
elseerror;
end
elseerror
end;
procedureT;
S;
procedure;
'
advanee;
其中:
sym:
是输入串指针IP所指的符号
advanee:
是把IP调至下一个输入符号error:
是出错诊察程序
⑵
FIRST(S)={a],(}
FIRST(T)={af,(}
FIRST()={,,}
FOLLOW(S)={),,,#}
FOLLOW(T)={)}
FOLLOW()={)}
预测分析表
A
(
J
#
S
是LL
(1)文法
P81-2
文法:
ETE
EE|
TFT
TT|
FPF
F*F|
P(E)|a|b$
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|
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{£
)AFOLLOW(F'
)={*}A{(,a,b,A,+,),#}=$
FIRST((E))AFIRST(a)AFIRST(b)AFIRST(A)=$所以,该文法式LL
(1)文法.
⑶
+
*
ETE'
E'
EE
T'
TT
PF
F'
F*F
F:
P
(E)
PA
⑷
procedureE;
b'
thenbeginT;
E'
endelseerror
procedureE:
+'
thenbeginadvanee;
Eend
elseifsym<
>
'
andsym<
#'
thenerrorend
thenbeginF;
T'
procedureT'
;
thenT
*'
thenerror
procedureF;
thenbeginP;
F'
procedureF'
end
procedureP;
A'
thenadvanee
then
E;
thenadvaneeelseerrorendelseerror
P81—3
(1)是,满足三个条件。
(2)不是,对于A不满足条件3。
(3)不是,AB均不满足条件3。
(4)是,满足三个条件。
*******