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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

编译原理习题解答.docx

1、编译原理习题解答第二章:习题2-4 Table表var x,y;procedure p;var a;procedure q;var b;beginb:=10;en d;procedure s;var c,d;procedure r;var e,f;begincall q;en d;begincall r;en d;begincall s;en d;begincall p;end根据:Page289,变量table:array0.txmax of record 结构体以及block函数得到下表,而表中各部分的含义, 见教材 Page18,Page19NameKi nkVal /LevelAdrS

2、izexvariable030yvariable040pprocedur010avariable130qprocedur134sprocedur170cvariable230dvariable240rprocedur200第三章 文法和语言5.写一文法,使其语言是偶正整数的集合 要求:(1)允许 0 打头(2)不允许 0 打头解: GS=(S,P,D,N,0,1,2, ,9,P,S)P:S PD|DP-NP|ND 0|2|4|6|8N-0|1|2|3|4|5|6|7|8|9(2)GS=(S,P,R,D,N,Q ,0,1,2, ,9,P,S)P:S PD|P0|DP-NR|NR-QR|QD 2|

3、4|6|8N-1|2|3|4|5|6|7|8|9Q-0|1|2|3|4|5|6|7|8|96.已知文法 G::=|+|-:=|*|/:=()|i 。 试给出下述表达式的推导及语法树。(1)i; (2)(i) (3)i*i;(4)i*i+i; (5)i+(i+i); (6)i+i*i 。解:(1)v=i=w(2)v=()=()=()=(i)=w(3)v=*=*=i*i=w(4)v=+=+=*+ =*+=i*i+i=w(5)v=+=+=+=i+() = i+(+)=i+(+)= i+(+)=i+(i+i)=w(6)v=+=+=+=i+ =i+*= i+*= i+i*i=w语法树见下图(3)i*i项

4、因子因子i7.为句子i+i*i 构造两棵语法树,从而证明下述文法 G表达式 是二义的。表达式:=i|( 表达式)|表达式 运算符 表达式运算符:=+卜|*|/解:为句子i+i*i构造的两棵语法树如下:所以,该文法是二义的。8.习题1中的文法GS是二义的吗?为什么?答:是二义的。因为对于句子 abc可以有两种不同的生成树,即: S=Ac=abc和S=aB=abc11.令文法GE为:E T|E+T|E-TT F|T*F|T/FF (E)|i证明E+T*F是它的一个句型,指出这个句型的所有短语、直接短语和句柄。解:可为E+T*F构造一棵语法树(见下图),所以它是句型。E/TE + TT * F从语法

5、树中容易看出,E+T*F的短语有:T*F是句型E+T*F的相对于T的短语,也是相对于规则 T T*F的直接短语。E+T*F是句型E+T*F的相对于E的短语。句型E+T*F的句柄(最左直接短语)是 T*F。12.下述文法GE生成的语言是什么?给出该文法的一个句子, 该句子至少含五个终结符, 构造该句子的语法树。证明:PC是G的句型,并指出该句型的所有短语、直接短语和句柄。 | | a|b|c +|- *|/解:(1)n|n=0计算文法GE的语言:由于 L(T)=(a|b|c)(a|b|c)(*|/)n所以 L(E)=L(T)(L(T)(+|-) |n=0(2)该文法的一个句子是 aab*+,它的

6、语法树是: b证明:G的句型,并指出该句型的所有短语、直接短语和句柄。 由于下面的语法树可以生成 POP所以它是G的句型。由于 = 且 = 所以 MOP是句型 PO相对 于的短语,也是相对于规则 MOP的直接短语。由于 = 且 = POP:所以 POP是句型PO相对于 的短语。显然,句型 PO的句柄是 =0n m m n(2)1 0 10 |n,m=0(3)WaW|W属于0|a ,W表示 W的逆解:(1)所求文法为 GS=(S,A,a,b,P,S), 其中 P为:S AAA aAb| e(2)所求文法为 GS=(S,A,0,1,P,S), 其中 P为:S 1S0|AA 0A1| e*(3)W属

7、于0|a 是指 W可以的取值为 e ,0,a,00,a0,aa0,00aa,a0a0, t如果 W=aa0a00则 W=00a0aa。所求文法为 GS=(S,P,Q,0,a,P,S), 其中 P为:S 0S0|aSa|an m n m15.语言WaW和a b c d 是上下文无关的吗?能看出它们反映程序设计语言的什么特性吗?答:生成语言WaW的文法非常简单,如GS: S WaWW aW|bW| e可见GS是上下文无关的。生成语言anbmcnd的文法非常复杂,用上下文无关文法不可能办到,只能用上下文有关文法。这是因 为要在ancn的中间插入而同时要在其后面插入 dm。即a,c相关联,b,d相关联

8、。这说明对语言的限定越多(特别是语言中的符号前后关联越多) ,生成它的文法越复杂,甚至于很难找到一个上下文法无关文法。16.给出生成下述语言的三型文法:(1)a n|n=0(2)a nbm|n,m=1(3)a nbmck|n,m,k=0解:(1)生成的 3 型文法是:GS : S aS| &(2)生成的 2 型文法是:GS: S ABA aA|aB bB|b 生成的 3 型文法是: GS : S aPP aP|bDD bD| &(3)生成的 2 型文法是:GS: S ABCA aA| &B bB| &C-cC| & 生成的 3 型方法是:GS : A aA|bB|cC| &B bB|cC| &

9、C cC| &第四章词法分析1构造下列正规式相应的 DFA(1)1(0 * 101(2)1(1010* | 1(010) * 1)* 0(3)a(a|b) *|ab*a)* b(4)b(ab) * | bb) * ab解:(1)1(0|1) * 101 对应的 NFA为F表由子集法将NFA转换为DFAI10 = &closure(MoveTo(l,0)I 1 = &closure(MoveTo(l,1)A0B1B1B1C1,2C1,2D1,3C1,2D1,3B1E1,4E1,4B1B1F表由子集法将NFA转换为DFAI10 = &closure(MoveTo(l,0)I 1 = &closur

10、e(MoveTo(l,1)A0B1,6B1,6C10D2,5,7C10D2,5,7E3,8B1,6E3,8F1,4,6,9F1,4,6,9G1,2,5,6,9,10D2,5,7G1,2,5,6,9,10H1,3,6,9,10I1,2,5,6,7H1,3,6,9,10J1,6,9,10K2,4,5,7I1,2,5,6,7L3,8,10I1,2,5,6,7J1,6,9,10J1,6,9,10D2,5,7K2,4,5,7M2,3,5,8B1,6L3,8,10F1,4,6,9M2,3,5,8N3F1,4,6,9N3O4O4P2,5P2,5N3B1,6F表由子集法将NFA转换为DFAI10 = &clo

11、sure(MoveTo(l,0)I 1 = &closure(MoveTo(l,1)AxBzAxBzCx,zDyCx,zCx,zEx,yDyEx,yEx,yFx,y,zAxFx,y,zFx,y,zEx,y1F面将该DFA最小化:(1)首先将它的状态集分成两个子集: R=A,D,E,P 2=B,C,F(2)区分 P2:由于 F(F,1)=F(C,1)=E,F(F,0)=F 并且 F(C,O)=C,所以 F, C 等价。由于 F(B,O)=F(C,O)=C, F(B,1)=D,F(C,1)=E,而 D, E 不等价(见下步),从而 B 与 C, F 可以区分。有 P21=C,F,P 22=B。 区

12、分P1:由于A,E输入0到终态,而D输入0不到终态,所以D与A,E可以区分,有Pn=A,E,P 12=D(4)由于F(A,0)=B,F(E,0)=F, 而B, F不等价,所以 A,E可以区分。综上所述,DFA可以区分为P=A,B,D,E,C,F。所以最小化的 DFA如下:3将图4.16确定化:解:下表由子集法将 NFA转换为DFAI10 = &closure(MoveTo(l,0)I 1 = &closure(MoveTo(l,1)ASBQ,VCQ,UBQ,VDV,ZCQ,UCQ,UEVFQ,U,ZDV,ZGZGZEVGZFQ,U,ZDV,ZFQ,U,ZGZGZGZ4.把图4.17的 和(b)

13、分别确定化和最小化:(b)解: (a):A,然后删除B所在的行。)IIa = gclosure(MoveTo(l,a)I b = &closure(MoveTo(l,b)A0B0,1C1B0,1B0,1C1C1A0下表由子集法将NFA转换为DFA可得图(a1),由于F(A,b)=F(B,b)=C, 并且F(A,a)=F(B,a)=B, 所以A,B等价,可将 DFA最小化,即:删除B,将原来引向B的引线引向与其等价的状态 A,有图(a2)。( DFA的最小化,也可看作将上表中的 B全部替换为 (b):该图已经是 DFA下面将该 DFA最小化:(6)首先将它的状态集分成两个子集: Pi=O,P 2

14、=1,2,3,4,5(7)区分P2 :由于 F(4,a)=0 属于终态集,而其他状态输入 a后都是非终态集,所以区分 F2如下:P2i=4,P 22=1,2,3,5。(8)区分P22:由于F(1,b)=F(5,b)=4 属于P21,而F(2,b)与F(3,b)不等于4,即不属于P2i,所以区分P22如下:P221=1,5,P 222=2,3。(9)区分 P221:由于 F(1,b)=F(5,b)=4, 即 F(1,a)=1,F(5,a)=5, 所以 1,5 等价。(10)区分 P222:由于 F(2,a)=1 属于 P221,而 F(3,a)=3 属于 氐,所以 2,3 可区分。P222 区分

15、为 P22212 ,P2222Q(11)结论:该DFA的状态集可分为:P= 0,1,5,2,3,4 , 其中1,5等价。删去状态 5,将原来引向5的引线引向与其等价的状态 1,有图(b1)。(b1)最小化的DFA5构造一个 DFA它接收艺=0,1上所有满足如下条件的字符串:每个 1都有0直接跟在右边。然后再构造该语言的正则文法。解:根据题意,DFA所对应的正规式应为:(0|(10) *。所以,接收该串的 NFA如下:0F表由子集法将NFA转换为DFAI10 = &closure(MoveTo(l,0)I 1 = &closure(MoveTo(l,1)A0B0,2C1B0,2B0,2C1C1B

16、0,2对应的正规文法为:GA:A 1C|0A| C 0A6设无符号数的正规式为e:e =dd*|dd *.dd *|.dd *|dd *e(s| & )dd*|e(s| & )dd*|.dd *e(s| & )dd*|dd *.dd *e(s| & )dd化简 e,画岀 e 的 DFA 其中 d=0,1,2,9,s=+, -解:把原正规式的每 2, 3项,4, 5项,6, 7项分别合并后化简有:e =dd*|d *.dd *|d *e(s| & )dd *|d *.dd *e(s| & )dd *=dd*|d *.dd *|(d *|d *.dd *)e(s| & )dd *=( |d *.|

17、(d *|d *.dd *)e(s| & )dd *=( |d *.|d *( |.dd *)e(s| )dd *F表由子集法将NFA转换为DFAII d =-closure(MoveTo(l,d)I e= -closure(MoveTo(I,e)I s=-closure(MoveTo(l,s)I .= -closure(MoveTo(I,.)A0,1,4,6:B1,7C5,6r D2,6B1,7B1,7D2,6C5,6E7F6D2,6G3,4,7E7E7F6厂E7G3,4,7G3,4,7C5,67给文法GS:S aA|bQA aA|bB|bB bD|aQQ aQ|bD|bD bB|aAE a

18、B|bFF bD|aE|b构造相应的最小的 DFA解:由于从S岀发任何输入串都不能到达状态 E和F,所以,状态E, F为多余的状态,不予考虑。这样,可以写岀文法 GS对应的NFAF表由子集法将NFA转换为DFAII a = &closure(MoveTo(l,a)I b = &closure(MoveTo(l,b)1S2A3Q2A2A4B,Z3Q3Q5D,Z4B,Z3Q6D5D,Z2A7B6D2A7B7B3Q6D由上表可知:(1)因为4, 5是DFA的终态,其他是非终态,可将状态集分成两个子集:Pi=1,2, 3,6,7,P2=4,5 在R中因为2,3输入b后是终态,而1,6,7输入b后是非终

19、态,所以 P可区分为:Pii=1,6,7,P12=2,3在P11中由于1输入b后为3, 6输入b后为7,而3,7分属Pn和P所以1与6不等价,同理,1与 7不等价。所以 P11可区分为:Pm=1 , Ph2=6 , 7查看P112=6 , 7,由于输入a后为2, 3,所以6, 7是否等价由2, 3是否等价决定。查看P12=2 , 3,由于输入b后为4, 5,所以2, 3是否等价由4, 5是否等价决定。(6)查看P2=4 , 5,显然4, 5是否等价由2, 3与6, 7是否同时等价决定。由于有(4)即6, 7是否 等价由2, 3是否等价决定,所以,4, 5是否等价由2, 3是否等价决定。由于有(

20、5)即2, 3是否等价由 4, 5是否等价决定,所以有 4, 5等价,2, 3等价,进而6, 7也等价。(7)删除上表中的第3, 5, 7行,并将剩余行中的 3, 5, 7分别改为对应的等价状态为 2, 4, 6有下表:II aIb1S2A2A2A2A4B,Z4B,Z2A6D6D2A6D这样可得最小化的 DFA如下:a8 给岀下述文法所对应的正规式:S 0A|1BA 1S|1B 0S|0解:把后两个产生式代入第一个产生式有:S=01|01SS=10|10S有:S=01S|10S|01|10=(01|10)S|(01|10)=(01|10) 即:(01|10) *(01|10)为所求的正规式。4

21、.189 将图解:(1)(5)因为7。由于由于由于(01|10)的DFA最小化,并用正规式描述它所识别的语言:bbba4图 4.186, 7是DFA的终态,其他是非终态,可将状态集分成两个子集:P1=1 , 2, 3, 4, 5 , P2=6,F(6,b)=F(7,b)=6, 而6, 7又没有其他输入,所以 6 , 7等价。F(3,c)=F(4,c)=3,F(3,d)=F(4,d)=5,F(3,b)=6,F(4,b)=7, 而 6,F(1,b)=F(2,b)=2,F(1,a)=3,F(2,a)=4, 而 3, 4 等价,所以 1,2 等价。7等价,所以3,4等价。由于状态5没有输入字符b,所以

22、与1, 2, 3 , 4都不等价。综上所述,上图 DFA的状态可最细分解为: P=1 , 2 , 3 , 4 , 5 , 6 , 7。b该DFA用正规式表示为:b*a(c|da) *bb10 构造下述文法 GS的自动机:S A0A A0|S1|0该自动机是确定的吗?若不确定,则对它确定化。该自动机相应的语言是什么?解:由于该文法的产生式 S A0,A A0|S1中没有字符集 Vt的输入,所以不是确定的自动机。 要将其他确定化,必须先用代入法得到它对应的正规式。把 S A0代入产生式 A S1有:A=A0|A01|0=A(0|01)|0=0(0|01) *。代入S A0有该文法的正规式:0(0|

23、01) *0,所以,改写该文法为确定的自动机为:由于状态A有3次输入0的重复输入,所以上图只是 NFA,下面将它确定化:F表由子集法将NFA转换为DFAI10 = &closure(MoveTo(l,0)I b = &closure(MoveTo(l,1)AWBXBXCX,Y,ZCX,Y,ZCX,Y,ZBX由上表可知DFA为:第五章 自顶向下语法分析方法1对文法 GSS a| A |(T)T T,S|S(1)给出 (a,(a,a) 和 (a,a), A ,(a),a) 的最左推导。(2)对文法G,进行改写,然后对每个非终结符写岀不带回溯的递归子程序。(3)经改写后的文法是否是 LL(1) 的?

24、给出它的预测分析表。(4)给岀输入串(a,a)#的分析过程,并说明该串是否为 G的句子。解:(1) (a,(a,a)的最左推导为S (T)(T,S) (S,S)(a,(T)(a,(T,S)(a,(S,a)(a,(a,a)(a,a),A ,(a),a) 的最左推导为S (T)(T,S) (S,a)(T),a)(T,S),a)(T,S,S),a)(S,A ,(T),a)(T), A ,(S),a)(T,S), A ,(a),a)(S,a),A ,(a),a)(a,a),A ,(a),a) 由于有T T,S的产生式,所以消除该产生式的左递归,增中一个非终结符 U有新的文法 GS:S a| A |(T)T SUU ,SU| 分析子程序的构造方法 对满足条件的文法按如下方法构造

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

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