收藏 分享(赏)

编译原理习题(汇总).docx

上传人:tkhy51908 文档编号:6994053 上传时间:2019-04-29 格式:DOCX 页数:11 大小:66.36KB
下载 相关 举报
编译原理习题(汇总).docx_第1页
第1页 / 共11页
编译原理习题(汇总).docx_第2页
第2页 / 共11页
编译原理习题(汇总).docx_第3页
第3页 / 共11页
编译原理习题(汇总).docx_第4页
第4页 / 共11页
编译原理习题(汇总).docx_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、第 1、 2 章一 填空1.若源程序是用高级语言编写的,目标程序是_语言的程序,则相应的翻译程序称为编译程序。2.(华中科大)翻译程序是这样一种程序,它能够将_ 转换成与其等价的_。3. 对编译程序而言,输入数据是_,输出结果是_。4.(华东计算所)汇编程序是将_翻译成_;编译程序是将_翻译成_a 汇编语言程序b 机器语言程序c 高级语言程序d a 或 be a 或 cf b 或 c5. (国防科大)编译过程中,语法分析器的任务是_(1 )分析单词是怎样构成的(2 )分析单词串是如何构成语句和说明的的(3 )分析语句和说明是如何构成程序的(4 )分析程序的结构A (2) (3 ) B (2)

2、(3) (4 ) C (1) (2) (3 ) D (1 ) (2) (3) (4 )6. (国防科大)文法 G 产生的 _的全体是该文法描述的语言。7.(中国科大)乔姆斯基定义的 4 种形式语言文法分别为_文法(又称_文法) 、_文法(又称_文法) 、_文法(又称_文法) 、_文法(又称_文法) 。8. 上下文无关文法比正规文法具有更强的描述能力。判断正误?9.程序语言由和定义。10. 文法 G 所产生的句子的全体是() ,记为() 。11.一个上下文无关文法包含的 4 个组成部分是() 。第 4 章1. 基本思想:从识别符号出发,不断建立直接推导,试图构造一个推导序列,最终由它推导出与输入

3、符号串相同的符号串。从语法树的角度讲,自上而下分析过程是以开始符号为根节点,试图向下构造一颗语法树,使其末端节点符号串正好与输入符号串相同。2. LL(1 )文法P73(1 )文法不含左递归;(2 )文法中每一个非终结符 A 的各个产生式的候选首符集两两不相交即:若 A1|2| n则 first(i)first(j)= ()(3) 对文法中每个非终结符,若它存在某个候选首符集包含 ,则 first(A)follow(A)= 重点:左递归的消除计算 FIRST 和 FOLLOW 集合3. LL(1 )预测分析表的构造1.自上而下分析会遇到的主要问题有左递归和回溯。2. 语法分析常用的方法是_自上

4、而下_和_自下而上_第 5 章 自下而上分析1.基本思想:从待输入的符号串开始,利用文法的规则步步向上规约,试图规约到文法的开始符号。从语法树的角度看,自下而上分析的过程是以输入符号串作为末端节点符号串,向着根节点的方向往上构造语法树,使识别符号正好是该语法树的根节点。如果最终根节点是识别符号,则输入符号串被识别出是相应语言的一个句子;否则不是。2. 自下而上分析过程:边输入单词符号,边归约。核心问题:识别可归约串“算符优先分析” 中:“最左素短语” “可归约串”“规范归约分析” 中:“句柄”“可归约串”3。算符优先分析不是一种规范归约法,是一种自下而上的语法分析法,关键在于规定算符(即终结符

5、)之间的优先顺序和结合性质,借助这种优先关系寻找“可归约串”进行归约。特点:有利于表达式分析,宜于手工实现。4. 算符优先文法:如果一个算符文法 G 中的任何终结符对(a,b)至多只满足下述三关系之一:a b,a b,a b则称 G 是一个算符优先文法。5. FIRSTVT 和 LASTVT 集合构造集合 FIRSTVT(P):按定义,我们用以下两条规则构造集合 FIRSTVT(P):(1)若有产生式 Pa或 PQa, 则 aFIRSTVT(P);(2)若 aFIRSTVT(Q), 且有产生式 PQ, 则 aFIRSTVT(P)。构造集合 LASTVT(P):按定义,我们用以下两条规则构造集合

6、 LASTVT(P):(1)若有产生式 Pa 或 PaQ, 则 aLASTVT(P);(2)若 aLASTVT(Q), 且有产生式 PQ, 则 aLASTVT(P) 。算符优先分析举例:i+i*ii P90算符优先分析法每次都是对最左素短语进行规约LR(K)文法A 都是无二义性的 B 都是二义性的 C 一部分是二义性的第 5 章附加1文法:EE+T|TT T*F|FF (E)|i证明 E+T*F 是它的一个句型,并指出该句型所有短语、直接短语和句柄。解:E+T*F 是它的一个句型,因为存在下面语法树:短语:T*F, E+T*F直接短语:T*F句柄:T*F2 文法:S a | | (T)T T,

7、S | S(1) 给出(a,(a,a)和(a,a),(a),a)的最左和最右推导;(2) 指出 (a,a),(a),a)的规范归约以及每一步的句柄,根据这个规范归约,给出“移进-归约”过程,并给出它的语法树自下而上构造过程。解:(1) 略(2) 规范句型及每一步的句柄(用下划线标示):“移进-规约”过程:步骤 分析栈 输入串 动作(1 ) # (a,a),(a),a)# 预备(2 ) #( (a,a),(a),a)# 移进EE + TT * F1) ( a,a),(a),a)2) ( S,a),(a),a)3) (T, a ),(a),a)4) ( T,S ),(a),a)5) ( (T) ,

8、(a),a)6) ( S ,(a),a)7) ( T , ,(a),a)8) ( T ,S ,(a),a)9) (T,( a ),a)10) (T,( S ),a)11) (T, (T) ),a)12) ( T,S ),a)13) ( (T) ,a)14) ( S ,a)15) ( T ,a)16) ( T ,S )17) (T)18) S(3 ) #( (a,a),(a),a)# 移进(4 ) #( a,a),(a),a)# 移进(5 ) #(a ,a),(a),a)# 移进(6 ) #(S ,a),(a),a)# 归约(7 ) #(T ,a),(a),a)# 归约(8 ) #(T, a),

9、(a),a)# 移进(9 ) #(T,a ),(a),a)# 移进(10 ) #(T,S ),(a),a)# 归约(11 ) #(T ),(a),a)# 归约(12 ) #(T) ,(a),a)# 移进(13 ) #(S ,(a),a)# 归约(14 ) #(T ,(a),a)# 归约(15 ) #(T, ,(a),a)# 移进(16 ) #(T, ,(a),a)# 移进(17 ) #(T,S ,(a),a)# 归约(18 ) #(T ,(a),a)# 归约(19 ) #(T, (a),a)# 移进(20 ) #(T,( a),a)# 移进(21 ) #(T,(a ),a)# 移进(22 )

10、#(T,(S ),a)# 归约(23 ) #(T,(T ),a)# 归约(24 ) #(T,(T) ),a)# 移进(25 ) #(T,S ),a)# 归约(26 ) #(T ),a)# 归约(27 ) #(T) ,a)# 移进(28 ) #(S ,a)# 归约(29 ) #(T ,a)# 归约(30 ) #(T, a)# 移进(31 ) #(T,a )# 移进(32 ) #(T,S )# 归约(33 ) #(T )# 归约(34 ) #(T) # 移进(35 ) #S # 归约(36 ) #S # 接受 语法树的自下而上的构造过程:3 ( 1)计算练习 2 文法 G2 的 FIRSTVT 和

11、 LASTVT;(2)计算 G2 的优先关系,G2 是一个算符优先文法吗?(3)给出输入串(a,(a,a)的算符优先分析过程。解:(1 )FIRSTVT LASTVTS a, , ( a, , ) T , ,a, , ( , ,a, , ) (2 ) 优先关系表如下:a ( ) , #a ( , # ,4 #(S, (a,a)# 移进 (,5 #(S,( a,a)# 移进 ,8 #(S,(S, a)# 移进 ()11 #(S,(T )# 归约 ,)12 #(S,(T) )# 移进 (=)13 #(S,S )# 归约 )14 #(T )# 归约 ,)15 #(T) # 移进 (=)16 #S #

12、 归约 )#17 #S# 分析成功5考虑文法:S AS|bASA|a(1 )列出这个文法所有的 LR(0)项目;(2 )构造这个文法的 LR(0)项目集规范族以及识别活前缀的 DFA;(3 )这个文法是 SLR 的吗?若是,构造分析表;(4 )这个文法是 LALR 或 LR(1)的吗?解:拓广文法如下:SSS AS|bASA|a(1 ) 所有 LR(0)项目如下:1) S.S 2)SS. 3)S.AS 4)SA.S 5)SAS. 6)S.b 7) Sb . 8)A.SA 9) AS.A 10)A SA. 11)A .a 12)A a.(2 ) 该文法的 LR(0)项目集规范族如下:DFA 略。

13、I0: SSSASSbASAAaI1=Go(I0,S): SSASAASAAaSASSbI2=Go(I0,A): SASSASSbASAAaI3=Go(I0,b): SbI4=Go(I0,a): AaI6=Go(I1,S): ASAASAAaSASSbI5=Go(I1,A): ASASASSASSbASAAaI7=Go(I2,S): SASASAASAAaSASSb(3 ) FIRST (S) =b, a FIRST (A) =a, bFOLLOW(S) =#, a, b FOLLOW(A) =a, b 在 LR(0)项目集规范族中,同时存在“移进- 归约”和“归约 -归约”项目的项目集有I1

14、,I5 和 I7;其中 I1 中“归约”项目是“接受”项目,面临 #时接受,移进项目要求面临 a和 b 时移进,不存在冲突;I5 中归约项目面临 FOLLOW(A)中元素 a,b 时归约, “移进”项目面临 a,b 时移进,存在冲突;同理,I7 也存在冲突。所以该文法不是 SLR 的。(或者:构造出 SLR 分析表,指出存在多重入口)(4 ) 构造 LR(1)项目集规范族:因为:I5,I8,I9 中存在“移进- 归约”冲突,所以该文法不是 LR(1)的,更不是 LALR 的。(!此题另解:该文法是二义文法,故不是任何 LR 文法。 )本章补充作业:1文法 GS,构造 LR(1)分析表:S aA

15、d | bAc | aec | bedAe解:(1)拓广文法如下:0) SS1) SaAd2) SbAcI0:SS ,#SAS,#/a/bSb,#/a/bASA,a/bAa,a/bI1=Go(I0,S): SS,#ASA, a/bASA, a/bAa, a/bSAS, a/bSb, a/bI2=Go(I0,A): SAS, #/a/bSAS, #/a/bSb, #/a/bASA, a/bAa, a/bI3=Go(I0,b):Sb, #/a/bI4=G(I0,a): Aa, a/bI6=Go(I1,S): ASA , a/bASA, a/bAa, a/bSAS, a/bSb, a/bI7=Go(

16、I1,b): Sb, a/bI9=Go(I5,S): SAS, a/bASA, a/bASA, a/bAa, a/bSAS, a/bSb, a/bI10=Go(I5,A): SAS, a/bSAS, a/bSb, a/bASA, a/bAa, a/bI5=Go(I1,A): ASA, a/bSAS, a/bSAS, a/bSb, a/bASA, a/bAa, a/bI8=Go(I2,S): SAS, #/a/bASA, a/bASA, a/bAa, a/bSAS, a/bSb, a/b3) Saec4) Sbed5) Ae(2) LR(1)项目集规范族构造如下:(3)LR(1)分析表如下:I0

17、: S.S, #S.aAd, #S.bAc, #S.aec, #S.bed, #I1: S S., #I2: Sa.Ad, #Sa.ec, #A.e, dI3: Sb.Ac, #Sb.ed, #A.e, cI4: SaA.d, #I5: Sae.c, #Ae., dI6: SbA.c, #I7: Sbe.d, #Ae., cI8: SaAd., #I9: Saec., #I10: SbAc., #I11: Sbed., #2文法 GS:SABAaBa|BbAb|(1)该文法是 SLR 的吗?(2)若是,请构造它的分析表;(3)给出输入串 baab#的分析过程。解:对文法拓广:(0)SS(1)S

18、AB(2)AaBa(3)A(4)BbAb (5)B(1)构造 LR(0)项目集规范族如下:因为:FOLLOW(S)=# FOLLOW(A)=b,# FOLLOW(B)=a,#I0 面临 FOLLOW(A)中元素时归约,面临 a 时移进,不存在冲突;同理,I2,I3,I5 中的冲突也可以用 SLR 方法解决,所以该文法是 SLR 的。(2)SLR 分析表如下:(3)步骤 状态栈 符号栈 输入串0 0 # baab#1 02 #A baab#2 025 #Ab aab#3 0253 #Aba ab#4 02536 #AbaB ab#5 025368 #AbaBa b#I0: S.SS.ABA.aB

19、aA.I1: S S.I2: SA.BB.bAb B.I3: Aa.BaB.bAb B.I4: SAB.I5: Bb.AbA.aBaA.I6: AaB.aI7: BbA.bI8: AaBa.I9: BbAb.6 0257 #AbA b#7 02579 #AbAb #8 024 #AB #9 01 #S #3若有文法 GS:SS;M|MMMbD|DDD(S)|(1)证明 GS是 SLR 文法,并构造它的分析表;(2)给出 GS的 LR(1)项目集规范族中的 I0。解:(1)拓广文法为:0)SS1)SS;M2)SM3)MMbD4)MD5)DD(S) 6)DLR(0)项目集规范族如下:FOLLOW(

20、S)=#,;,)FOLLOW(M)=#,;,),bFOLLOW(D)=#,;,),b,cSLR 分析表如下:I0: S.SS.S;MS.MM.MbDM.DD.D(S) D.I1: S S.SS.;MI2: SM.MM.bDI3: MD.DD.(S) I4: SS; .MM.MbDM.DD.D(S) D.I5: MMb.DD.D(S) D.I6: DD(.S)S.S;MS.MM.MbDM.DD.D(S) D.I7: SS;M.MM.BdI8: MMbD.DD.(S)I9: DD(S.)SS.;MI10: DD(S).分析表入口唯一,所以是 SLR 的。(2)LR(1)项目集规范族中的 I0:S.S, #S.S;M, #/;S.M, #/;M.MbD, #/;/bM.D, #/;/bD.D(S), #/;/b/(D. , #/;/b/(第 6 章1。对于某个上下文无关文法,当把每个文法符号联系于一组属性,且让该文法的产生式规则附加以 属性计算 时,称该文法为属性文法。2. 文法符号的属性有两种,一种称为 综合属性 ,另一种成为 继承属性 3. 一个文法符号的继承属性是通过语法树中它的 父结点和/或兄弟结点 的相应文法符号的属性值来计算的,而综合属性是通过语法树中它的 子 结点的属性值来计算的4. 语法制导的编译程序能同时进行 语法 分析和 语义 分析

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报