编译原理习题与答案.ppt
《编译原理习题与答案.ppt》由会员分享,可在线阅读,更多相关《编译原理习题与答案.ppt(59页珍藏版)》请在三一办公上搜索。
1、第二章,2.2 设有文法GN:N-D|NDD-0|1|9(1)GN定义的语言是什么?(2)请给出句子0123的最左推导和最右推导。,N,ND,NDD,NDDD,DDDD,0DDD,01DD,012D,0123,N,ND,N3,ND3,N23,ND23,N123,D123,0123,2.5 证明下面的文法是二义性的。SiSeS|iS|i答:对句子iiiei对应两棵不同的语法树,第二章,S,S,2.9 设有文法GT:TT*F|FF FP|PP(T)|i 分析句型T*P(T*F)的短语、直接短语和句柄答:句型T*P(T*F)的语法树:,T,五棵子树对应五个短语T*P(T*F),P(T*F),P,(T
2、*F),T*F,两层子树(简单子树)的末端结点构成直接短语 两棵两层子树对应两个直接短语:P,T*F位于最左边的两层子树的末端结点构成句柄:P,第二章,第三章,3.1 构造正规式1(0|1)*101相应的NFA,第三章,3.1 构造正规式1(0|1)*101相应的NFA,(0|1)*,第三章,3.5 给出下述文法所对应的正规式。G:SaA AbA|aB|b B aA解:先由产生式得:B=aA将B代入A中得:A=bA|aaA|b=(b|aa)A|b利用规则(A-xA|y)得:A=(b|aa)*b 将A代入S中得:S=a(b|aa)*b即为所求正规式,3.4 给出文法GS,构造相应最小的DFA。G
3、:SaS|bA|b AaS解:由文法到NFA的转换有两种方法:由文法到正规式,再由正规式到NFA先由产生式得:A=aS将A代入S中得:S=aS|bA|b=aS|baS|b=(a|ba)S|b利用规则(A-xA|y)得:S=(a|ba)*b 文法G对应的正规式为(a|ba)*b,其对应的NFA的状态转换图为:,第三章,3.4 给出文法GS,构造相应最小的DFA。G:SaS|bA|b AaS解:由文法直接到NFA文法对应的有自动M=(S,A,T,a,b,f,S,T)其对应的状态转换图为:,第三章,正规式:(a|ba)*b,第三章,将NFA确定化为DFA如右图所示最小化:此状态图已经为最简了。,S,
4、S,A,T,A,T,S,Ib,Ia,I,0,1,0,1,0,-,第三章,1.指出与正规式匹配的串。a)(ab|b)*c 与后面的那些串匹配?,ababbc,abab,c,babc,aaabc,b)ab*c*(a|b)c 与后面的那些串匹配?,acac,acbbc,abbcac,abc,acc,c)(a|b)aa*(ba)*与后面的那些串匹配?,ba,bba,baa,aa,ababa,第三章,2.为下边所描述的串写正规式,字母表是 0,1.a)以01 结尾的所有串b)只包含一个0的所有串 c)包含偶数个1但不含0的所有串d)包含偶数个1且含任意数目0的所有串e)包含01子串的所有串f)不包含01
5、子串的所有串,(0|1)*01,1*01*,(11)*,(0*10*10*)*,(0|1)*01(0|1)*,1*0*,第三章,3.请描述下面正规式定义的串.字母表S=x,y。a)x(x|y)*x 必须以 x 开头和x结尾的串 b)x*(yx+)*x*每个 y 至少有一个 x 跟在后边的串 c)(x|y)*(xx|yy)(x|y)*所有含两个相继的x或两个相继的y的串,第三章,4.指出哪些串是自动机可接受的xy xyxxy yyyx xyyxyxyxxy,第三章,5.将下图所示的非确定有限自动机(NFA)变换成等价的确定有限自动机(DFA)。,第三章,解:用子集法将NFA确定化,如下图所示。,
6、X,1,3,2,3,Y,3,Y,1,3,4,3,2,3,4,Y,2,3,Y,2,3,Y,2,3,Y,3,4,3,Y,3,4,Y,3,4,3,4,2,3,4,Y,2,3,4,Y,2,3,4,Y,2,3,4,Y,3,4,Y,3,4,Y,上图所对应的DFA如下所示。,第三章,对上图的DFA进行最小化。首先将状态分为非终态集和终态集两部分:0,1,2,5和3,4,6,7。由终态集可知,对于状态3、6、7,无论输入字符是a还是b的下一状态均为终态集,而状态4在输入字符b的下一状态落入非终态集,故将其化为分0,1,2,5,4,3,6,7,第三章,第三章,对于非终态集,在输入字符a、b后按其下一状态落入的状
7、态集不同而最终划分为0,1,2,5,4,3,6,7按顺序重新命名为0、1、2、3、4、5,得到最简DFA如下图所示。,0,1,2,5,4,3,6,7,6.设有L(G)=a2n+1b2ma2p+1|n0,p0,m1。(1)给出描述该语言的正规表达式;(2)构造识别该语言的确定有限自动机(可直接用状态图形式给出)。解:(1)该语言对应的正规式为a(aa)*bb(bb)*a(aa)*。(2)a(aa)*bb(bb)*a(aa)*正规表达式对应的NFA如下图所示。,第三章,第三章,正规表达式:a(aa)*bb(bb)*a(aa)*,用子集法将上图确定化,如图所示。,X,1,2,1,1,2,3,4,5,
8、6,Y,Y,3,4,5,4,Y,6,重新命名后的状态转换矩阵可化简为(可由最小化方法得到)X,2 1 3,5 46 Y按顺序重新命名为0、1、2、3、4、5后得到最简的DFA,如下图所示。,第三章,a(aa)*bb(bb)*a(aa)*,7.有一台自动售货机,接收1分和2分硬币,出售3分钱一块的硬糖。顾客每次向机器中投放3分的硬币,便可得到一块糖(注意:只给一块并且不找钱)。(1)写出售货机售糖的正规表达式;(2)构造识别上述正规式的最简DFA。解:(1)设a=1,b=2,则售货机售糖的正规表达式为a(b|a(a|b)|b(a|b)。(2)画出与正规表达式a(b|a(a|b)|b(a|b)对应
9、的NFA,如图所示。,第三章,第三章,正规表达式:a(b|a(a|b)|b(a|b),第三章,用子集法将NFA确定化。,Y,3,Y,Y,2,Y,Y,1,3,Y,X,1,2,由转换矩阵可看出,非终态2和非终态3面对输入符号a或b的下一状态相同,故合并为一个状态即最简状态0、1、2,3、4。按顺序重新命名为0、1、2、3,则得到最简DFA,如下图所示。,第三章,第三章,第四章,作业4.3 设有文法GS:SA AB|AiBBC|B+C C)A*|(1)将文法GS改写为LL(1)文法。2)求经改写后的文法的每个非终结符的FIRST集和FOLLOW集。3)构造相应的预测分析表。,第四章,1)将文法GS改
10、写为LL(1)文法。文法GS为左递归文法,削去文法左递归后的文法为:SAABAA iBA|BCBB+CB|C)A*|(,SA AB|AiBBC|B+C C)A*|(,第四章,1)将文法GS改写为LL(1)文法。FIRST(C)=(,)FIRST(B)=+,FIRST(B)=(,)FIRST(A)=i,FIRST(A)=(,)FIRST(S)=(,)FOLLOW(S)=$FOLLOW(A)=$,*FOLLOW(A)=$,*FOLLOW(B)=i,$,*FOLLOW(B)=i,$,*FOLLOW(C)=+,i,$,*,SA ABA A iBA|BCB B+CB|C)A*|(,第四章,SELECT(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 习题 答案

链接地址:https://www.31ppt.com/p-6393744.html