《编译原理习题》PPT课件.ppt
《《编译原理习题》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《编译原理习题》PPT课件.ppt(106页珍藏版)》请在三一办公上搜索。
1、1,编译原理习题,2003.4,2,目录,chap 1 基本知识chap 3 词法分析chap 4 语法分析chap 5 语法制导翻译chap 6 运行时刻环境chap 7 中间代码生成chap 8 代码生成,3,第一章 练习,1.1 文法 S(L)|a L L,S|S(a)指出文法的终结符号,非终结符号,开始符号.,文法的四个组成部分:终结符号 VT:语言不可再分的基本符号 非终结符号VN:语法范畴(语法概念)开始符号 S:最终感兴趣的语法范畴 产生式 P:定义语法范畴的一种书写形式,终结符号:(,)a 非终结符号:S L开始符号:S,元语言符号:表示“定义为”|表示“或”,4,(b)给出句
2、子的分析树,分析树:(推导树)表示一个句型的推导,(a,(a,a),S(L)L,S S(L)a S a,5,(c)给出句子的最左推导 给出每次推导后得到的句型的短语,直接短语,最左推导:推导中任何一步 都是对中的最左非终结 lm 符号进行替换的推导.短语 是文法的句型(S*)S*A且A+则是关于A的句型的短语.直接短语 是文法的句型(S*)S*A且A 则是关于A的句型的直接短语.句柄:一个句型的最左直接短语称为句柄.,6,S(L)(L,S)(S,S)(a,S)(a,(L)短语(L)L,S S a a(L,S)S,S a,S a,(L)(S,S)(a,S)(a,(L)(L)直接(L)L,S S
3、a a 短语(L)(a,(L,S)(a,(S,S)(a,(a,S)(a,(a,a)短语 a a a a a,(L,S)a,(S,S)a,(a,S)a,(a,a)(a,(L,S)(a,(S,S)(a,(a,S)(a,(a,a)L,S S a a(L,S)S,S a,S a,a(S,S)(a,S)(a,a)直接 a a a a短语 L,S S a a a,7,(d)构造各个句子的最右推导.最右推导(规范推导)(e)这个文法产生的语言是什么?a(a)(a,a)(a,a),a).a和数据元素为a的广义表全体,8,1.2 考虑文法 S aSbS|bSaS|(a)试说明此文法是二义性的.(定义1.5)如果
4、一文法的句子存在两棵分析树,则该句子是二义性的.如果一文法包含二义性的句子,则这个文法是二义性的.可以从句子abab有两个不同的最左推导来说明.S aSbS abS abaSbS ababS abab lm lm lm lm lm S aSbS abSaSbS abaSbS ababS abab lm lm lm lm lm 句子abab有两个不同的最左推导,该句子是二义性的.所以此文法是二义性的.,9,(b)对于句子abab构造两个相应的最右推导.S aSbS aSb abSaSb abSab abab rm rm rm rm rm S aSbS aSbaSbS aSbaSb aSbab a
5、bab rm rm rm rm rm(c)对于句子abab构造两个相应的分析树.S S a S b S a S b S b S aS a S b S(d)此文法产生的语言是什么?由相同个数的a和b组成的字符串.,10,1.3 考虑文法 bexpr bexpr or bterm|bterm bterm bterm and bfactor|bfactor bfactor not bfactor|(bfactor)|true|false(a)请指出此文法的终结符号,非终结符号和开始符号.,终结符号:or,and,not,(,),true,false 非终结符号:bexpr,bterm,bfactor
6、 开始符号:bexpr,11,(b)试对于句子 not(true or false)构造一棵分析树.,bexpr bterm bfactor not bfactor(bexpr)bexpr or bterm bterm bfactor bfactor false true,12,(c)试说明此文法产生的语言是全体布尔表达式.,13,练习:长度为n的字符串,分别有多少个前缀,后缀,子串,真前缀,子序列?,前缀:n+1后缀:n+1子串:1+n+(n-1)+.+1=1+n(n+1)/2真前缀:n子序列:1+Cn1+Cn2+Cn3+.+Cnn=2n,14,E E+T T*F i,给出句型E+T*i的短
7、语,直接短语和句柄,E E+T F T*F,给出句型F+T*F的短语,直接短语和句柄,短语:i,T*i,E+T*i直接短语:i句柄:i,短语:F,T*F,F+T*F直接短语:F,T*F句柄:F,15,第三章 练习,3.3 试描述下列正规表达式所表示的语言:(a)0(0|1)*0,(b)(|0)1*)*,由0和1组成且以0开始和结束的符号串全体.,(c)(0|1)*0(0|1)(0|1),由0和1组成的符号串全体.,由0和1组成且以000,001,010或011结束的符号串全体.长度大于等于3且倒数第3个字符为0的01符号串全体.,16,(d)0*10*10*10*,(e)(00|11)*(01
8、|10)(00|11)*(01|10)(00|11)*)*,有且只有3个1的0、1字符串全体.,带有偶数个0和偶数个1的由0和1组成的符号串全体.,带有偶数个a和偶数个b的符号串全体.(aa|bb)|(ab|ba)(aa|bb)*(ab|ba)*,17,3.4 对于下列语言分别写出它们的正规表达式:(a)英文字母组成的所有符号串,要求符号串中顺序包含 五个元音字母.,令letter=非元音的英文字母 letter*(a|A)letter*(e|E)letter*(i|I)letter*(o|O)letter*(u|U)letter*,(b)英文字母组成的所有符号串,要求符号串中的字母依 照字典
9、序排列.,(a|A)*(b|B)*(c|C)*.(z|Z)*,18,(c)没有重复出现的数字的数字符号串全体.,(d)最多有一个重复出现的数字的数字符号串全体,令 ri=i|,i=0,1,2,.,9 R0|R1|R2|.|R9记为 Ri i(0,1,2.,9)P(0,1,2.,9)表示0,1,2.,9的全排列 ri0ri1.ri9 i0i1.i9P(0,1,2.,9),i ri0ri1.ri9i(0,1,2.,9)i0i1.i9P(0,1,2.,9),19,(e)带有偶数个0和奇数个1的由0和1组成的符号串全体.,E为带有偶数个0和1的由0和1组成的符号串全体.即(00|11)*(01|10)
10、(00|11)*(01|10)(00|11)*)*E 1 E|E 0 E 1 E 0 E,(f)不包含子串011的由0和1组成的符号串全体.,(g)不包含子序列011的由0和1组成的符号串全体,1*0*10*|,1*(0*|(10)*)*,20,练习:1.令A,B和C是任意正规式,证明以下关系成立:A|A=A(A*)*=A*A*=|AA*(AB)*A=A(BA)*(A|B)*=(A*B*)*=(A*|B*)*A=b|aA当且仅当A=a*b,21,3.6 给出接受下列在字母表0,1上的DFA。(a)所有以00结束的符号串的集合;,(1|0)*00,22,(b)所有具有三个0的符号串的集合。,1*
11、01*01*01*,23,3.7 构造等价于下列正规表达式的有限自动机.(a)10|(0|11)0*1,24,(b)(0|1)*|(11)*,25,3.8 给定右线性文法G:S 0S|1S|1A|0B A 1C|B 0C|1 C 0C|1C|0|1 试求一个等价的左线性文法G.,26,(d)(a|b)*abb(a|b)*,27,3.13 对于下列正规表达式构造最小状态的DFA.(b)(a|b)*a(a|b)(a|b),28,4.4 考虑文法 R R|R|RR|R*|(R)|a|b(a)试说明此文法生成在符号a和b之上的所有正规表达式.(b)试说明此文法是二义性的.(c)试构造一个等价的无二义性
12、文法.,(b)句子a|aa的两种最左推导.句子aa*的两种最左推导.,29,4.5 dangling-else文法:stmt if expr then stmt|matched-stmt matched-stmt if expr then matched-stmt else stmt|other 试说明此文法是二义性的。,句子 if e1 then if e2 then s1 else if e3 then s2 else s3 if e1 then if e2 then s1 else if e3 then s2 else s3,30,4.3 对于下面的每一个语言设计一个文法。试问其中哪些语
13、言是正规的?(a)使得在每一个0后至少立即跟随一个1的由0和1组成的符号串的全体。,(b)具有相同数目的0和1的由0和1组成的符号串的全体。,(c)具有不同数目的0和1的由0和1组成的符号串的全体。,S 1S|01S|(1|01)*,S 0S1S|1S0S|非正规语言,S SAS S 0S1S|1S0S|A B|C 非正规语言B 1B|1C 0C|0S A|BA 0|0A|A0|10A|01A|A10|A01|1A0|0A1B 0|0B|B0|10B|01B|B10|B01|1B0|0B1,31,(d)所有形如xy而xy的由0和1组成的符号串。,S 0E|1E|LBRE 00E|01E|10E
14、|11E|B I I1B|OO1B|IO1C|OI1CC IO1C|OI1C|I1 O OI1O1I IO1I1I I I1O1O OO1L I 1LLO 0LI1R R1O1R R0LR,所有形如xy而x=y的由0和1组成的符号串。S 0S0|1S1|,32,4.5(a)给出一个上下文无关产生式的集合,使它与A B*a(C|D)生成同样的 符号串集合。A B a E B B B|E C|D(b)是否可以把E T|E+T写为:E T+T 是否可以把E T|E+T|E-T写为:E T(+|-T)E T+T 等价于 E T T T+TT|,33,4.7对于文法S aSbS|bSaS|构造一个带有回
15、溯的递归下降分析器.问能否构造一个预测分析器.,procedure match(t:token);begin ifkahead=t thenend;procedure S;begin if match,34,4.9 对于文法 bexpr bexpr or bterm|bterm bterm bterm and bfactor|bfactor bfactor not bfactor|(bexpr)|true|false 构造一个预测分析器。1.消除左递归bexpr bterm bexpr bexpr or bterm bexpr|bterm bfactor btermbterm and bfac
16、tor bterm|bfactor not bfactor|(bexpr)|true|false2.First(bexpr)=First(bterm)=First(bfactor)=not,(,true,false First(bexpr)=or,First(bterm)=and,Follow(bexpr)=$,)Follow(bexpr)=$,)Follow(bterm)=or,$,)Follow(bterm)=or,$,)Follow(bfactor)=or,and,$,),35,(1)bexpr bterm bexpr(2)bexpr or bterm bexpr(3)bexpr(4)b
17、term bfactor bterm(5)bterm and bfactor bterm(6)bterm(7)bfactor not bfactor(8)bfactor(bexpr)(9)bfactor true(10)bfactor false,First(bexpr)=First(bterm)=First(bfactor)=not,(,true,falseFirst(bexpr)=or,First(bterm)=and,Follow(bexpr)=$,)Follow(bexpr)=$,)Follow(bterm)=or,$,)Follow(bterm)=or,$,)Follow(bfact
18、or)=or,and,$,),or and not true false()$bexpr(1)(1)(1)(1)synch synch bexpr(2)(3)(3)bterm synch(4)(4)(4)(4)synch synch bterm(6)(5)(6)(6)bfactor synch synch(7)(9)(10)(8)synch synch,36,4.11试说明没有一个左递归文法可以是LL(1)的。(1)直接左递归文法中存在产生式:A A1|A2|.|Am|1|2|.|n,其中 1 2.n均不以A开头 First(Ai)First(j)=First(j)若 j*,First(A i
19、)Follow(A)=First(i),不是LL(1)文法.(2)间接左递归文法中存在产生式集合:A B1 1|1|2|.|n B1 B2 2.Bm A First(B1 1)=First(A m.1)First(j)First(B1 1),j=1,.,n First(j)First(B1 1),j=1,.,n 若 j*,First(B1 1)Follow(A)=First(m.1),不是LL(1)文法.,37,4.12试说明没有一个LL(1)文法可以是二义性的。若有一个LL(1)文法是二义性的,则存在句子w 有两种不同的最左推导:S*A 1*w S*A 2*w 对于文法中的产生式 A 1|2
20、,其中1,2 First(1)First(2)=First(w)与LL(1)文法矛盾.,38,4.15 文法 S(L)|a L L,S|S的算符优先关系由表4.20给出。建立与表相应的算符优先函数并用算符优先分析法分析句子(a,(a,a)及(a,(a,a),(a,a)。,算符优先关系表 a(),$a(=),$,句子(a,(a,a)的分析过程栈 输入 动作$(a,(a,a)$(shift$(a,(a,a)$(a shift$(a,(a,a)$a,reduce$(S,(a,a)$(,shift$(S,(a,a)$,(shift$(S,(a,a)$(a shift$(S,(a,a)$a,reduce
21、$(S,(S,a)$(,shift$(S,(S,a)$,a shift$(S,(S,a)$a)reduce$(S,(S,S)$,)reduce$(S,(L)$(=)shift$(S,(L)$)reduce$(S,S)$,)reduce$(L)$(=)shift$(L)$)$reduce$S$accept,39,4.16 试为下列各文法建立算符优先关系表。(a)S a S b S|b S a S|,a b$a=b=$acc,设G是一个运算符文法,R和S是G中任何两个终结符,定义:(1)R=S当且仅当G中存在产生式.RS.或.RS.(2)R.R.,其中+S.或+S.(3)RS当且仅当G中存在产生式
22、.S.,其中+.R 或+.R,最左终结符:S.或 S.,S是的最左终结符.,则的最左终结符是的最左终结符对于文法中 R.的产生式,R的最左终结符.,40,(b)bexpr bexpr or bterm|bterm bterm bterm and bfactor|bfactor bfactor not bfactor|(bexpr)|true|false,41,4.18 给出文法LR(0)项目集族及相应的识别活前缀的自动机的状态转移图.S S C cC S CC C d,42,4.19 利用图4.31画出文法4.27的识别活前缀的自动机的状态转移图.(P.200),I0:S.S S.iSeS S
23、.iS S.aI1:S S.I2:S i.Ses S i.S S.iSeS S.iS S.a0,I3:S a.I4:S iS.eS S iS.I5:S iSe.S S.iSeS S.iS S.aI6:S iSeS.,43,4.21 考虑文法 S A S|b A S A|a(1)构造文法的LR(0)项目集规范族及相应的DFA.(2)如果把每一个LR(0)项目看成一个状态,并从每个形如B.X的状态出发画一条标记为X的弧到状态BX.,且从从每个形如B.A的状态出发画一条标记为的弧到所有形如A.的状态.这样就得到了一个NFA.说明这个NFA和(1)的DFA是等价的.(3)构造文法的SLR分析表.(4)
24、对于输入串bab,给出SLR分析器的动作.(5)构造文法的LR(1)分析表和LALR分析表.,44,I0:S.S S.AS S.b A.SA A.aI1:(I0,S)S S.A S.A A.SA A.a S.AS S.bI2:(I0,A)(I2,A)(I6,A)S A.S S.AS S.b A.SA A.aI3:(I0,b)(I1,b)(I2,b)(I5,b)(I6,b)(I7,b)S b.I4:(I0,a)(I1,a)(I2,a)(I5,a)(I6,a)(I7,a)A a.,I5:(I1,S)(I5,S)(I7,S)A S.A A.SA A.a S.AS S.bI6:(I1,A)(I5,A)
25、(I7,A)A SA.S A.S S.AS S.b A.SA A.aI7:(I2,S)(I6,S)S AS.A S.A A.SA A.a S.AS S.b,45,First(S)=First(S)=First(A)=b,aFollow(S)=$Follow(S)=a,b,$Follow(A)=a,bSLR分析表,STATE ACTION GOTO a b$S A0 s4 s3 1 21 s4 s3 acc 5 62 s4 s3 7 2 3 r3 r3 r34 r5 r5 5 s4 s3 5 66 s4/r4 s3/r4 7 27 s4/r2 s3/r2 r2 5 6,SLR分析表存在移入-归约
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译原理习题 编译 原理 习题 PPT 课件
链接地址:https://www.31ppt.com/p-5569011.html