编译原理及实现课后习题答案(一).pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《编译原理及实现课后习题答案(一).pdf》由会员分享,可在线阅读,更多相关《编译原理及实现课后习题答案(一).pdf(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2.1 设字母表人=m ,符号串x=aaa,写出下列符号串及其长度:x0,xx,x5以及 A+和 A*.x=(aaa)=|x|=0 xx=aaaaaa|xx|=6x=aaaaaaaaaaaaaaa|x5|=15A+=A,U A2 U.U An U.=a,aa,aaa,aaaa,aaaaa.A*=A0 U A1 U A2 U.U A nU.=E,a,aa,aaa,aaaa,aaaaa.2.2 令工=m,b,c ,又令x=abc,y=b,z=aab,写出如下符号串及它们的长度:xy,xyz,(xy)3xy=abcb|xy|=4xyz=abcbaab|xyz|=7(xy)3=(abcb)3=abcb
2、abcbabcb|(xy)31=122.3 设有文法GS:S:=SS*|SS+|a,写出符号串aa+a*规范推导,并构造语法树。S=SS*=Sa*=SS+a*=Sa+a*=aa+a*2.4 已知文法 GZ:Z:=UO I V I、U:=Z1|1、V:=ZO|O,请写出全部由此文法描述的只含有四个符号的句子。Z=U0=Z10=U010=1010Z=U0=Z10=V110=0110Z=Vl=Z01=U001=1001Z=Vl=Z01=V101=01012.5 已知文法GS:S:=AB A:=aA|e B:=bBc|be,写出该文法描述的语言。A:=aA|e描述的语言:口加王。B:=bBc|be 描
3、述的语言:bncn|n=lL(GS)=anbmcm|n=O,rn=l2.6 已知文法 E:=T I E+T I E-T、T:=F|T*F|T/F、F:=(E)|i,写出该文法的开始符号、终结符号集合VT、非终结符号集合VN。开始符号:EVt=+,(,),i)Vn=E,F,T)2.7 对 2.6题的文法,写出句型T+T*F+i的短语、简单短语以及句柄。短语:T+T*F+i T+T*FTT*F简单短语:i T*FT句柄:T2.8 设有文法GS:S:=S*S|S+S|(S)|a,该文法是二义性文法吗?根据所给文法推导出句子a+a*a,画出了两棵不同的语法树,所以该文法是二义性文法。2.9 写一文法,
4、使其语言是奇正整数集合。A:=1|3|5|7|9|NAN:=0|l|2|3|4|5|6|7|8|92.10 给出语言 anbm|n,mNl 的文法。GS:S:=ABA:=aA|aB:=bB|b3.1 有正则文法 GZ:Z:=Ua|Vb,U:=Zb|b,V:=Za|a,画出该文法的状态图,并检查句子abba是否合法。解:该文法的状态图如下:句子abba合法。3.2 状态图如图3.35所示,S 为开始状态,Z 为终止状态。写出相应图3-35状态图解:左线性文法GZJ:Z:=Ab|bA:=Aa|aV=Z,A,a,bVn=Z,AVt=a,b右线性文法Gqsj:S:=aA|bA:=aA|bV=S,A,a
5、,bV=S,AVt=a,b3.3 构 造下列正则表达式相应的NFA:1(1|0)*|01(1010*11(010)*1)*0解:正则表达式:1(1|0)*|014、图3.36状态图解:DFA:abq0=00,11ql=O,l0511q2=l0图3.37 DFA状态图解:划分ab0,112,4234,51,3,0,53,5,2,4划分ab0,112,42,40,13,53,53,52,4qO=O,l ql=2,4 q2=3,5化简后的DFA:4.1 对下面文法,设计递归下降分析程序。S-aAS|(A),A-Ab|c解:首先将左递归去掉,将规则A f A b|c改 成 Afcb非终结符号S 的分析
6、程序如下:非终结符号A 的分析程序如下:4.2 设有文法GZ:Z:=(A),A:=a|Bb,B:=Aab若采用递归下降分析方法,对此文法来说,在分析过程中,能否避免回溯?为什么?解:若采用递归下降分析方法,对此文法来说,在分析过程中不能避免回朔。因 为 规 则A:=a|Bb和 规 则B:=Aab构成了间接左递归,不满足实现没有回溯的递归下降分析方法的条 件(1)(书 P67),且规则 A:=a|Bb,FIRST(a)=a,FIRST(Bb)=a,即此规则候选式的首符号集有相交,不满足实现没有回溯的递归下降分析方法的条件(2)(书P67),在分析过程中,将造成回溯。改写文法可避免回溯:将 规 则
7、B:=Aab代入规则A:=a|Bb得:A:=a|Aabb,再转换成:A:=aabb,可避免回溯。4.3 若有文法如下,设计递归下降分析程序。语句 语句 赋值语句|e 赋值语句 一巾=表达式 表达式 f v 项|表达式+项|表达式 一 项项f 因子|项*因子|项/因子)因子f ID|NUM|(表达式)解:首先,去掉左递归语句f 语句赋值语句|e改为:语句 赋值语句 表达式 一 项|表达式+项|表达式-项 改为:表达式礴 (+|-)项 项 一 因子|项*因子|项/因子)改为:项 V 因子 (*|/)因子 则文法变为:语句 V赋值语句 赋值语句f ID=表达式 表达式-v 项 (+|-)v 项 项T
8、因子 (*|/)V 因子 V 因子 f ID|NUM|(V表达式)非终结符号 因子 的分析程序如下:因子f ID|NUM|(表达式)4.4 有文法 GA:A:=aABe|,B:=Bb|b(1)求每个非终结符号的FOLLOW集。(2)该文法是LL(1)文法吗?(3)构造LL(1)分析表。解:(1)FOLLOW(A)=First(B)U#=b,#FOLLOW(B)=e,b(2)该文法中的规则B:=Bb|b为左递归,因此该文法不是LL(1)文法(3)先消除文法的左递归(转成右递归),文法变为:A:=aABe|,B:=bB B,:=bB,该文法的LL分析表为:aeb#APOP,PUSH(eBAa)PO
9、PPOPBPOP,PUSH b)B,POPPOP,PUSH(B9b)aPOP,NEXTSYMePOP,NEXTSYMbPOP,NEXTSYM#ACCEPT更常用且简单的LL(1)分析表:aeb#AA-aABeA f A f BB-bB,B,B f B f bB4.5 若有文法A-(A)A|e(1)为非终结符A 构造FIRST集合和FOLLOW集合。(2)说明该文法是LL(1)的文法。解:(1)FIRST(A)=(,e)FOLLOW(A)=),#(2)该文法不含左递归;FIRST(A)A)=(,FIRST(e)=e ,FIRST(A)A)D FIRST(e)=0,且 FOLLOW(A)=),#,
10、FIRST(A)A)0 FOLLOW(A)=,因此,该文法满足LL(1)文法的条件,是 LL(1)文法。4.6 利用分析表4-1,识别以下算术表达式,请写出分析过程。(1)i+i*i+i(2)i*(i+i+i)解:(1)i+i*i+i步骤分析栈余留输入串分析表元素所用产生式1#Ei+i*i+i#POP,PUSH(E9T)E-TE2#E?Ti+i*i+i#POP,PUSH(T9F)T-F T,3#E9T Pi+i*i+i#POP,PUSH(i)F f4#E T il+i*i+l#POP,NEXTSYM5#E T+i*i+i#POPT f 6#E+i*i+i#POP,PUSH(E,T+)Ef+TE
11、7#E9T+i*i+i#POP,NEXTSYM8#E,Ti*i+i#POP,PUSH(TT)TFT9#E T Fi*i+i#POP,PUSH(i)F-i10#E T ii*i+i#POP,NEXTSYM11#E T*i+i#POP,PUSH(TT*)*FT,12#ETF*i+i#POP,NEXTSYM13#E T Fi+i#POP,PUSH Fi14#E T ii+i#POP,NEXTSYM(2)i*(i+i+i)15#E T+i#POPT f e16#E,+i#POP,PUSH(E,T+)E-+TE17#E9T+i#POP,NEXTSYM18#ETi#POP,PUSH(TT)TFT,19#E
12、 T Fi#POP,PUSH(i)Fi20#E T ii#POP,NEXTSYM21#E T#POPT f e22#E,#POPE f e23#ACCEPT4.7 考虑下面简化了的C 声明文法:步骤分析栈余留输入串分析表元素所用产生式1#Ei*(i+i+i)#POP,PUSH(E,T)E T E,2#E,Ti*(i+i+i)#POP,PUSH(T9F)T3#E T Fi*(i+i+i)#POP,PUSH F f i4#E T il*(i+i+i)#POP,NEXTSYM5#E T*(i+i+i)#POP,PUSH(TT*)T,*FT,6#ETF*(i+i+i)#POP,NEXTSYM7#E T
13、 F(i+i+i)#POP,PUSH0E()F-(E)8#E T)E(i+i+i)#POP,NEXTSYM9#E T )Ei+i+i)#POP,PUSH(E,T)E-TE?10#E T)E叮i+i+i)#POP,PUSH(TT)TFT,11#E T)E T Fi+i+i)#POP,PUSH(i)F f i12#E T)E T ii+i+i)#POP,NEXTSYM13#ET)ET+i+i)#POPT 14#E T)E,+i+i)#POP,PUSH(E9T+)Ef+T E,15#E T)E T+i+i)#POP,NEXTSYM16#E T)E,Ti+i)#POP,PUSH(TT)T f FT17
14、#E T)E T Fi+i)#POP,PUSH(i)F-*i18#E T)E T ii+i)#POP,NEXTSYM19#E T)E T+i)#POPT f 20#E T)E,+i)#POP,PUSH T+)E+TE21#ET)ET+i)#POP,NEXTSYM22#E T)E,Ti)#POP,PUSH(TT)TFT23#E T)E T Fi)#POP,PUSH(i)F f24#ET)E Tii)#POP,NEXTSYM25#E T)E,r)#POPT f e26#E T)E,)#POPE f e27#E T)#POP,NEXTSYM28#E T#POPT e29#E,#POPE f e30#
15、ACCEPT 声明语句一V 类型 变量表;类型-*int|float|char 变量表 f ID,变量表|ID(1)在该文法中提取左因子。(2)为所得的文法的非终结符构造FIRST集合和FOLLOW集合。(3)说明所得的文法是LL(1)文法。(4)为所得的文法构造LL(1)分析表。(5)假设有输入串为“char x,y,z;”,写出相对应的LL(1)分析过程。解:(1)规贝k 变量表 一ID,变量表|ID提取公因子如下:变量表 *ID(,变量表|e)增加新的非终结符 变量表1,规则变为:变量表 f ID 变量表1v 变量表l f,变量表|eC 声明文法改变为:声明语句f类型 变量表;类型-in
16、t|float|char 变量表 f l D 变量表1 变 量 表,变量表|e(2)FIRST(声明语句)=FIRST(类型)=int,float,charFIRST(变量表 )=IDFIRST(变量表 1)=,e)FOLLOW(声明语句)=#FOLLOW()=FIRST(变量表)=IDFOLLOW&变量表)=FOLLOW()=;(3)所得文法无左递归,且FIRST(int)D FIRST(float)C l FIRST(char)=0FIRST(,变 量 表 )C l FIRST(e)=)QFOLLOW()=4因此,所得文法为LL(1)文法。(4)所得的文法构造LL(1)分析表如下所示:in
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 实现 课后 习题 答案
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内