编译原理练习题_第1页
编译原理练习题_第2页
编译原理练习题_第3页
编译原理练习题_第4页
编译原理练习题_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、“编译原理”练习题一、 选择题1、汇编程序是将 a 翻译成 b ,编译程序是将 c 翻译成 d .a.汇编语言程序 b.机器语言程序 c.高级语言程序d. a 或者 b e. a 或者 c f. b 或者 c2、下面关于解释程序的描述正确的是 b . (1) 解释程序的特点是处理程序时不产生目标代码 (2) 解释程序适用于COBOL 和 FORTRAN 语言 (3) 解释程序是为打开编译程序技术的僵局而开发的 a. (1)(2) b. (1) c. (1)(2)(3) d.(2)(3)3、高级语言的语言处理程序分为解释程序和编译程序两种.编译程序有五个阶段,而解释程序通常缺少 (1)e 和 (

2、1)b .其中, (1)e 的目的是使最后阶段产生的目标代码更为高效. 与编译系统相比,解释系统 (2)d .解释程序处理语言时,大多数采用的是 (3)b 方法. (4)a 就是一种典型的解释型语言. (1): a. 中间代码生成 b.目标代码生成 c.词法分析 d.语法分析 e.代码优化 (2): a.比较简单,可移植性好,执行速度快 b.比较复杂,可移植性好,执行速度快 c.比较简单,可移植性差,执行速度慢 d.比较简单,可移植性好,执行速度慢 (3): a.源程序命令被逐个直接解释执行 b.先将源程序转化为之间代码,再解释执行c.先将源程序解释转化为目标程序,在执行 d.以上方法都可以

3、(4) : a. BASIC b. C c. FORTRAN d. PASCAL4、用高级语言编写的程序经编译后产生的程序叫 b .用不同语言编写的程序产生 b 后,可用 g 连接在一起生成机器可执行的程序.在机器中真正执行的是 e .a. 源程序 b. 目标程序 c. 函数 d. 过程 e. 机器指令代码 f. 模块 g. 连接程序 h.程序库5、要在某一台机器上为某种语言构造一个编译程序,必须掌握下述三方面的内容: c , d , f .a. 汇编语言 b. 高级语言 c. 源语言 d. 目标语言e. 程序设计方法 f. 编译方法 g. 测试方法 h. 机器语言6、由于受到具体机器主存容量

4、的限制,编译程序几个不同阶段的工作往往被组合成 (1)d ,诸阶段的工作往往是 (2)d 进行的. (1) a. 过程 b. 程序 c. 批量 d.遍 (2) a. 顺序 b. 并行 c. 成批 d.穿插7、编译过程中,语法分析器的任务就是 b . (1) 分析单词是怎样构成的 (2) 分析单词串是如何构成语句和说明的 (3) 分析语句和说明是如何构成程序的 (4) 分析程序的结构8、编写一个计算机高级语言的源程序后,到正式上机运行之前,一般要经过 b 这几步. (1) 编辑 (2) 编译 (3) 连接 (4) 运行9、编译程序必须完成的工作有 a . (1) 词法分析 (2) 语法分析 (3

5、) 语义分析 (4) 代码生成 (5) 之间代码生成 (6) 代码优化a. (1)(2)(3)(4) b. (1)(2)(3)(4)(5) c. (1)(2)(3)(4)(5)(6) d. (1)(2)(3)(4)(6) e. (1)(2)(3)(5)(6)10、编译程序是一种 B 。A. 汇编程序 B. 翻译程序 C. 解释程序 D. 目标程序11、按逻辑上划分,编译程序第二步工作是 C 。A. 语义分析 B. 词法分析 C. 语法分析 D. 代码优化12、通常一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目标代码生成等五个部分,还应包括 C 。A.模拟执行器 B.解释

6、器 C.表格处理和出错处理 D.符号执行器13、文法G所描述的语言是 C 的集合。A.文法G的字母表V中所有符号组成的符号串B.文法G的字母表V的闭包V*中的所有符号串C.由文法的开始符号推出的所有终极符串D.由文法的开始符号推出的所有符号串14、乔姆斯基(Chomsky)把文法分为四种类型,即0型、1型、2型、3型。其中3型文法是 B 。A.短语文法 B.正则文法 C.上下文有关文法 D.上下文无关文法15、文法GN=(b,N,B,N,NbbB,BbN),该文法所描述的语言是 C 。A. L(GN)=bii0 B. L(GN)=b2ii0C. L(GN)=b2i+1i0 D. L(GN)=b

7、2i+1i116、一个句型中的最左 B 称为该句型的句柄。可选项有:A. 短语 B. 简单短语 C. 素短语 D. 终结符号17、设G是一个给定的文法,S是文法的开始符号,如果Sx(其中xV*),则称x是文法G的一个 B 。A. 候选式 B. 句型 C. 单词 D. 产生式18、一个上下文无关文法G包括四个组成部分,它们是:一组非终结符号,一组终结符号,一个开始符号,以及一组 D 。A. 句子 B. 句型 C. 单词 D. 产生式19、文法GE:ETETTFTF Fa(E)该文法句型EF(ET)的简单短语是下列符号串中的 B 。(ET) ET F F(ET)可选项有:A) 和 B) 和 C)

8、和 D) 20、若一个文法是递归的,则它所产生的语言的句子 A 。A.是无穷多个 B.是有穷多个 C.是可枚举的 D.个数是常量21、词法分析器用于识别 C 。A. 句子 B. 句型 C. 单词 D. 产生式22、在语法分析处理中,FIRST集合、FOLLOW集合、SELECT集合均是 B 。A. 非终极符集 B.终极符集 C. 字母表 D. 状态集23、编译程序中语法分析器接收以 A 为单位的输入。A. 单词 B. 表达式 C. 产生式 D. 句子24、在自底向上的语法分析方法中,分析的关键是 A 。A. 寻找句柄 B. 寻找句型 C. 消除递归 D. 选择候选式25、在LR分析法中,分析栈

9、中存放的状态是识别规范句型 C 的DFA状态。A.句柄 B. 前缀 C. 活前缀 D. LR(0)项目26、词法分析的任务是(A)A识别单词B.分析句子的含义C.识别句子D.生成目代码27、代码优分的目的是(C)A.节省时间B.节省空间C.节省时间和空间D.把编译程序进行等价交换28、代码生成阶段的主要任务是(C)A.把高级语言翻译成汇编语言B.把高级语言翻译成机器语言C.把中间代码变换成依赖具体机器的目标代码D.把汇编语言翻译成机器语言29、在LR分析法中,分析栈中存放的状态是识别规范句型 C 的DFA状态。A.句柄 B. 前缀 C. 活前缀 D. LR(0)项目30、一个上下文无关文法G包

10、括四个组成部分,它们是:一组非终结符号,一组终结符号,一个开始符号,以及一组 D 。A. 句子 B. 句型 C. 单词 D. 产生式二、 是非判断题1、正规文法产生的语言都可以用上下文无关文法来描述。 ()2、如果一个文法是递归的,则其产生的语言的句子是无穷个。 ()3、文法的二义性和语言的二义性是两个不同的概念。 ()4、一个LL( l)文法一定是无二义的。 ()5、在规范规约中用最左素短语来刻划可归约串。 ()6、目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。 ()7、编译程序是对汇编程序的翻译。 ()8、计算机高级语言翻译成低级语言只有解释一种方式。 ()9、在编译中进行语法检

11、查的目的是为了发现程序中所有错误。 ()10、甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。 ()11、正则文法其产生式为Aa,ABb, A,BVN,a、bVT。 ()12、每个文法都能改写为LL(1)文法。 ()13、递归下降法允许任一非终极符是直接左递归的。 ()14、算符优先关系表不一定存在对应的优先函数。 ()15、自底而上语法分析方法的主要问题是候选式的选择。 ()16、LR法是自顶向下语法分析方法。 ()18、若一个句型中出现了某产生式的右部,则此右部一定是该句型的句柄。 ()19、一个句型的句柄一定是文法某产生式的右部。 ()20、在程序中标识

12、符的出现仅为使用性的。 ()21、在程序中标识符的出现仅为使用性的。 ()三、 名词解释题1、扫描遍:指编译程序对源程序或中间代码程序从头到尾扫描一次。2、短语:设GZ是给定文法, w=xuyV+,为该文法的句型,如果满足下面两个条件: Z xUy; U u; 则称句型xuy 中的子串u是句型xuy的短语。3、简单短语:设GZ是给定文法, w=xuyV+,为该文法的句型,如果满足下面两个条件: Z xUy; U u; 则称句型xuy 中的子串u是句型xuy的简单短语(或直接短语)。4、句柄:一个句型中的最左简单短语称为该句型的句柄。5、语法分析:按文法的产生式识别输入的符号串是否为一个句子的分

13、析过程。RR6、活前缀:若S A 是文法G中的一个规范推导,G是G的拓广文法,符号串是的前缀,则称是G的,也是G的一个活前缀。其中 S为文法开始符号。或:可归前缀的任意首部。7、可归前缀:是指规范句型的一个前缀,这种前缀不含句柄之后的任何符号。8、LR(0)项目:把产生式右部某位置上标有圆点的产生式称为相应文法的一个LR(0)项目。9、语义规则:对于文法的每个产生式都配备了一组属性的计算规则,称为语义规则。10、翻译方案:将属性文法中的语义规则用花括号 括起来,插在产生式右部的合适地方,指明语义规则的计算次序,陈述一些细节,得到一种语义动作与语法分析交错的表示方法,以表述语义动作在语法分析过程

14、中的执行时刻,称之为翻译方案。11、后缀式: 一种把运算量(操作数)写在前面把算符写在后面(后缀)的表示法。即 一个表达式E的后缀形式可以如下定义:(1) 如果E是一个变量或常量,则E的后缀式是E自身。(2) 如果E是E1 op E2形式的表达式,这里op是任何二元操作符,则E的后缀式为E1 E2op,这里E1和E2分别为E1和E2的后缀式。(3) 如果E是(E1)形式的表达式,则E1的后缀式就是E的后缀式。12、过程活动:一个过程的活动指的是该过程的一次执行。就是说,每次执行一个过程体,产生该过程体的一个活动。13、活动记录:为了管理过程在一次执行中所需要的信息,使用一个连续的存储块,这样一

15、个连续的存储块称为活动记录。14、活动的生存期:指的是从执行某过程体第一步操作到最后一步操作之间的操作序,包括执行过程时调用其它过程花费的时间。15、 基本块的DAG:一个基本块的DAG是一种其结点带有下述标记或附加信息的DAG。 (1)图的叶结点(没有后继的结点)以一标识符(变量名)或常数作为标记,表示该结点代表该变量或常数的值。如果叶结点用来代表某变量A的地址,则用addr(A)作为该结点的标记。通常把叶结点上作为标记的标识符加上下标0,以表示它是该变量的初值。 (2)图的内部结点(有后继的结点)以一运算符作为标记,表示该结点代表应用该运算符对其后继结点所代表的值进行运算的结果。 (3)图

16、中各个结点上可能附加一个或多个标识符,表示这些变量具有该结点所代表的值。16、S-属性文法:?什么是L-属性文法?它们之间有什么关系?S-属性文法是只含有综合属性的属性文法。 17、L-属性文法:L-属性文法要求对于每个产生式AX1X2Xn,其每个语义规则中的每个属性或者是综合属性,或者是Xj的一个继承属性,且该属性仅依赖于:(1) 产生式Xj的左边符号X1,X2Xj-1的属性;(2) A的继承属性。 18、语法制导翻译:语法制导翻译是对前后文无关文法的扩充,即对文法中的每个产生式都附加一个语义动作或语义子程序,且在语法分析过程中,每当需要使用一个产生式进行推导或归约时,语法分析程序除执行相应

17、的语法分析动作外,还要执行相应的语义动作或调用相应的语义子程序,完成相应的语义分析和翻译工作。19、词法分析词法分析的主要任务是从左向右扫描每行源程序的符号,按照记法规则从构成源程序的字符串中识别出一个个具有独立意义的最小语法单位,并转换成统一的内部表示,送给语法分析程序。四、 简答计算题1、已知文法GE为:ET|E+T|E-TTF|T*F|T/FF(E)|i 该文法的开始符号(识别符号)是什么?请给出该文法的终结符号集合VT和非终结符号集合VN。 找出句型T+T*F+i的所有短语、简单短语和句柄。答: 该文法的开始符号(识别符号)是E。该文法的终结符号集合VT=+、-、*、/、(、)、i。非

18、终结符号集合VN=E、T、F。句型T+T*F+I的短语为i、T*F、第一个T、T+T*F+i;简单短语为i、T*F、第一个T;句柄为第一个T。2、已知文法GS为:SdABAaA|aBBb| GS产生的语言是什么? GS能否改写为等价的正规文法?答: GS产生的语言是L(GS)=danbmn1,m0。 GS能改写为等价的正规文法,其改写后的等价的正规文法GS为: SdA A aA|aB|a B bB|b3、简述DFA与NFA有何区别 答:DFA与NFA的区别表现为两个方面:一是NFA可以若干个开始状态,而DFA仅只一个开始状态。另一方面,DFA的映象M是从K到K,而NFA的映象M是从K到K的子集

19、,即映象M将产生一个状态集合(可能为空集),而不是单个状态。4、试给出非确定自动机的定义。答:一个非确定的有穷自动机(NFA)M是一个五元组:M=(K,S,P )。其中:1. K是一个有穷集,它的每个元素称为一个状态;2. 是一个有穷字母表,它的每个元素称为一个输入符号,所以也称为输入符号表;3. SK是一个非空初态集; 4. P是状态转换函数,是在K*K的子集的映射,即,P: K*2K ;表明在某状态下对于某输入符号可能有多个后继状态。5、为正规式(a|b)*a(a|b) 构造一个等价的确定的有限自动机。答:a,baab0126、给定下列自动机,将其转换为确定的自动机。dddddddstar

20、tdSADBCEGH注:带号的结点为初始状态; 带号的结点为终止状态答:(1)消除边,得到NFA:ddddddddddddSADBCEGH注:带号的结点为初始状态; 带号的结点为终止状态(2)确定化,得到DFA:ddSABCDEGHAABCEBCEBCDEHHGDG+SAABCEGDGHDHAABCEBCEBCEHDHHDHGGDGdddddddSAAAHBCEADGADHA注:带号的结点为初始状态; 带号的结点为终止状态G7、 给定下列自动机:其中:开始状态:0 终止状态:2aaa0bbb12(1)把此自动机转换为确定自动机DFA。 (2)给出此DFA的正则表达式。答:(1): 有状态矩阵如

21、图: a b0 01 201 01 22 1 2 1 2a b 0 0,1 2 1 2 2 1 2-02aaba101bbb极小化后:02babb1a从而可得DFA如图:(2)此DFA的正则表达式为: (aa*bb)(bab)* 或 a*b(bab)*。4-13.消除下列文法GE的左递归。EE-TTTT/FFF( E )i答:消除文法GE的左递归后得到:ETEE -TETFTT/FTF( E )i8、在LL(1)分析法中,LL分别代表什么含义?答:第一个L代表从左到右的扫描,第二个L代表每次进行最左推导。9、自顶向下分析思想是什么?答:从开始符出发导出句型并一个符号一个符号地与给定终结符串进行

22、匹配。如果全部匹配成功,则表示开始符号可推导出给定的终结符串。因此判定给定终结符号串是正确句子。10、自顶向下的缺点是什么?答:在推导过程中,如果对文法不做限制。那么产生式的选择成为无根据的,只好一一去试所有可能的产生式,直至成功为止。这种方法的致命弱点是不断地回溯,大大影响速度。11、LL(1)文法的定义是什么?答:一个上下文无关文法是LL(1)文法的充分必要条件是每个非终结符A的两个不同产生式,A,A;满足SELECT(A )SELECT(A )=。其中,、不能同时。12、什么是文法的左递归?答:一个文法含有下列形式的产生式之一时:1)AA,AVN,V*2)AB,BA,A、BVN,、V*

23、则称该文法是左递归的。13、递归下降法的主要思想是什么?答:对每个非终结符按其产生式结构写出相应语法分析子程序。因为文法递归相应子程序也递归,子程序的结构与产生式结构几乎一致。所以称此种方法称为递归子程序法或递归下降法。14、自底向上分析法的原理是什么?答:在采用自左向右扫描,自底向上分析的前提下,该类分析方法是从输入符号串入手,通过反复查找当前句型的句柄(最左简单短语),并使用文法的产生式把句柄归约成相应的非终极符来一步步地进行分析的。最终把输入串归约成文法的开始符号,表明分析成功。1 ZC S2 Cif E then3 SAE4 EEA5 EA6 Ai其中:Z、C、S、A、EVN ; if

24、、then、iVT15、给定文法GZ:a) 构造此文法的LR(0)项目集规范族,并给出识别活前缀的DFA。b) 构造其SLR(1)分析表。答:1.首先拓广文法:在G中加入产生式0ZZ,然后得到新的文法G,再求G的识别全部活前缀的DFA:I0:Z.ZZ.C SC.if E thenI1:ZZ.I2:ZC .SS.AEA.iI3:Cif .E thenE.EAE.AA.iI4:ZC S.I5:SA.EI6:Ai.I7:Cif E .thenEE.AI9:SA.EE.EAE.AA.iI10:Cif E then.I11:EE.AA.iI12:SAE.EE.AI13:EEA.CSiAiiEAZI0I1

25、I6I5I2I3I7I9I12I13I11I10I8I4AtheniifEA2 Follow(Z)#Follow(C)iFollow(S)#Follow(E)#,thenFollow(A),# ,then 则可构造SLR(1)分析表为:ACTIONGOTO0iftheni#ZCSEA0S3121OK2S6453S6784r15S96r6r6r6r67S10S118r5r5r59S612810r211S61312S11r313r4r4r416、 设有文法GS:SaAAAbAbI1:SS.I0:S.S S.aAI2:Sa.AA.AbA.baI3:SaA.AA.bAI4:AAb.Ab.bbS 求识别

26、该文法所有活前缀的DFA。答:(1).首先拓广文法: 在G中加入产生式0.SS,然后得到新的文法G: 0.SS 1.SaA2.AAb3.Ab(2).再求G的识别全部活前缀的DFA:17、语法制导翻译方法的基本思想是什么?答:在语法分析过程中,每当使用一条产生式进行推导或归约时,就执行该产生式所对应的语义动作进行属性计算,完成对输入符号串的翻译。18、在一个属性文法中,对应于每个产生式Aa都有一套与之相关联的语义规则,每条规则的形式为b:f(c1,c2,ck),其中对于b的要求是什么?答:语义规则中的左部属性变量b被规定为只能是下述两种变量: 对应产生式左部符号的综合属性变量; 对应产生式右部符

27、号的继承属性变量。19、对于文法G(E):ET|E+TTF|T*FF(E)|i1) 写出句型(T*F+i)的最右推导并画出语法树。ETF(E)E+TFiTT*F2) 写出上述句型的短语,直接短语和句柄。答:1.)ETF(E) (E+T) (E+F) (E+i) (T+i) (T*F+i) 2) 短语:(T*F+i), T*F+i, T*F, i直接短语:T*F, i句柄:T*F20、构造下面文法的LL(1)分析表。S a B S | b A S | eA b A A | aB a B B | b 答: 开始符号集合和后继符号集合LL(1)分析表FirstFollowSa, b, e$Aa, b

28、a, b, $Ba, ba, b, $ab$SS a B SS b A SS eAA aA b A ABB a B BB b五、 综合题1、通过构造识别活前缀的DFA和构造分析表,来证明文法E E + id | id是SLR(1)文法。答:先给出接受该文法活前缀的DFA如下:E EE E + idE idI0E EE E+ idI1E idI2Eid+E E +idI3E E + idI4id再构造SLR分析表如下:状态 动作转移 id + $ E 0 s2 1 1 s3 acc 2 r2 r2 3 s4 4 r1 r1 表中没有多重定义的条目,因此该文法是SLR(1)的。2、为下面文法构造规范LR(1)分析表,画出像教材上图3.20这样的状态转换图就可以了。S V = E | EV * E | idE V(2)上述状态转换图有同心项目集吗?若有,合并同心项目集后是否会出现动作冲突?答:(1) 状态转换图如下:S S, $ S V = E, $S E, $V * E, =/$V id, =/$E V, $I0SEidV*S S , $I1=S V = E, $E V , $I2S E , $I3S V = E , $I9S V = E, $E V, $V * E, $V

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论