ImageVerifierCode 换一换
格式:DOCX , 页数:43 ,大小:349.84KB ,
资源ID:10616892      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10616892.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(编译原理及实现课后习题答案docx.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

编译原理及实现课后习题答案docx.docx

1、编译原理及实现课后习题答案docx2.1设字母表A=a,符号串x=aaa,写出下列符号串及其长度:x0,xx,x5以 及A+和A*.x=(aaa)= e | x|=0xx=aaaaaa |xx|=6x=aaaaaaaaaaaaaaa | x5|=15A+ =AX U A2 U . U A11U .=(a,aa,aaa,aaaa,aaaaa.A* = A0 U A1 U A2 U . U A n U .=( e ,a,aa,aaa,aaaa,aaaaa.2.2令=位,b, c),又令x=abc, y=b, z=aab,写出如下符号串及它们的长 度:xy, xyz, (xy) 3xy=abcb |

2、xy|=4xyz=abcbaab |xyz|=7(xy)3=(abcb)3 =abcbabcbabcb | (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 VI、 U:=Z1 | 1 、 V:=ZO I 0,请写出全部由此文法描述的只含有四个符号的句子。Z=U0=Z10=U010=1010Z=U0=Z10=V110=0110Z=Vl=Z01=U001=1001Z=Vl=Z01=V101=01012.5已知文法GS: S

3、:=AB A:=aA| e B:=bBc I be,写出该文法描述 的语言。A:=aA| 描述的语言:an|n=0B:=bBc | be 描述的语言:bncn|n=lL(GS)=anbmcm|n=0,rn=l2.6已知文法 E:=T | E+T | E-T T: :=F | T*F | T/F、F:=(E) | i,写 出该文法的开始符号、终结符号集合VT、非终结符号集合VN。开始符号:EVt=+,( , ) ,iVn=E ,F,T2.7 对2.6题的文法,写出句型T+T*F+i的短语、简单短语以及句柄。根据所给文法推导出句子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为终止状态。写出相应的正则文法以及V, Vn和Vt。解:左线性文法GZ:Z:=Ab|bA:=Aa|aV=(Z,A,a,bVn=Z,A右线性文法G,S:S:=aA|bA:=aA|bV

5、=S,A,a,bVn=S,AVt=a,bVt=a,b 3.3构造下列正则表达式相应的NFA:1(1|0)*|01(1010*|1(010)*1)*0解:正则表达式:1(1|0)*|01、正则表达式:1(1010*11(010)*1)*03.4将图3.36的NFA M确定化abq0=00,11ql=(O,l0,11q2=l03.5将图3.37的DFA化简。DFA:划分ab0,112,4234,51,3053,5,2,4划分ab0,112,42,4(0,13,53,53,52,4qO=O,l ql=2,4 q2=3,5化简后的DFA:4.1对下面文法,设计递归下降分析程序。SaAS|(A), AA

6、b|c解:首先将左递归去掉,将规则A-Ab|c改成A-cb 非终结符号S的分析程序如下:非终结符号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,即此规则候选式 的首符号集有相交,不满足实现没有回溯的递归下降

7、分析方法的条件(2)(书P67),在分 析过程中,将造成回溯。改写文法可避免回溯:将规则B:=Aab代入规则A:=a|Bb得:A:=a|Aabb,再转换成:A:=aabb,可避免回 溯。4.3若有文法如下,设计递归下降分析程序。语句一语句赋值语句| e赋值语句-ID=表达式表达式一项|表达式+项|表达式一v项项 因子|项*因子|项/因子因子ID |NUM| (表达式)解:首先,去掉左递归语句语句赋值语句| e改为:语句V赋值语句表达式项|表达式+项|表达式- 项 改为:v表达式一项(+ | -) 项项v因子|项*因子|v项/ v因子改为:项一因子 (*|/)因子 则文法变为:语句_赋值语句赋值

8、语句-ID=表达式表达式-项(+ | -) v项项一因子 (*|/)因子因子一 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|w, B:=bB, B,:=bB,|&该文法的LL(1)分析表为:aeb#APOP , PU

9、SH(eBAa)POPPOPBPOP , PUSH(Bb)B9POPPOP ,PUSH(Bb)aPOP,NEXTSYMePOP,NEXTSYMbPOP,NEXTSYM#ACCEPT更常用且简单的LL(1)分析表:aeb#AAaABeAABBbB,B,B - Bf 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) nFIRST (

10、e )=, 且 FOLLOW(A)= (), #, FIRST (A)A) A 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(E,T)ETE2#E,Ti+i*i+i#POP,PUSH(T,F)TFT3#E,TFi+i*i+i#POP,PUSH(i)Fi4#ETii+i*i+i#POP,NEXTSYM5#E,T,+i*i+i#POPT_ 86#E5+i*i+

11、i#POP,PUSH(E,T+)E+TE7#E,T+i*i+i#POP,NEXTSYM8#E9Ti*i+i#POP,PUSH(T9F)TFT,9#ETFi*i+i#POP,PUSH(i)F-*i10#ETii*i+i#POP,NEXTSYM11#E,T,*i+i#POP,PUSHfTF*)12#ETF*i+i#POP,NEXTSYM13#E,T,Fi+i#POP,PUSH(i)Fi14#ETii+i#POP,NEXTSYM15#ET+i#POPT_ e16#E9+i#POP,PUSH(E,T+)E5-*+TE517#E5T+i#POP,NEXTSYM18#E,Ti#POP,PUSH(T5F)T

12、FT,19#ETFi#POP,PUSH(i)Fi20#ETii#POP,NEXTSYM21#E,r#POPT e22#E,#POPE e23#ACCEPT(2) i*(i+i+i)步骤分析栈余留输入串分析表元素所用产生式1#Ei*(i+i+i)#POP,PUSH(E,T)ETE,2#E,Ti*(i+i+i)#POP,PUSH(T,F)TFT3#E,T,Fi*(i+i+i)#POP,PUSH(i)Fi4#ETii*(i+i+i)#POP,NEXTSYM5#E,T,*(i+i+i)#POP,PUSH(T,F*)*FT,6#e,t,f*(i+i+i)#POP,NEXTSYM7#E,T,F(i+i+i

13、)#POP, PUSH()E()F-(E)8#E5T5)E(i+i+i)#POP,NEXTSYM9#ET )Ei+i+i)#POP,PUSH(E,T)E-TE910#E,t,)ETi+i+i)#POP,PUSH(TT)TFT,11#E,t,)ETFi+i+i)#POP,PUSH(i)Fi12#E,T,)E,T,ii+i+i)#POP,NEXTSYM13#ET)ET+i+i)#POPe14#E,T,)E,+i+i)#POP,PUSH(E,T+)E+TE,15#ET)ET+i+i)#POP,NEXTSYM16#E,t,)ETi+i)#POP,PUSH(TT)TFT,17#ET)ETFi+i)#PO

14、P,PUSH(i)Fi18#ET)ETii+i)#POP,NEXTSYM19#ET)ET+i)#POPTf e20#ET)E+i)#POP,PUSH(E,T+)E+TE,21#ET)ET+i)#POP,NEXTSYM22#E,t,)ETi)#POP,PUSH(TT)TFT,23#ET)ETFi)#POP,PUSH(i)Fi24#ET)ETii)#POP,NEXTSYM25#ET)ET)#POPT_ e26#ET)E)#POPE 27#ET)#POP,NEXTSYM28#E,T,#POPT_ 829#E5#POPE 30#ACCEPT4.7考虑下面简化了的C声明文法: 声明语句 -TD,v变量表

15、|ID(1) 在该文法中提取左因子。(2 ) 为所得的文法的非终结符构造FIRST集合和FOLLOW集合。(3)说明所得的文法是LL(1)文法。(4)为所得的文法构造LL(1)分析表。(5)假设有输入串为“charx, y, z;”,写出相对应的LL(1)分析过程。解:(1)规则变量表一ID,变量表|ID提取公因子如下:变量表一1。(,|8) 增加新的非终结符变量表1,规则变为:变量表IDV变量表1V变量表1, V变量表1 6C声明文法改变为:声明语句 -ID变量表1_,变量表| e(2)FIRST()=FIRST(类型)=(int, float, char)FIRST()=ID)FIRST(

16、变量表 1)= , e )FOLLOW()=#)FOLLOW(类型 )=FIRST(v 变量表 )=(ID)FOLLOW(变量表 )=FOLLOW()= (:(3)所得文法无左递归,且FIRST (int) A FIRST (float) n FIRST (char) =FIRST (,变量表)A FIRST ( e ) =0FIRST (,变量表)fl FOLLOW(变量表 1 ) = 0因此,所得文法为LL(1)文法。(4) 所得的文法构造LL(1)分析表如下所示:intfloatcharID9#V声明 语句POP ,PUSH(; v 类型)POP ,PUSH(; v变量表 类 型)类 型

17、POP , PUSH(int)POP , PUSH(float)POP , PUSH(char)V变量 表POP , PUSH(ID)变量POPPOP ,表1PUSH( 变量表;-*intv 类型 -* floatv 类型 charV变量 表V变量表IDV变量表1变量 表1V变量 表1e变量表 1 -, 变量表(5)输入串charx, y, z;柞对应的LL(1)分析过程如下:步骤分析栈余留输入串分析表元素所用产生式1#f char3#; V变量表 charchar x, y, z; #POP,NEXTSYM4#;变量表x, y, z; #POP ,v变量表一IDPUSH(ID)变量表15#;

18、变量表1Xx, y, z; #POP,NEXTSYM6#;变量表1,y,z; #POP ,PUSH(,变量表7#; V变量表,,y, z; #POP,NEXTSYM8#; V变量表y, z; #POP ,PUSH(ID)变量表ID9#;变量表lyy, z; #POP,NEXTSYM10#;变量表1,z; #POP ,PUSH(一,V变量表11#; V变量表,z; #POP,NEXTSYM12#; V变量表z; #POP ,PUSH(ID)v变量表IDv 变量表113#;变量表1Zz; #POP,NEXTSYM14#;变量表1;#POP变量表1 e15#;#POP,NEXTSYM16#ACCEP

19、T5. 1考虑以下的文法:S-S;T|TTa(1)为这个文法构造LR(O)的项目集规范族。(2)这个文法是不是LR(O)文法?如果是,则构造LR(O)分析表。(3)对输入串“a;a”进行分析。解:(1)拓广文法GS,:0: S -S1: S-S;T2: S-T3: Ta构造LR(0)项目集规范族状态项目集转换函数0S S S S;T S T T . aG00, S = l G00, S = l G00, T=2 G00, a =31S SSS ;TACCEPTGO1, ;=42STR23Ta R34SS; TT aGO4, T=5GO4, a =35S-S;T R1(2)该文法不存在“归约一归

20、约”和“归约一移进”冲突,因此是LR(0)文法。LR(0)分析表如下:状态ACTIONGOTOa#ST0S3121S4ACCEPT2R2R2R23R3R3R34S355R1R1R1(3)对输入串“a;a”进行分析如下:步骤状态栈符号栈输入符号栈ACTIONGOTO00#a; a#S3103#a;a#R32302#T;a#R21401#S;a#S45014#S;a#S360143#S;a#R3570145#S;T#R11801#S#ACCEPT5.2证明下面文法是SLR(1)文法,但不是LR(O)文法。SAAAb | bBaBaAc | a | aAb解:文法GS:0: SA1: AAb2: A

21、bBa3: BaAc4: Ba5: BaAb构造LR(0)项目集规范族:状态项目集转换函数0S - AA AbA-* bBaG00, A = l G00, A = l G00, b=21SAA-AbACCEPTG0l, b=32Ab BaB aAcB aB aAbGO2, B=4GO2, a =5GO2, a =5GO2, a =53A-Ab R14AbB aGO4, a =65Ba AcGO5, A =7Ba Ba AbA - AbA bBaR4GO5, A =7GO5, A =7GO5, b=26AbBa R27BaA c BaA b AAbGO7, c=8G07, b=9GO7, b=98BaAc R39BaAb AAb R5R1状态5存在“归约一移进”冲突,状态9存在“归约一归约”冲突,因此该文法不是LR(O) 文法。状态5:FOLLOW(B)= a,因此,FOLLOW(B) n b =O状态9:FOLLOW (B)= a, FOLLOW (A) = (#, b, c,因此 FOLLOW (B) n FOLLOW (A) = O状态5和状态9的冲突均可用SLR (1)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1