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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

习题及解答.docx

1、习题及解答第3章 文法和语言3.8 练习(P44)2. 文法GN为:N D|NDD 0|1|2|3|4|5|6|7|8|9|GN的语言是什么?解: N NDn-1 Dn 0,1,3,4,5,6,7,8,9+L(GN)= 0,1,3,4,5,6,7,8,9+5.写一文法,使其语言是偶正数的集合。要求:(1)允许0打头(2)不允许0打头解:(1)允许0打头0是正偶数:SABB0|2|4|6|8AAC|CC0|1|2|3|4|5|6|7|8|9|0不是正偶数:SFABC|FEA1|2|3|4|5|6|7|8|9BBD|DD0|1|2|3|4|5|6|7|8|9|C0|EE2|4|6|8FF0|(2)

2、 不允许0打头SABC|EA1|2|3|4|5|6|7|8|9BBD|DD0|1|2|3|4|5|6|7|8|9|C0|EE2|4|6|89.考虑下面上下文无关文法:SSS*|SS+|a(1)表明通过此文法如何生成串aa+a*,并为该串构造推导树。(2)该文法生成的语言是什么?解:(1)S=SS*=SS+S* aa+a*该串的推导树如下: (2)该文法生成的语言是只含+、*的算术表达式的逆波兰表示。11.令文法GE为:ET|E+T|E-TTF|T*F|T/FF(E)|i证明E+T*F是它的一个句型,指出这个句型的所有短语、直接短语和句柄。解:E=E+T=E+T*FE+T*F是文法GE的一个句型

3、句型E+T*F的语法树如下:E+T*F是句型E+T*F相对于非终结符E的短语T*F是句型E+T*F相对于非终结符T的短语T*F是句型E+T*F相对于规则TT*F的直接短语T*F是句型E+T*F的句柄13.一个上下文无关文法生成句子abbaa的推导树如下:(1)给出该句子相应的最左推导,最右推导。(2)该文法的产生式集合P可能有哪些元素?(3)找出该句子的所有短语,简单短语、句柄。解:(1)最左推导如下:S=ABS=aBS=aSBBS=aBBS=abBS=abbS=abbAa=abbaa最右推导如下:S=ABS=ABAa=ABaa=ASBBaa=ASBbaa=ASbbaa=Abbaa=abbaa

4、(2)该文法的产生式集合P可能有以下元素:SABS|Aa|BSBB|bAa(3)为方便叙述将句型abbaa写作a1b1b2a2a3该句子的短语有:a1, , b1, b2, a2, b1b2, a2 a3, a1b1b2a2a3该句子的直接短语有:a1, , b1, b2, a2该句子的句柄为:a116.给出生成下述语言的三型文法:(2)anbm|n,m1解:该语言的三型文法为:GS: SaB BaB|CCbC|b 或GS: SaS|aA BbA|b第4章 词法分析4.7练习(P66)1构造下列正规式相应的DFA:(4) b(ab)*|bb)*ab解:先将正规式转换为NFA,转换过程如下: 以

5、下为最终所得的NFA图: 然后,将此NFA转换为DFA:转换关系矩阵如下表:CTaTbT0=1T1=2,4T1=2,4T2=5,6T3=3T2=5,6T4=2,4,7T3=3T1=2,4T4=2,4,7T2=5,6T3=3所得DFA图如下: 最后,将此DFA化简后如下: 3将图4.16确定化:解:首先,将此NFA转换为DFA:转换关系矩阵如下表:CTaTbT0=ST1=V,QT2=U,QT1=V,QT3=Z,VT2=U,QT2=U,QT4=VT5=Z,Q,UT3=Z,VT6=ZT6=ZT4=VT6=ZT5=Z,Q,UT3=Z,VT5=Z,Q,UT6=ZT6=ZT6=Z所得DFA图如下: 最后,

6、将此DFA化简后如下: 7给文法GS:SaA|bQAaA|bB|bBbD|aQQaQ|bD|bDbB|aAEaB|bFFbD|aE|b构造相应的最小的DFA。解:首先,将正规式转换成NFA如下:a 然后,将此NFA转换为DFA:转换关系矩阵如下表:CTaTbT0=ST1=AT2=QT1=AT1=AT3=Z,BT2=QT2=QT4=Z.DT3=Z,BT2=QT5=D T4=Z.DT1=AT6=BT5=D T1=AT6=BT6=BT2=QT5=D 所得DFA图如下: 最后,将此DFA化简后如下:8给出下述文法所对应的正规式:S0A|1BA1S|1B0S|0解:由题意得:A=1S|1,B=0S|0

7、,S0A|1B,将A,B右端代入S的产生式得:S0(1S|1)|1(0S|0)=01S|01|10S|10=(01|10)| (01|10)SS(01|10)| (01|10)SS=(01|10)| (01|10)*该文法所对应的正规式为:(01|10)| (01|10)*11构造下述文法GS的确定自动机,并给出该文法的语言的正规式。S=Aa|A= Aa|Sb|a解:由左线型正规文法到NFA的转换规则可得该文法的NFA状态转换图为:转换关系矩阵如下表:CTaTbT0=Q,ST1=AT1=AT1=AT2=A,ST2=A,ST2=A,ST1=A所得DFA图如下:第5章 自顶向下语法分析方法5.6

8、练习(P90)2对下面的文法G:ETEE+E|TFTTT|FPFF* F|P(E)|a|b|(1)计算这个文法的每个非终结符的FIRST集和FOLLOW集。(2)证明这个文法是LL(1)的。(3)构造它的预测分析表。解:(1)由题意分析得可推导出的非终结符表为:EETTFFP否是否是否是否各非终结符的FIRST集为:FIRST(E)= FIRST(T)=(,a,b,FIRST(E)=+ =+,FIRST(T)= FIRST(F)=(,a,b,FIRST(T)= FIRST(T) =(,a,b,FIRST(F)= FIRST(P)=(,a,b,FIRST(F)=* =*,FIRST(P)=(,a

9、,b,最终求得各非终结符的FIRST集为:FIRST(E)=(,a,b,FIRST(E)=+,FIRST(T)=(,a,b,FIRST(T)= (,a,b,FIRST(F)=(,a,b,FIRST(F)=*,FIRST(P)=(,a,b,各非终结符的FOLLOW集为:FOLLOW(E)=#FOLLOW(E) )FOLLOW(E)= FOLLOW(E) FOLLOW(T)= FOLLOW(T) (FIRST(E)- )FOLLOW(E) FOLLOW(T)= FOLLOW(T)FOLLOW(F)= (FIRST(T)- )FOLLOW(T) FOLLOW(F)= FOLLOW(F) FOLLOW

10、(F)FOLLOW(P)= (FIRST(F)- )FOLLOW(F) 最终求得各非终结符的FOLLOW集为:FOLLOW(E)=#,)FOLLOW(E)= #,)FOLLOW(T)= #, + , ) FOLLOW(T)= #, + ,)FOLLOW(F)= (,a,b,#,+,)FOLLOW(F)= (,a,b,#,+,)FOLLOW(P)= *,(,a,b,#,+,)(2)各产生式的SELECT集为:SELECT(ETE)=FIRST(TE)= FIRST(T)=(,a,b,SELECT(E +E)=FIRST(+E)=+SELECT(E )=(FIRST()- )FOLLOW(E)=

11、FOLLOW(E)=#,)SELECT(TFT)=FIRST(FT)= FIRST(F)=(,a,b,SELECT(TT)=FIRST(T)= (,a,b,SELECT(T)=(FIRST()- )FOLLOW(T)= FOLLOW(T)=#,+,)SELECT(FPF)=FIRST(PF)= FIRST(P)= (,a,b,SELECT(F*F)=FIRST(*F)= FIRST(P)= *SELECT(F)=(FIRST()- )FOLLOW(F)= FOLLOW(F)=(,a,b,#,+,)SELECT(P(E)=FIRST(E)=(SELECT(Pa)=FIRST(a)=aSELECT

12、(Pb)=FIRST(b)=bSELECT(P)=FIRST()=由以上结果得相同左部产生式的SELECT交集为:SELECT(E +E) SELECT(E )= +#,)SELECT(TT) SELECT(T)= (,a,b,)#,+,)= SELECT(F*F) SELECT(F)=* (,a,b,#,+,) = SELECT(P(E) SELECT(Pa) SELECT(Pb) SELECT(P)=(ab= 相同左部产生式的SELECT集合的交集为空。这个文法是LL (1)的。(3)由以上算出的SELECT集可以构造该文法的预测分析表如下:+*()ab#ETETETETEE+ETFTFT

13、FTFTTTTTTFPFPFPFPFF*FP(E)ab7对于一个文法若消除了左递归,提取了左公共因子后是否一定为LL(1)文法?试对下面文法进行改写,并对改写后的文法进行判断。(2) AaABe|a (1) BBb|d (2)(3) SAa|b (1)ASB (2)Bab (3)解:对于一个文法若消除了左递归,提取了左公因子后不一定是LL(1)文法。(2)将产生式(1) 提取左公因子后得:Aa(ABe| ) 进一步变换为文法G1:AaAAAbeABBb|d 消除(2)中的直接左递归,将BBb|d 变换为:BdB BbB |该文法最终改写成的形式为:AaAAAbe|BdB BbB |对此改写后的

14、文法进行判断其是否是LL(1)文法。由分析得可推导出的非终结符表为:AABB否是否是各非终结符的FIRST集为:FIRST(A)=aFIRST(A)= FIRST(A)=a,FIRST(B)=dFIRST(B)=b=b,各非终结符的FOLLOW集为:FOLLOW(A)=# (FIRST(B)- )=#,dFOLLOW(A)=FOLLOW(A)=#,dFOLLOW(B)= eFOLLOW(B)= FOLLOW(B) FOLLOW(B)= e各产生式的SELECT集为:SELECT(AaA)=FIRST(aA)=aSELECT(AABe)=FIRST(ABe)= FIRST(A)=aSELECT(

15、A)=(FIRST()- )FOLLOW(A)= FOLLOW(A)= #,dSELECT(BdB )=FIRST(dB )= dSELECT(BbB)=FIRST(bB)= bSELECT(B)=(FIRST()- )FOLLOW(B)= FOLLOW(B)= e由以上结果得相同左部产生式的SELECT交集为:SELECT(AABe)SELECT(A)=a#,d=SELECT(BbB) SELECT(B)= be=相同左部产生式的SELECT集合的交集为空。改写后的文法是LL (1)的。(3)该文法的非终结符S,A为间接左递归,以S,A,B为序消除一切左递归。 将(1)的右部代入(2)得:A

16、AaB|bB 消除其直接左递归得:AbBA AaB A| 此时文法变成如下形式:SAa|b (1)AbBA (2) AaB A| Bab 此文法中的(1), (2)产生式存在隐含的左公因子,消除隐含的左公因子后文法变成如下的形式:Sb S SBAa| AbBA AaB A| Bab 此形式中AbBA是不可达的产生式,是多余的,所以应将其去掉。 所以文法最终改写成的形式为:Sb S SBAa| AaB A| Bab 相同左部产生式的SELECT集为:SELECT(SBAa)=aSELECT(S)=#SELECT(AaB A)=aSELECT(A)=a相同左部产生式的SELECT交集为: SELE

17、CT(SBAa)SELECT(S)=a# =SELECT(AaB A)SELECT(A)=aa 关于A的相同左部其产生式的SELECT集的交集不为空此改写后的文法不是LL(1)的。第6章 自底向上优先分析法6.4 练习(P116)1已知文法GS为:Sa|(T)TT,S|S(1)计算FIRSTVT和LASTVT。(2)构造GS的算符优先关系表并说明GS是否为 算符优先文法。(3)计算GS的优先函数。(4)给出输入串(a,a)#和(a,(a,a)#的算符优先分析过程。解:(1)由题意得:FIRSTVT(S)=a,(FIRSTVT(T)= FIRSTVT(T) ,FIRSTVT(S) =a,(,LA

18、STVT(S)=a,)LASTVT(T)= LASTVT(S)= ,=a,), (2)由 文法GS可知: 有(T ( FIRSTVT(T) 即( a ( ( ( ( , 有,S , FIRSTVT(S) 即, a , , (有T) LASTVT(T) ) 即a ) ) ) ) , ) 有T, LASTVT(T) ,即a , ,) , , ,GS的算符优先关系矩阵为:a() ,a(),由算符优先关系表可知该文法G中任意两个终结符对之间至多只有 , 和 三种关系的一种成立。所以GS是算符优先文法。(3)由(2)中所得优先关系表可以构造如下优先函数关系图:由以上优先关系图求得如下优先函数结果:a()

19、 ,f662642g777232其优先函数的优先关系与优先矩阵的优先关系是一致的。(3)对输入串(a,a)#的算符优先规约过程如下:步骤栈优先关系当前符号剩余输入串移进或归约(1)#(a,a)#移进(2)#(a,a)#移进(3)#(a,a)#归约(4)#(S,a)#移进(5)#(S,a)#移进(6)#(S,a)#归约(7)#(S,S)#归约(8)#(T)#移进(9)#(T)#归约(10)#S#接受对输入串(a,(a,a)#的算符优先规约过程如下:步骤栈优先关系当前符号剩余输入串移进或归约(1)#(a,(a,a)#移进(2)#(a,(a,a)#移进(3)#(a,(a,a)#归约(4)#(S,(a

20、,a)#移进(5)#(S,(a,a)#移进(6)#(S,(a,a)#移进(7)#(S,(a,a)#归约(8)#(S,(S,a)#移进(9)#(S,(S,a)#移进(10)#(S,(S,a)#归约(11)#(S,(S,S)#归约(12)#(S,(T)#移进(13)#(S,(T)#归约(14)#(S,S)#归约(15)#(T)#移进(16)#(T)#归约(17)#S#接受第7章 LR分析法7.7练习(P151)6文法G= (U,T,Sa,b,c,d,e,P,S)其中P为:SUTa|TbTS|Sc|dUUS|e(1)判断G是LR(0),SLR(1),LALR(1)还是LR(1),说明理由。(2)构造

21、相应的分析表。解:将文法拓广为G如下:SSSUTa|TbTS|Sc|dUUS|e该文法的LR(0)项目集规范族为:I0:S.SS .UTa S.Tb U.USU.eT.ST.Sc T.dI1:SS.TS.TS.c I2:S U.Ta T.ST.Sc T.dS .UTa S.Tb U.USU.eUU.SI3: ST.bI4:Ue.I5:Td.I6:TSc.I7:S UT.a ST.bI8:TS.TS.c UUS.I9:STb.I10:S UTa.与此相应的识别该文法活前缀的有限自动机如下图:不难看出I1和I8中存在移进-归约和归约-归约冲突,因此该文法不是LR(0)文法。在I1中:SS.TS.T

22、S.cFOLLOW(S)=#FOLLOW(T)=a,bFOLLOW(S) FOLLOW(T)= FOLLOW(S) c= FOLLOW(T) c= I1中的冲突可以用SLR(1)方法解决。在I1中:TS.TS.c UUS. FOLLOW(T)=a,bFOLLOW(U)=d,eFOLLOW(T) FOLLOW(U)= FOLLOW(T) c= FOLLOW(U) c= I8中的冲突也可以用SLR(1)方法解决。(2) 由题意可得各非终结符的SELECT集如下:FIRST(S)= FIRST(S)= e,dFIRST(S)= FIRST(U) FIRST(T)= eFIRST(T) d=e,dFI

23、RST(T)= FIRST(S)d=e,dFIRST(U)= FIRST(U)e=e由题意可得各非终结符的FOLLOW集如下:FOLLOW(S)=#FOLLOW(S)= FOLLOW(S)FOLLOW(T) FOLLOW(U) c=#,a,b,c,d,eFOLLOW(T)=a,bFOLLOW(U)=FIRST(Ta) FIRST (S)= FIRST(T) FIRST (S)=e,d根据以上构造的文法的LR(0)项目集规范族和计算出的所有非终结符的FOLLOW集。可以构造该文法的改进的SLR(1)分析表如下:abcde#STU0S5S41321r3r3S6acc2S5S48723S94r7r75r5r56r4r47S10S98r3r3S6r6r69r

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

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