编译原理(第2版)陈意云+张昱编著课后答案.ppt
《编译原理(第2版)陈意云+张昱编著课后答案.ppt》由会员分享,可在线阅读,更多相关《编译原理(第2版)陈意云+张昱编著课后答案.ppt(107页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、编译原理(第2版)陈意云+张昱编著课后答案目录chap 1 基本知识chap 3 词法分析chap 4 语法分析chap 5 语法制导翻译chap 6 运行时刻环境chap 7 中间代码生成chap 8 代码生成2 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 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,(
2、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 6(d)构造各个句子的最右推导.最右推导(规范推导)(e)这个文法产生的语言是什么?a (a)(a,a)(a,a),a).a和数据元素为a的广义表全体71.2 考虑文法 S aSbS|bSaS|(a)试说明此文法是二义性的.(定义1.5)如果一文法的句子存在两棵分析树,则该句子是二义性的.如果一文法包含二义性的句子,则这个文法是二义性的.可以从句子abab有两个不同的最左推导来说明.S aSbS abS abaSbS ababS abab
3、 lm lm lm lm lm S aSbS abSaSbS abaSbS ababS abab lm lm lm lm lm 句子abab有两个不同的最左推导,该句子是二义性的.所以此文法是二义性的.8(b)对于句子abab构造两个相应的最右推导.S aSbS aSb abSaSb abSab abab rm rm rm rm rm S aSbS aSbaSbS aSbaSb aSbab abab 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组成的
4、字符串.91.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 开始符号:bexpr10(b)试对于句子 not(true or false)构造一棵分析树.bexpr bterm bfactor not bfactor (bexpr )bexpr or bterm bt
5、erm bfactor bfactor false true11(c)试说明此文法产生的语言是全体布尔表达式.12练习:长度为n的字符串,分别有多少个前缀,后缀,子串,真前缀,子序列?前缀:n+1后缀:n+1子串:1+n+(n-1)+.+1=1+n(n+1)/2真前缀:n子序列:1+Cn1+Cn2+Cn3+.+Cnn=2n13 E E +T T *F i给出句型E+T*i的短语,直接短语和句柄 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句柄:F14第三章 练习3.3 试描述
6、下列正规表达式所表示的语言:(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符号串全体.15(d)0*10*10*10*(e)(00|11)*(01|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)*16
7、3.4 对于下列语言分别写出它们的正规表达式:(a)英文字母组成的所有符号串,要求符号串中顺序包含 五个元音字母.令letter=非元音的英文字母 letter*(a|A)letter*(e|E)letter*(i|I)letter*(o|O)letter*(u|U)letter*(b)英文字母组成的所有符号串,要求符号串中的字母依 照字典序排列.(a|A)*(b|B)*(c|C)*.(z|Z)*17(c)没有重复出现的数字的数字符号串全体.(d)最多有一个重复出现的数字的数字符号串全体令 ri=i|,i=0,1,2,.,9 R0|R1|R2|.|R9记为 Ri i(0,1,2.,9)P(0,
8、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)18(e)带有偶数个0和奇数个1的由0和1组成的符号串全体.E为带有偶数个0和1的由0和1组成的符号串全体.即(00|11)*(01|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)*)*19练习:1.令A,B和C是任意正规式,证明以
9、下关系成立:A|A=A (A*)*=A*A*=|AA*(AB)*A=A(BA)*(A|B)*=(A*B*)*=(A*|B*)*A=b|aA当且仅当A=a*b203.6 给出接受下列在字母表0,1上的DFA。(a)所有以00结束的符号串的集合;AstartB0C010NFA等价于A1startBC00011DFA(1|0)*0021(b)所有具有三个0的符号串的集合。1*01*01*01*AstartB0C01DFA11B01223.7 构造等价于下列正规表达式的有限自动机.(a)10|(0|11)0*100011AstartD1BEC1NFA 0 1A D BCD D EBC E DE /10
10、10AstartBC0DEDFA123(b)(0|1)*|(11)*0|111AstartCBEDNFA 0 1ABDE ABDE ABCDEABCDE ABDE ABCDE11Astart0BDFA01Astart最小化DFA0243.8 给定右线性文法G:S 0S|1S|1A|0B A 1C|B 0C|1 C 0C|1C|0|1 试求一个等价的左线性文法G.000,11SstartB1ACf状态转移图100,10,1左线性文法G:f A1|B0|C1|C0 A S1 B S0 C A1|B0|C1|C0 S S0|S1|图中状态C和f可合并,得到左线性文法G:C A1|B0|C1|C0 A
11、 S1 B S0 S S0|S1|253.9-3.11(d)(a|b)*abb(a|b)*1start2a4ba3bbba由正规表达式构造NFA1start12a14b13bbaaba124a134bba由NFA得到DFAABCDEFB C D E F A B C D E ABaDbCbabaab最小化DFA263.13 对于下列正规表达式构造最小状态的DFA.(b)(a|b)*a(a|b)(a|b)a1start2a43babNFAbaAstartBabHGaCDaaaEFabaaabbbb最小化DFA274.4 考虑文法 R R|R|RR|R*|(R)|a|b(a)试说明此文法生成在符号a
12、和b之上的所有正规表达式.(b)试说明此文法是二义性的.(c)试构造一个等价的无二义性文法.(b)句子a|aa的两种最左推导.句子aa*的两种最左推导.RR Ra R *a R R *R R a a(c)消除二义性 R R|S|S S ST|T T U*|U U(R)|a|b284.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 e
13、3 then s2 else s3 if e1 then if e2 then s1 else if e3 then s2 else s3 S MSif E then MS else S e1 if E then MS else S MS e2 other if E then S other s1 e3 MS s3 other s2 Sif E then S e1 MSif E then MS else S e2 other MS s1 if E then MS else S e3 other MS s2 other s3294.3 对于下面的每一个语言设计一个文法。试问其中哪些语言是正规的?
14、(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|0B130(d)所有形如xy而xy的由0和1组成的符号串。S 0E|1E|LBRE 00E|01E|10E|11E|B I I1B|O
15、O1B|IO1C|OI1CC IO1C|OI1C|I1 O OI1O1I IO1I1I I I1O1O OO1L I 1LLO 0LI1R R1O1R R0LR 所有形如xy而x=y的由0和1组成的符号串。S 0S0|1S1|314.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|324.7对于文法S aSbS|bSaS|构造一个带有回溯的递归下降分析器.问能否构造一个
16、预测分析器.procedure match(t:token);begin ifkahead=t thenend;procedure S;begin if match334.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 bfactor bterm|bfactor no
17、t 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,$,)34(1)bexpr bterm bexpr(2)bexpr or bterm bexpr(3)bexpr (4)bterm bfactor bterm(5)
18、bterm and bfactor bterm (6)bterm (7)bfactor not bfactor(8)bfactor (bexpr)(9)bfactor true(10)bfactor falseFirst(bexpr)=First(bterm)=First(bfactor)=not,(,true,falseFirst(bexpr)=or,First(bterm)=and,Follow(bexpr)=$,)Follow(bexpr)=$,)Follow(bterm)=or,$,)Follow(bterm)=or,$,)Follow(bfactor)=or,and,$,)or an
19、d 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 354.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)Follow(A)=Firs
20、t(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)文法.364.12试说明没有一个LL(1)文法可以是二义性的。若有一个LL(1)文法是二义性的,则存在句子w 有两种不同的最左推导:S*A 1 *w S*A 2 *w 对于文法中的产生式 A 1|2,其中1,2 First(1
21、)First(2)=First(w)与LL(1)文法矛盾.374.15 文法 S (L)|a L L,S|S的算符优先关系由表4.20给出。建立与表相应的算符优先函数并用算符优先分析法分析句子(a,(a,a)及(a,(a,a),(a,a)。算符优先关系表 a (),$a (=),$算符优先函数 a (),$f 2 0 2 2 0g 3 3 0 1 0句子(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 s
22、hift$(S,(a ,a)$a,reduce$(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 384.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)
23、RS当且仅当G中存在产生式 .R.,其中 +S.或+S.(3)RS当且仅当G中存在产生式 .S.,其中 +.R 或+.R最左终结符:S.或 S.,S是的最左终结符 .,则的最左终结符是的最左终结符对于文法中 R.的产生式,R 的最左终结符.39(b)bexpr bexpr or bterm|bterm bterm bterm and bfactor|bfactor bfactor not bfactor|(bexpr)|true|false or and not ()true false$or (=true false$acc 最左终结符 最右终结符bexpr or,and,not,(,tru
24、e,false or,and,not,),true,falsebterm and,not,(,true,false and,not,),true,falsebfactor not,(,true,false not,),true,false404.18 给出文法LR(0)项目集族及相应的识别活前缀的自动机的状态转移图.S S C cC S CC C d I0:S .S S .CC C .cC C .dI1:S S.I2:S C.C C .cC C .dI3:C c.C C .cC C .dI4:C d.I5:S CC.I6:C cC.I0I1SCI2cI3CI5dI4cdCI6cdstart41
25、4.19 利用图4.31画出文法4.27的识别活前缀的自动机的状态转移图.(P.200)I0:S .S S .iSeS S .iS S .aI1:S S.I2:S i.Ses S i.S S .iSeS S .iS S .a0I3:S a.I4:S iS.eS S iS.I5:S iSe.S S .iSeS S .iS S .aI6:S iSeS.iI0I1SaI3iI2SI4istarteI5SI6aa424.21 考虑文法 S A S|b A S A|a(1)构造文法的LR(0)项目集规范族及相应的DFA.(2)如果把每一个LR(0)项目看成一个状态,并从每个形如B.X的状态出发画一条标记
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 陈意云 编著 课后 答案
限制150内