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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

编译原理34.docx

1、编译原理34 第三章P67e1解: Z其状态图为: start e由状态图知: f ,eeff不是合法的句子 eefe是该文法的句子。2解:正则文法为GZ: ZA10 AA00该文法的 V=Z,A,1,0 Vn=Z,A Vt=1,0该文法所确定的语言为:LGZ0n1或0n15证明:AAxxLA或xLAxxLAA(A*)*(A*)0(A*)1(A*)2(A*)n(A0A1A2An) (A1) A0A1A2An AAA*所表示的语言是LALA*LA0LA(LA0LA1LA2)LA0LA1LA2LA*故AA*A*(LALB)*LA=(LALBLALBLALBLALBLALBLALB) LA =LAL

2、ALBLALALBLALBLALALBLALBLALBLA = LA(LBLALBLALBLA) = LA(LBLA) (AB)*=A(AB)*三个表达式所描述的语言都是LALA中任意组合P2 (A|B)*=(A*B*)=(A*|B*)*start6解: R1=01对应的自动机为 P3start1 (R1)*=(0|1)* 对应的自动机为M2将M2确定化状态 输入 01 P0P1,P3 P1P2P2 P2P1,P3 P3 I I0 I1(空)状态 输入 0 1P0,P1,P3P1,P2,P3P1,P2,P3 P0P1P1P1,P2,P3P1,P2,P3P1,P2,P3 P1P1P1(注:上图中

3、的(空)列表示没有该列。即上图为两个独立的表)P1状态转换图为:0,1简化为:1R=1(0|1)*|0 的DFA M为: R1=1010*|1(010)*1对应的DFA M为:q8S13R2=(1010*|1(0|0)*1)* 对应的DFA M为:0startS9P11对应R=1(1010*|1(010)*1)*0 的DFA M为:P14P901 8.解:(a) I Ia Ib 0 0,1 1 0,1 0,1 1 1 0 DFA的状态转换矩阵为: 状态 输入 a b q0 q1 q2 q1 q1 q2 q2 q0 化简:p0= q0= q1 p1= q2a 状态图为 :bastartP1P0

4、10解:它所识别的语言为:(1010)*第四章 语法分析P801. 解:(见课本)2解:文法有左递归,故先改写文法:errorA A=(B)|dBe B=cc下面给出两个分析子程序的框图:Sym=c(?) BY YY N Y两分析子程序如下:procedure A; IF sym= ( THEN Begin Nextsym; B; If sym=) Then Nextsym; Else Error End; ELSE If sym=d Then Begin Nextsym; B; if sym=e then Nextsym else Error End; Else Error; Procedu

5、re B; IF sym=c THEN Begin Nextsym; While sym=c do Nextsym End ELSE Error;/*程序中nextsym为读字符子程序,error为出错处理子程序*/*主程序*/ program G; VAR sym:CHAR; BEGIN Nextsym; A; END3解:(1)。 FIRST(AcB)=c FIRST(Bd)=a FIRST(AaB)=c FIRST(c)=c FIRST(aA)=a FIRST(a)=a(2). 若用不带回溯的自顶向下的语法分析程序,必须改写文法: ZAcB|Bd AcaB BaA 因为调用分析子程序A的

6、过程中,调用了B子程序,在B中又调用了A,相当于A间接的调用了A,所以该文法应编写成递归子程序。(3). 三个分析子程序框图如下: AZYYSym=c(?)errrorY nextsymSym=a(?)NY BB 三个分析子程序为:procedure Z; if sym=c thenbegin A; If sym=c then B; Else ErrorEnd; ElseIf sym=a then Begin B; If sym=d then Nextsym; Else Error End;Else Error;Procedure A;If sym=c then Begin Nextsym;

7、While sym=a do B; End;Else Error;Procedure B;If sym=a then Begin Nextsym; If sym=c then A; End;Else Error;P871 解:(1) FIRST(P)=(,a,b,) FOLLOW(E)=#,) FIRST(F)=, FOLLOW(E)= #,) FIRST(F)=(,a,b,) FOLLOW(T)= #,),+ FIRST(T)= (,a,b, ) FOLLOW(T)= #,),+ FIRST(T)= (,a,b,) FOLLOW(F)= (,a,b, ),+,# FIRST(E)=+, FO

8、LLOW(F)= (,a,b, ),+# FIRST(E)= (,a,b,) FOLLOW(P)= (,a,b, ),+,#,*(2)证明:对于E+E| FIRST(+E)=+ FIRST()= FOLLOW(E)=#, FIRST(+E)FIRST()= FIRST(+E)FOLLOW(E)= 对于TT| FIRST(T)FOLLOW(T)= 对于F*F| FIRST(*F)FOLLOW(F)= 对于P(E)|a|b| FIRST(E)=() FIRST(a)=a FIRSTb=b FIRST= 根据LL(1)文法的充要条件可以断定该文法是LL(1)文法.(3).构造其分析表如下: a b

9、( ) * + # EETEETEETEETE EEE+EE TTFTTFTTFTTFT TTTTTTTTTTTT FFPFFPFFPFFPF FFFFFFF*FFF PPaPbPP(E) (注:空白处均为ERROR)2解: (2)FIRST(aABbcd)=a; FIRST()=; FIRST(Asd)=a,d; FRIST(SAh)=a,h; FIRST(eC)=e; FRIST(Sf)=a,f; FIRST(Cg)=g,a,f; FRITS(aBD)=a; (3)对于CSf | Cg,FIRST(Sf) FIRST(Cg)=a,f 此文法不是LL(1)文法。6解:一个文法是文法的充要条件

10、是:AVn,A的任何两条不同的规则A:=|有下列条件成立:* FIRST()FIRST()= =,则FIRST()FOLLOW(A)= 证明:充分性:*对于任意非终结符A 若A:=|满足上述条件,取分析表项MA,a,aVt若A=a假设=a即aFIRST() FIRST()FIRST()= * aFIRST() 分析表项MA,a= A:= 若=,且aFOLLOW (A) aFIRST() MA,a= A:= 否则 MA,a=error 综上,分析表的元素无多重定义,符合LL(1)文法定义,是LL(1)文法必要性: 令对于LL(!)文法G的 AVn, A:=|条件不成立 FIRST()FIRST(

11、)=B FIRST()FIRST()=C* 若a,则MA,a中,可同时存在 A:=及A:= 若=则MA,a中,可同时存在A:= A:= 两条规则 这与定义相矛盾,假设错误必要性得证。P1002.(2)解:步骤对象栈算符栈关系读入符号符号串0#a+b*(c+d)-e#1#a+b*(c+d)-e#2a#+b*(c+d)-e#3a#+b*(c+d)-e#4ab#+*(c+d)-e#5ab#+*(c+d)-e#6ab#+*(c+d)-e#7abc#+*(+d)-e#8abc#+*(+d)-e#9abcd#+*(+)-e#10abf#+*()-e#11abf#+*-e#12ag#+-e#13h#-e#1

12、4h#-e#15he#-#16t#所以,a+b*(c+d)-e是文法的合法句子。3.解:procedure INSERT(u,a) if not Lu,a then begin Lu,a:=true; 将(u,a)压入栈STACK end;program MAIN; begin for 每个非终结符U和终结符a do Lu,a:=false; For 每条形如U:=a或U:= aV规则 do INSERT(U,a); While STACK 非空 DO Begin 将STACK栈顶弹出,记为(V,a); for 每条形如U:=V规则 do INSERT(U,a); End; End4. 短语

13、素短语E 无 无T T 无i i iT*F T*F T*FF*F F*F,F F*Fi*F i*F,i iF*i F*i,F,i iF+F+F F+F+F,F+F,F F+F5.步骤符号栈优先关系读入符号符号串0#ii+i#1#i#i+i#2#N#+i#3#N+ii#4#N+i+i#5#N+N#+#6#N接受所以i+i是符合文法的句子。步骤符号栈优先关系读入符号符号串0#ii*(i*i)#1#i#i*(i*i)#2#N#*(i*i)#3#N*(i*i)#4#N*(ii*i)#5#N*(i(i*i)#6#N*(N(*i)#7#N*(N*ii)#8#N*(N*i*i)#9#N*(N*N(i)#10

14、#N*(N()#11#N*(N)* ()#12#N*N#*#13#N接受P1041.(a) (1)E+F*i# = E+i*i#所以活前缀的集合为E,E,Ei(2)EPT= E+ PP#= E+ PF#= E+ P(E)#= E+ P(E+T)#= E+ P(E+P)#= E+ P(E+F)#= E+ P(E+i)#= E+ P(T + i)#= E+ P(P+i)#= E+ P(F+i)#= E+ P(i+i)#(b) (1)i+i*i#的最右推导逆过程如下: i+i*i# - F+i*i# - P+i*i# - T+i*i# - E+i*i# - E+F*i# - E+P*F# - E+P

15、# - E+T# - E# (2)i+i(i+i)#的最右推导的逆过程如下: i+i(i+i)# - F+i(i+i)# - P+i(i+i)# - T+i(i+i)# - E+i(i+i)# - E+F(i+i)# - E+P(i+i)# - E+P(F+i)# - E+P(P+i)# - E+P(T+i)# - E+P(E+i)# - E+P(E+F)# - E+P(E+P)# - E+P(E+T)# - E+P(E)# - E+PF# - E+PT# - E+T# - E# 2.(1)步骤栈内容输入串活前缀句柄00i+i-i#10i3+i-i#ii20T2+i-i#TT30E1+i-i#

16、E40E1+6i-i#E+50E1+6i3-i#E+ii60E1+6T8-i#E+TE+T70E1-i#E80E1-7i#E-90E1-7i3#E-ii100E1-7T9#E-TE-T110E1#E120E1#5E#E#130接受所以,i+i-i#为合法输入串。(2)步骤栈内容输入串活前缀句柄00(i+i)-i#10(4i+i)-i#(20(4i3+i)-i#(ii30(4T2+i)-i#(TT40(4E10+i)-i#(E50(4E10+6i)-i#(E+i60(4E10+6i3)-i#(E+ii70(4E10+6T8)-i#(E+TE+T80(4E10)-i#(E90(4E10)11-i#

17、(E)(E)100T2-i#TT110E1-i#E120E1-7i#E-130E1-7i3#E-ii140E1-7T9#E-TE-T150E1#E160E1#5E#E#170接受所以(i+i)-i#为合法输入串。P1081.解:(a) (b) F(.E),E.E-T,E.T,T.F,T.FT,F.i ,F.(E)(c) EE-T. 2.解:I0=closure(S.E#)=S.E#,E.wX,E.xYI1=goto(I0,E)=closure(SE.#)=SE.#I2=goto(I0,w)=closure(Ew.X)=Ew.X,X.yX,X.zI3=goto(I0,x)=closure(Ex.

18、Y)=Ex.Y,Y.yY,Y.zI4=goto(I1,#)=closure(SE#.)= SE#.I5=goto(I2,X)=closure(EwX.)= EwX.I6=goto(I2,y)=closure(Xy.X)= Xy.X, X.yX,X.z I7=goto(I2,z)=closure(X.z)= Xz.I8=goto(I3,Y)=closure(ExY.)= ExY.I9=goto(I3,y)=closure(Yy.Y)= YyY.I10=goto(I3,z)=closure(Yz.)= Yz.I11=goto(I6,X)=closure(XyX.)= XyX.I12=goto(I9

19、,Y)=closure(Yy.Y)= Yy.Y=I9LR(0)机器为:yI0z3.解: 步骤 栈内容 输入串 活前缀 句柄 10wyyz# 20w2yyz# w 20w2y6 yz# wy 30w2y6y6 z# wyy 40w2y6y6z7 # wyyzz 50w2y6y6X11 # wyyxyx 6 0w2y6X11 # wyxyx 70w2X5 # wxwx 8 0E1 # E 90E1#4 # E#E# 100 accept 步骤 栈内容 输入串 活前缀 句柄 00xyyyz# 10x3 yyyz#x 20x3y9 yyz#xy 30x3y9y9 yz#xyy 40x3y9y9y9 z

20、#xyyy 50x3y9y9y9z10 #xyyyzz 60x3y9y9y9Y12 #xyyyYyY 70x3y9y9Y12 #xyyYyY 80x3y9Y12 #xyYyY 90x3Y8 #xYxY 100E1 #E 110E1#4 #E#E# 120 acceptP1161. 给定下列产生式的文法:SE# ET|E+T TP|T*P PF|FP Fi|(E)(a) 为该文法构造LR(0)机器。(b) 证明该文法是SLR(1)。(c) 为该文法构造SLR(1)分析表。解:(a)构造LR(0)机器 C0:S.E#,E.T,E.E+T,T.P,T.T*P,P.F,P.FP,F.i,F.(E) C

21、1:SE.#,EE.+T C2:ET.,TT.*P C3:TP. C4:PF.,PF.P C5:Fi. C6:F(.E),E.T,E.E+T,T.P,T.T*P,P.F,P.FP,F.i,F.(E) C7:SE#. C8:EE+.T,T.P,T.T*P,P.F,P.FP,F.i,F.(E) C9:TT*.P,P.F,P.FP,F.i,F.(E) C10:PF.P, P.F, P.FP, F.i,F .(E) C11:F(E.),EE.+T C12:EE+T.,TT.*P C13:TT*P. C14:PFP. C15:F(E).(b)对于状态C2:ET.,TT.*P Follow(E)=#,+, *不属于Follow(E) C4:PF.,PF.P Follow(P)=#,+,* 不属于Follow(P) C12:EE+T.,TT.*P Follow(E)=#,+, *不属于Follow(E) 该文法构成的分析表不会出现多重定义出口。它是SLR(1)文法。(c)构造分析表为:状态SETPF+*i()#C0C1C2C3C4S5S6C1S8S7C2r1S9r1r1C3r3r3r3r3C4r5r5S10r5r5C5r7r7r7r7r7C6C11C2C3C4S5S6C7AC8C12C3C4S5S6C9C13C4S5S6C10C14C4S5S6

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

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