资源描述:
《编译原理第三版课后习题解答.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、......第二章习题解答P36-6(1)是0~9组成的数字串(2)最左推导:最右推导:P36-7G(S)P36-8文法:最左推导:.学习参考.......最右推导:语法树:/*************************************************/P36-9句子iiiei有两个语法树:P36-10/*****************************/.学习参考.......P36-11/***************L1:L2:L3:L4:***************/
2、第三章习题参考答案P64–7(1)XYX1234Y50.学习参考.......11011确定化:01{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,}0320101001106540101.学习参考.......11最小化:002110010543010111P64–8(1)(2)(3).学习参考.......P64–12(a)
3、a10a,ba确定化:ab{0}{0,1}{1}{0,1}{0,1}{1}{1}{0}φφφφ给状态编号:ab012112203333.学习参考.......a10aabbb32ba最小化:aa210bbab.学习参考.......(b)032bbaabaab541baaa已经确定化了,进行最小化最小化:021bbaab.学习参考.......aP64–14(1)01010(2):YX201Y1X0.学习参考.......确定化:01{X,1,Y}{1,Y}{2}{1,Y}{1,Y}{2}{2}{1,Y}φ
4、φφφ给状态编号:01012112213333010010321110最小化:.学习参考.......031011100第四章P81–1(1)按照T,S的顺序消除左递归递归子程序:procedureS;beginifsym='a'orsym='^'thenabvanceelseifsym='('thenbeginadvance;T;ifsym=')'thenadvance;.学习参考.......elseerror;endelseerrorend;procedureT;beginS;end;procedur
5、e;beginifsym=','thenbeginadvance;S;endend;其中:sym:是输入串指针IP所指的符号advance:是把IP调至下一个输入符号error:是出错诊察程序(2)FIRST(S)={a,^,(}.学习参考.......FIRST(T)={a,^,(}FIRST()={,,}FOLLOW(S)={),,,#}FOLLOW(T)={)}FOLLOW()={)}预测分析表a^(),#ST是LL(1)文法P81–2文法:(1)FIRST(E)={(,a,b,^}FIRST(E')
6、={+,ε}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,^,+,),#}(2)考
7、虑下列产生式: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(^)=φ所以,该文法
8、式LL(1)文法..学习参考.......(3)+*()ab^#EE'TT'FF'P(4)procedureE;beginifsym='('orsym='a'orsym='b'orsym='^'thenbeginT;E'endelseerrorendprocedureE';beginifsym='+'thenbeginadvance;Eendelseifsym<>')'andsym<>'#'thenerroren