编译原理答案陈意云高等教育出版社.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《编译原理答案陈意云高等教育出版社.pdf》由会员分享,可在线阅读,更多相关《编译原理答案陈意云高等教育出版社.pdf(144页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、编译原理习题课编译原理习题课编译原理习题课编译原理习题课(1)(1)2.32.3 叙述由下列正规式描述的语言0(0|1)*0(|0)1*)*(0|1)*0(0|1)(0|1)0*10*10*10*(00|11)*(01|10)(00|11)*(01|10)(00|11)*)*2.3(2.3(续续续续)一种表述(这里说的01串包括)0(0|1)*0 以0开头和结尾的长度至少是2的01串(|0)1*)*所有的01串(0|1)*0(0|1)(0|1)倒数第三位是0的01串0*10*10*10*含有3个1的01串(00|11)*(01|10)(00|11)*(01|10)(00|11)*)*含有偶数个
2、0和偶数个1的01串(习题集P1/1.1)2.42.4 为下列语言写正规定义包含5个元音的所有字母串,其中每个元音只出现一次 且按序排列按词典序排列的所有字母串C语言的注释相邻数字都不相同的所有数字串最多只有一处相邻数字相同的所有数字串由偶数个0和偶数个1组成的所有01串由偶数个0和奇数个1组成的所有01串不含字串011的01串2.4(2.4(续续续续)一种答案包含5个元音的所有字母串,其中每个元音只出现一次 且按序排列5个元音a,e,i,o,u 不含5个元音的任意字符:B-DF-HJ-NP-TV-Zb-df-hj-np-tv-z,记为*(a|A)*(e|E)*(i|I)*(o|O)*(u|U
3、)*按词典序排列的所有字母串A*a*B*b*Z*z*C语言的注释不含/,*的任意字符记为不含*/的任意字符串:(*+/*)*/*(*+/*)*/2.4(2.4(续续续续)一种答案(续)相邻数字都不相同的所有数字串123031357106678035 123 0 313571 0 6678 0 35 3 1 357 1 答案见习题集P2/1.32.4(2.4(续续续续)一种答案(续)最多只有一处相邻数字相同的所有数字串与上题类似 1230313571006678035 123 0 313571 00 6678 0 35 3 1 357 1 answer-double_0|double_1|dou
4、ble_9 其中double_i表示相邻的数字是idouble_0-0?(no_00)*no_000(no_00)*no_0?|00 no_0-2.4(2.4(续续续续)一种答案(续)最多只有一处相邻数字相同的所有数字串(续)double_i-i?(no_ii)*no_iii(no_ii)*no_i?|ii no_i-(0|no_0_i0)(no_0_i0)*(no_0_i?)|no_0_i no_0_i-no_0-(i-2)_i-no_0-(i+1)-比如i=5 double_5-5?(no_55)*no_555(no_55)*no_5?|55 no_5 -0|no_0_50)(no_0_5
5、0)*(no_0_5?)|no_0_5 no_0_5-1|no_0-1_51)(no_0-1_51)*(no_0-1_5?)|no_0-1_5 no_0-1_5-2|no_0-2_52)(no_0-2_52)*(no_0-2_5?)|no_0-2_5 no_0-2_5-3|no_0-3_53)(no_0-3_53)*(no_0-3_5?)|no_0-3_5 no_0-3_5-4|no_0-54)(no_0-54)*(no_0-5?)|no_0-5 no_0-5-2.4(2.4(续续续续)一种答案(续)由偶数个0和偶数个1组成的所有01串习题集P2/1.2由偶数个0和奇数个1组成的所有01串习题
6、集P2/1.2even_0_even_100|11*(01|10)(00|11)*(01|10)(00|11)*)*even_0_even_1=(00|11)*(01|10)(00|11)*(01|10)(00|11)*)*e v e n _ 0 _ o d d _ 1 1 e v e n _ 0 _ e v e n _ 1|0(0 0|1 1)*(0 1|1 0)e v e n _ 0 _ e v e n _ 1 对于偶数个0 和奇数个1 构成的串,其第一个字符可能是0 或1。(1)如果是1,那么剩下的部分一定是偶数个0 和偶数个1 (2)如果是0,那么经过若干个0 0 或1 1,一定会出现
7、一个0 1 或1 0,才能保证0 的个数是偶数,1 的个数是奇数.若串还没有结束,剩余部分一定是偶数个0 和偶数个1。这样,正确的正规定义是:e v e n _ 0 _ o d d _ 1 1 e v e n _ 0 _ e v e n _ 1|0(0 0|1 1)*(0 1|1 0)e v e n _ 0 _ e v e n _ 12.4(2.4(续续续续)一种答案(续)不含字串011的01串当出现0后,1只能单独出现1*(0+1)*0*2.72.7 用算法2.4为下列正规式构造NFA,并给出 处理ababbab的状态转换序列(a|b)*(a*|b*)*(|a)b*)*(a|b)*abb(a
8、|b)*2.7(2.7(续续续续)(|a)b*)*ababbab:s-4-0-1-5-6-7-8-4-0-1-5-6-7-6-7-8-4-0-1-5-6-7-8-f01a234567b58sfstart2.112.11 可以通过正规式的最简DFA同构来证明正 规式等价。证明下列正规式等价(a|b)*(a*|b*)*(|a)b*)*2.11(2.11(续续续续)NFA-DFA1)-closure(s)=s,4,f,0,2,3,5,6,8=A2)-closure(move(A,a)=-closure(1)=1,5,6,8,4,f,0,2,3=B3)-closure(move(A,b)=-closu
9、re(7)=7,6,8,4,f,0,2,3,5=C4)-closure(move(B,a)=-closure(1)=B5)-closure(move(B,b)=-closure(7)=C6)-closure(move(C,a)=-closure(1)=B7)-closure(move(C,b)=-closure(7)=Cbab abstartCBAa2.11(2.11(续续续续)DFA-最简DFA1)划分为接受状态集合F=A,B,C和非接受状态S-F=2)由于S-F为空集,只考虑F:对于A,输入a,转换为B,输入b,转换为C对于B,输入a,转换为B,输入b,转换为C对于C,输入a,转换为B,输
10、入b,转换为C因此F不需进一步划分sstartab2.132.13 构造表示0,1个数都是偶数的01字符串的 DFA习题集P3/1.42.142.14 能被5整除的二进制数习题集P4/1.5谢谢!谢谢!谢谢!谢谢!编译原理习题课编译原理习题课编译原理习题课编译原理习题课(2)(2)3.13.1 考虑文法 S-(L)|a L-L,S|S(a)建立句子(a,(a,a)和(a,(a,a),(a,a)的分 析树(b)为(a)的两个句子构造最左推导(c)为(a)的两个句子构造最右推导(d)这个文法产生的语言是什么3.1(3.1(续续续续)-(a,(a,aa,(a,a)S=(L)=(L,S)=(S,S)=
11、(a,S)=(a,(L)=(a,(L,S)=(a,(S,S)=(a,(a,S)=(a,(a,a)S(L )L ,SSa(L )L ,SSaaS=(L)=(L,S)=(L,(L)=(L,(L,S)=(L,(L,a)=(L,(S,a)=(L,(a,a)=(S,(a,a)=(a,(a,a)3.1(3.1(续续续续)-(a,(a,a),(a,aa,(a,a),(a,a)S(L )L ,SSaS=(L)=(L,S)=(S,S)=(a,S)=(a,(L)=(a,(L,S)=(a,(S,S)=(a,(L),S)=(a,(L,S),S)=(a,(S,S),S)=(a,(a,S),S)=(a,(a,a),S)=
12、(a,(a,a),(L)=(a,(a,a),(L,S)=(a,(a,a),(S,S)=(a,(a,a),(a,S)=(a,(a,a),(a,a)(L )L ,S(L )L ,SSaa(L )L ,SSaaSS=(L)=(L,S)=(L,(L)=(L,(L,S)=(L,(L,(L)=(L,(L,(L,S)=(L,(L,(L,a)=(L,(L,(S,a)=(L,(L,(a,a)=(L,(S,(a,a)=(L,(L),(a,a)=(L,(L,S),(a,a)=(L,(L,a),(a,a)=(L,(S,a),(a,a)=(L,(a,a),(a,a)=(S,(a,a),(a,a)=(a,(a,a),(a
13、,a)3.1(3.1(续续续续)描述的语言:括号匹配的串,串中的各项由”,”隔开,项可以是括号匹配的子串或a3.23.2 考虑文法 S-aSbS|bSaS|(a)为句子abab构造两个不同的最左推导,以说明此文法二义(b)为abab构造对应的最右推导(c)为abab构造对应的分析树(d)这个文法产生的语言是什么3.2(3.2(续续续续)(1)S=aSbS=abS=abaSbS=ababS=abab(2)S=aSbS=abSaSbS=abaSbS=ababS=abab S=aSbS=aSb=abSaSb=abSab=abab(2)Sa S b Sa S b SSa S b Sb S a S(1)
14、(2)描述的语言是a,b数目相等的串3.43.4 文法 R-R|R|RR|R*|(R)|a|b 产生字母表(a,b)上所有不含的正规式 该文法是二义的(a)证明该文法产生字母表a,b上的所有正 规式(b)为该文法写一个等价的非二义文法。(c)按照上面的两个文法构造ab|b*a的分析 树3.4(3.4(续续续续)证明该文法产生字母表a,b上的所有正规式 证明:1)该文法产生的串是字母表a,b上的正规式 R-a和R-b产生a,b,而a,b是a,b上的符号,因此是正规式。若R1,R2产生正规式,则:R-R1R2产生正规式 R-R1|R2产生正规式|R-R1*产生正规式*R-(R1)产生正规式()2)
15、字母表a,b上的所有正规式都可由此文法产生 字母表a,b上的任一正规式(其中,为正规式)必为以下形式之一:,可由R-RR产生|,可由R-R|R产生*,可由R-R*产生(),可由R-(R)产生 a,可由R-a产生 b,可由R-b产生 因而,该文法产生字母表a,b上的所有正规式3.4(3.4(续续续续)该文法没有体现运算符|、*、()、并置的优 先级,因而是二义的。R=R|R=a|R=a|R*=a|b*R=R*=R|R*=a|R*=a|b*E-E|T|T T-TF|F F-F*|(E)|a|bE=E|T=E|F=E|F*=E|b*=T|b*=F|b*=a|b*3.4(3.4(续续续续)-ab|ba
16、b|b*a*a 二义的 非二义的RR|RR RabR RaR *bRR RaR *R|RbR RbaEE|TT FTT FFabFF *ba3.53.5 下面的条件语句文法stmt-if expr then stmt|matched_stmtmatched_stmt-if expr then matched_stmt else stmt|other 试图消除悬空else的二义性。请证明此文法仍 是二义的。3.5(3.5(续续续续)由于matched_stmt不能保证then和else的配对,因而存在 二义性 句型if expr then if expr then matched_stmt el
17、se if expr then matched_stmt else stmt存在两个不同的最左推导 期望的是:if expr then if expr then matched_stmt else if expr then matched_stmt else stmt3.5(3.5(续续续续)一种推导,和期望的不一样 stmt=matched_stmt=if expr then matched_stmt else stmt=if expr then if expr then matched_stmt else stmt else stmt=if expr then if expr then m
18、atched_stmt else if expr then stmt else stmt=if expr then if expr then matched_stmt else if expr then matched_stmt else stmt if expr then if expr then matched_stmt else if expr then matched_stmt else stmt3.5(3.5(续续续续)另一种推导 stmt=if expr then stmt=if expr then matched_stmt=if expr then if expr then ma
19、tched_stmt else stmt=if expr then if expr then matched_stmt else matched_stmt=if expr then if expr then matched_stmt else if expr then matched_stmt else stmt if expr then if expr then matched_stmt else if expr then matched_stmt else stmt3.8(a)3.8(a)消除3.1的左递归3.8(a)(3.8(a)(续续续续)S-(L)|a L-L,S|S 只有直接左递归
20、 S-(L)|a L-SL L-,SL|3.103.10 构造下面文法的LL(1)分析表 D-TL T-int|real L-idR R-,idR|3.10(3.10(续续续续)先计算FIRST和FOLLOW FIRST(D)=FIRST(T)=int,real FIRST(L)=id FIRST(R)=,FOLLOW(D)=FOLLOW(L)=$FOLLOW(T)=id FOLLOW(R)=$3.10(3.10(续续续续)intrealid,$DD-TLD-TLTT-intT-realLL-idRRR-,idRR-3.113.11 下面文法是否LL(1)文法?说明理由 S-AB|PQx A-
21、xy B-bc P-dP|Q-aQ|3.11(3.11(续续续续)不是LL(1)文法 LL(1)文法:对于产生式A-|*(1)()()(2)()()FIRSTFIRSTFIRSTFOLLOW 若,那么 本题中,FIRST(AB)=x,FIRST(PQx)=d,a,x 不满足条件(1)3.153.15(a)用3.1的文法构造(a,(a,a)的最右推导,说出每个右句型的句柄(b)给出对应(a)的最右推导的移进-归约分 析器的步骤(c)对照(b)的移进-归约,给出自下而上构 造分析树的步骤。3.15(3.15(续续续续)(a)(b)(a)(b)S=(L)=(L,S)=(L,(L)=(L,(L,S)=
22、(L,(L,a)=(L,(S,a)=(L,(a,a)=(S,(a,a)=(a,(a,a)栈输入动作$(a,(a,a)$移进$(a,(a,a)$移进$(a,(a,a)$归约:S-a$(S(a,a)$归约:L-S$(L,(a,a)$移进$(L,(a,a)$移进$(L,(a,a)$移进$(L,(a,a)$归约:S-a3.15(3.15(续续续续)(a)(b)(a)(b)续上表续上表续上表续上表S=(L)=(L,S)=(L,(L)=(L,(L,S)=(L,(L,a)=(L,(S,a)=(L,(a,a)=(S,(a,a)=(a,(a,a)栈输入动作$(L,(S,a)$归约:L-S$(L,(L,a)$移进
23、$(L,(L,a)$移进$(L,(L,a)$归约:S-a$(L,(L,S)$归约:L-L,S$(L,(L)$移进$(L,(L)$归约:S-(L)$(L,S)$归约:L-L,S3.15(3.15(续续续续)(a)(b)(a)(b)续上表续上表续上表续上表S=(L)=(L,S)=(L,(L)=(L,(L,S)=(L,(L,a)=(L,(S,a)=(L,(a,a)=(S,(a,a)=(a,(a,a)栈输入动作$(L)$移进$(L)$归约:S-(L)$S$接受3.15(3.15(续续续续)(c)(c)栈输入动作$(a,(a,a)$移进$(a,(a,a)$移进$(a,(a,a)$归约:S-a$(S(a,
24、a)$归约:L-S$(L,(a,a)$移进$(L,(a,a)$移进$(L,(a,a)$移进$(L,(a,a)$归约:S-a(a ,(a ,a )$SLS3.15(3.15(续续续续)(c)(c)栈输入动作$(L,(S,a)$归约:L-S$(L,(L,a)$移进$(L,(L,a)$移进$(L,(L,a)$归约:S-a$(L,(L,S)$归约:L-L,S$(L,(L)$移进$(L,(L)$归约:S-(L)$(L,S)$归约:L-L,S(a ,(a ,a )$SLSLSLSL3.15(3.15(续续续续)(c)(c)(a ,(a ,a )$SLSLSLSL栈输入动作$(L)$移进$(L)$归约:S-
25、(L)$S$接受S谢谢!谢谢!谢谢!谢谢!编译原理习题课编译原理习题课编译原理习题课编译原理习题课(3)(3)3.8(a)3.8(a)(a)消除3.1的左递归(b)在(a)的基础上构造LL(1)分析表3.8(a)(3.8(a)(续续续续)S-(L)|a L-L,S|S 只有直接左递归 S-(L)|a L-SL L-,SL|3.8(b)(3.8(b)(续续续续)S-(L)|a L-SL L-,SL|FIRST(S)=(,a FIRST(L)=FIRST(S)=(,a FIRST(L)=,FOLLOW(S)=(FIRST(L)-)+FOLLOW(L)+FOLLOW(L)+$=,),$FOLLOW(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 答案 陈意云 高等教育出版社
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内