哈工大编译原理总复习

编译原理复习资料

(1) 简述规范归约的基本思想。(第五章课件第5张) 用一个寄存符号的先进后出栈,把输入符号一个一个地移进到栈里,当栈顶形成某个产生式的候选式时,即把栈顶的这一部分替换成(归约为)该产生式的左部符号。 (2) 阐述编译程序各个组成部分主要完成的工作。(课本P2~P4) 词法分析的任务:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词。 语法分析:在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单位。 语义分析与中间代码产生:对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译。 优化:在于对前段产生的中间代码进行加工变换,以期在最后阶段能产生出更为高效的目标代码。 目标代码生成:把中间代码变换成特定机器上的低级语言代码。 (3) 什么是编译器的前端和后端,这样划分有何意义?(课本P7) 编译器粗略分为 词法分析,语法分析,类型检查,中间代码生成, 代码优化,目标代码生成,目标代码优化。 把中间代码生成及之前阶段划分问编译器的前端,那么后端与前端是独立的。后端只需要一种中间代码表示,可以是三地址代码或四元式等,而这些都与前端生成的方式无关。也就是不论你前端是用fortran 还是c/c++,只要生成了中间代码表示就可以了,后端是不管你是用哪种语言生成的。 (4) 乔姆斯基把文法分为哪几种类型?对这几种类型文法作简要说明。(课本P34) 把文法分成四种类型:0,1,2,3型。与上下文无关文法一样,它们都由四部分组成,但对产生式的限制有所不同。 0型(短语文法,图灵机):产生式形如:α→β其中:∈α (VT ? VN)*且至少含有一个非终结符;∈β (VT ? VN)* 1型(上下文有关文法,线性界限自动机):产生式形如:α→β其中:|α| ≤ |β|。仅Sε→例外,但此时S不得出现在任何产生式的右部。 2型(上下文无关文法,非确定下推自动机):产生式形如: A →β其中:A∈ VN;∈β (VT ? VN)*。 3型(正规文法,有限自动机):产生式形如:A → aB 或A → a其中:a∈ VT ? {ε};A,B∈VN产生式形如: A → Ba 或 A → a 其中:a∈ VT ? {ε};A,B∈VN。 (5) 简述编译过程中遍的概念以及遍数的多少对编译器设计的影响。(参考课本P7) 遍的概念:对源程序或源程序的中间结果从头到尾扫描一次,并作有关的加工处理,生成新的中间结果或目标程序。 遍可以和阶段相应,也可无关——遍中通常含有若干个阶段。实际上,根据语言的不同,编译器可以是一遍(onepass)——所有的阶段由一遍完成,其结果是编译得很好,但(通常)代码却不太有效。Pascal 语言和C语言均允许单遍编译。(Modula-2语言的结构则要求编译器至少有两遍)。大多数带有优化的编译器都需要超过一遍:典型的安排是将一遍用于扫描和分析,将另一遍用于语义分析和源代码层优化,第3遍用于代码生成和目标层的优化。更深层的优化则可能需要更多的遍: 5遍、6遍、甚至8遍都是可能的。 备注:由于最后一道没有找到比较好的答案,欢迎大家补充。 1) 什么是句子?什么是语言?

编译原理期末考试习题及答案

一、填空题|(每题4分,共20分) 1. 乔母斯基定义的3型文法(线性文法)产生式形式 A→Ba|a,或A→aB|a,A,B∈Vn, a,b∈Vt 。 2.语法分析程序的输入是单词符号,其输出是语法单位。 3 型为 B → .aB 的LR(0)项目被称为移进项目,型为 B → a.B 的LR(0) 项目被称为待约项目, 4.在属性文法中文法符号的两种属性分别为继承属性和综合属性。 5、运行时存贮管理方案有静态存储分配、动态存储分配和堆式存储分配和方案。 二.已知文法 G(S) (1) E → T | E+T (2) T → F | F*F (3) F →(E)| i (1)写出句型(T*F+i)的最右推到并画出语法树。(4分) (2)写出上述句型的短语,直接短语和句柄。(4分) 答:(1)最右推到(2分) E ==> T ==> F ==> (E) ==> (E+T) ==> (E+F) ==> (E+i) ==> (T+i) ==> (T*F+i) (2) 语法树(2分) (3)(4分) 短语:(T*F+i),T*F+i ,T*F , i 直接短语:T*F , i 句柄:T*F 三. 证明文法G(S) :S → SaS |ε是二义的。(6分) 答:句子aaa对应的两颗语法树为:

因此,文法是二义文法 四.给定正规文法G(S): (1) S → Sa | Ab |b (2) A → Sa 请构造与之等价的DFA。(6分) 答:对应的NFA为:(6分) 状态转换表: a b {F} Φ{S} {S} {S,A} Φ {S,A} {S,A} {S} 五. 构造识别正规语言b*a(bb*a)*b* 最小的DFA(要求写出求解过程)。(15分)答:(1)对应的NFA(5分) a b {0} {1,3} {0} {1,3} Φ{2,3} {2,3} {1,3} {2,3} (5分) 六. 已知文法G(S) : (1) S → ^ | a | (T) (2) T → T,S | S 试:(1)消除文法的左递归;(4分) (2)构造相应的first 和 follow 集合。(6分) 答:(1)消除文法的左递归后文法 G’(S)为: (1) S → ^ | a | (T)

全套编译原理复习与期末必考试题

第一章: 1.编译程序的步骤和任务: 1)词法分析:从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词。 2)语法分析:是在词法分析基础上将单词序列分解成各类语法短语(比如程序、语句、表达式等),通过语法分析确定整个输入串是否构成一个语法上正确的程序。 3)语义分析:是审查源程序有无语义错误,为代码生成阶段收集类型信息。 4)中间代码产生:将源程序变成一种易于翻译成目标代码的内部表示形式。 5)代码优化:对前阶段生成的中间代码进行变换或改造,使生成的目标代码更为高效6)目标代码生成:把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。 2.前端和后端的概念,试问前端通常包括那些阶段,后端包括那些阶段? 答:前端只依赖于源语言,与目标机无关。编译程序的前端通常包括词法分析程序、语法分析程序、语义分析程序、中间代码生成程序及相关的表格管理程序和出错处理程序。后端是指编译器中依赖于目标机器的部分,只与中间代码有关。通常包括目标代码生成程序、代码优化程序以及相关的表格管理程序和出错处理程序。 遍(PASS):对输入文件(源程序或其等价的中间语言程序)从头到尾扫视,完成预定处理的过程。 一个多遍的编译程序较之一遍的编译程序可能少占内存,逻辑结构可能清晰些,但效率相对可能差点 3.程序的正确与否:结构上的语法规则,语义上的语义规则。 翻译程序:汇编,解释,编译。 4.解释程序及其与编译程序的比较 解释程序功能:源程序+初始数据=计算结果 解释与编译的区别: 工作模式:这是根本区别,编译把源程序翻译成目标代码,而解释直接得到计算结果,不生成目标代码。 存储区内容:编译方式翻译和执行分开,解释方式翻译和执行同时并允许修改源程序,因此二者存储组织不同。 效率:解释慢于编译,很多语言两种方式都有。 标识符:=表达式 第三章:文法和语言 1.文法的直观概念:一组判定规则。 在实践中,文法不包含多余产生式。 2.文法G定义为四元组(VT,VN ,S, P ),其中: VT是一个非空有穷终结符号集合; VN是一个非空有穷的非终结符号集合,且VT∩VN=Φ; P是一个产生式的非空有穷集合(注意:产生式左部至少含有一个非终结符); S VN ,称为开始符号,且S至少必须在某个产生式的左部出现一次。 通常用V表示VN∪ VT,V称为文法G的字母表或字汇表. 3.句型、句子:设文法G,如果符号串x是从识别符号推导出来的,即S→x,x∈V*,则称x 是一个句型。仅含终结符号的句型是一个句子。 4.语言:语言 L(G)是由文法G产生的所有句子所组成的集合。 5文法的类型:逐渐对产生式施加限制四种类型:0型,1型,2型,3型

编译原理复习题

编译原理复习题 一、填空题 1.编译程序的工作过程一般可以划分为词法分析,语法分析,语义分析,中间代码优化,代码优化等几个基本阶段。 2.若源程序是用高级语言编写的,目标程序是汇编程序或机器语言程序,则其翻译程序称为编译程序. 3.编译方式与解释方式的根本区别在于是否生成目标代码. 5.对编译程序而言,输入数据是源程序,输出结果是目标程序. 7.若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序。 8.一个典型的编译程序中,不仅包括词法分析、语法分析、中间代码生成、代码优化、目标代码生成等五个部分,还应包括表格管理和出错处理。其中,词法分析器用于识别单词。 10.一个上下文无关文法所含四个组成部分是一组终结符号、一组非终结符号、一个开始符号、一组产生式。 12.产生式是用于定义语法成分的一种书写规则。 13.设G[S]是给定文法,则由文法G所定义的语言L(G)可描述为:L(G)={x|Sx,x∈VT*}。 14.设G是一个给定的文法,S是文法的开始符号,如果S * ?x(其中x∈V*),则称x是 文法的一个句型。 15.设G是一个给定的文法,S是文法的开始符号,如果S * ?x(其中x∈V T*),则称x是文 法的一个句子。 16.扫描器的任务是从源程序中识别出一个个单词符号。 17.语法分析最常用的两类方法是自顶向下和自底向上分析法。 18.语法分析的任务是识别给定的终结符串是否为给定文法的句子。 19.递归下降法不允许任一非终结符是直接左递归的。 20.自顶向下的语法分析方法的关键是如何选择候选式的问题。 21.递归下降分析法是自顶向下分析方法。 22.自顶向下的语法分析方法的基本思想是:从文法的开始符号开始,根据给定的输入串并按照文法的产生式一步一步的向下进行直接推导,试图推导出文法的句子,使之与给定的输入串匹配。 23.自底向上的语法分析方法的基本思想是:从给定的终结符串开始,根据文法的规则一步一步的向上进行直接归约,试图归约到文法的开始符号。 24.自底向上的语法分析方法的基本思想是:从输入串入手,利用文法的产生式一步一步地 向上进行直接归约,力求归约到文法的开始符号。 26.在LR(0)分析法的名称中,L的含义是自左向右的扫描输入串,R的含义是最左归约, 0 的含义是向右查看输入串符号的个数为0。 31.终结符只有,它们由词法分析器提供。 32.在使用高级语言编程时,首先可通过编译程序发现源程序的全部语法错误和语义部分错误. 34.一个句型中的最左简单短语称为该句型的句柄。 36.从功能上说,程序语言的语句大体可分为执行性语句和说明性语句两大类。

编译原理期末复习

编译原理期末复习 鉴于编译原理马上就要期末考试,我将手中集中的一些资料上的题目进行了整理归类,每种类型题目给出了所涉及到的基本知识,然后对每类题目中的第一道例题进行了做法进行了讲解,剩下的例题请给大家作为练习,答案也都给出,希望对大家复习有所帮助,最后由于时间很紧,整理的有些仓促,整理中难免有遗漏或错误,请大家见谅。 注:下面出现的字母中,若无特别说明,小写英文字母为终结符,大写英文字母为非终结符,希腊字母为终结符与非终结符的任意组合。 1、简答题(或者名词解释) 下面涉及到的概念中,加下划线的都是在以往一些试卷中出现的原题,务必掌握。 注:这类题目老师说答案不会超过一百个字,否则写的再多也不给分,有些点到即可,不要重复啰嗦。(1)简述编译程序的概念及其构成 答:1)编译程序:它特指把某种高级程序设计语言翻译成等价的低级程序设计语言的翻译程序。 2)构成: (2)简述词法分析阶段的主要任务(也有可能问语法分析阶段主要任务)答:词法分析的任务是输入源程序,对源程序进行扫描,识别其中的单词符号,把字符串形式的源程序转换成单词符号形式的源程序。 语法分析的主要任务是对输入的单词符号进行语法分析(根据语法规则进行推导或者归约),识别各类语法单位,判断输入是不是语法上正确的程序 (3) 简述编译程序的构造过程(这个大家看看,是对(1)和(2)的综合) 答:1)构造词法分析器:用于输入源程序进行词法分析,输出单词符号; 2)构造语法分析器:对输入的单词符号进行语法分析,识别各类语法单位,判断输入是不是语法上正确的程序 3)构造语义分析和中间代码产生器:按照语义规则对已归约出的语法单位进行语义分析并把它们翻译成中间代码。 4)构造优化器:对中间代码进行优化。 5) 构造目标代码生成器:把中间的代码翻译成目标程序。 6) 构造表格管理程序:登记源程序的各类信息和编译各阶段的进展情况。 7)构造错误处理程序:对出错进行处理。 (4) 说明编译和解释的区别: 1)编译要程序产生目标程序,解释程序是边解释边执行,不产生目标程序; 2)编译程序运行效率高而解释程序便于人机对话。 (5)文法:描述语言语法结构的形式规则,一般用一个四元式表示: G=(V T,V N,S,P),其中V T:终结符集合(非空) V N:非终结符集合(非空),且V T ?V N=? S:文法的开始符号,S?V N P:产生式集合(有限)。

【新版】《编译原理》期末复习

《编译原理》期末复习 【题型】 一、填空题:每空1分,共10分; 二、单选题:每题2分,共20分; 三、应用题:每小题6分,共48分; 四、综合分析题:每小题11分,共22分。 【知识点】 1.编译程序的整个过程从逻辑上依次分为哪6个阶段,其中还涉及哪2个重要工作。 2.语法分析有哪两大类方法? 3.编译程序和解释程序的概念,二者最主要的区别是? 4.句柄的定义。 5.什么是规范推导? 6.语言、句型、句子的定义。 7.LR分析法中的项目类型定义(待约项目、移入项目、归约项目)。 8.中间代码和目标代码区别。 9.文法与正则表达式所描述的语言及句子。 10.如何判断自动机(状态转换图)所能识别的字符串。 11.中间代码生成时主要依据什么规则? 12.根据给定文法,通过推导,画出指定句子的语法树。

13.自底向上的语法分析过程中,构造LR分析表时可能会面临的两种冲突。 14.判断源程序中出现的某类错误可能在编译的哪个阶段被发现。 15.词法分析及语法分析的输入输出是什么? 16.0、1、2、3型文法的定义、别名及描述能力强弱排名。 17.证明给定文法是二义性的(参考第二章课后练习)。 18.消除文法的左递归及提取公共左因子。 19.给定一个文法和该文法的句型,要求写出句型的最左推导、画出语法分析树、指出短语、简单短 语、句柄(参考第二章课后练习及课件中的例题)。 20.根据有限自动机的定义(五元组),给出其状态转换矩阵和状态转换图。 21.画出按照给定翻译模式分析某句子时所产生的分析树,分析其输出结果(参考第六章课后练习及 课件中的例题)。 22.针对给定的语言构造一个文法G,然后判断该文法类型(0、1、2、3型)(参考第二章课后练习)。 23.根据有限自动机M的定义(五元组),画出M的状态转换图,并说明它所识别或接受的语言是 什么(参考课件第三章例题)。 24.给出一个复合表达式,写出该表达式的三元式和四元式(如:-a*(b+c)/d)。 25.判断某语法制导定义在给定输入下的输出结果,分析文法产生的语言,指出语法制导定义功能。 26.已知文法及其LR分析表,给出对该文法某个句子的分析过程。(参考例题及习题) 27.给定一个文法,消除其左递归和提取左公因子,求所有非终结符的FIRST和FOLLOW集,构造 该文法的LL(1)分析表,根据分析表给出某句子的分析过程(参考第四章课后练习)。

编译原理复习题--有答案版

1、给出下面语言的相应文法。L1={a n b n c i|n≥1,i≥0} 答案: S→ AB|B A→ a|aA B→ bBc|bc 2.给出下面语言的相应文法 L1={a n b n c m d m| m,n≥1,n为奇数,m为偶数}。 答案:文法G(S):S→AC A→aaAbb/ab C→ccCcc/cc 3、构造一个DFA,它接受={a,b}上所有包含ab的字符串。 (要求:先将正规式转化为NFA,再将NFA确定化,最小化) (一)相应的正规式为(a|b)*ab(a|b)* (二)①与此正规式对应的NFA为 答案;在自己写的纸上 4、对下面的文法G: E→TE’ E’→+E|ε T→FT’ T’→T|ε F→PF’ F’→*F’|ε P→(E)|a|b|∧(1)证明这个文法是LL(1)的。 考虑下列产生式: E’->E|ε T’->T|ε F’->*F’ |ε P->(E) |∧a|b FIRST(+E)∩FIRST(ε)={+}∩{ε}=φ FIRST(+E)∩FOLLOW(E')={+}∩{#,)}=φ FIRST(T)∩FIRST(ε)={(,a,b,^}∩{ε}=φ

FIRST(T)∩FOLLOW(T')={(,a,b,^}∩{+,),#}=φ FIRST(*F')∩FIRST(ε)={*}∩{ε}=φ FIRST(*F')∩FOLLOW(F')={*}∩{(,a,b,^,+,),#}=φ FIRST((E))∩FIRST(a) ∩FIRST(b) ∩FIRST(^)=φ 所以,该文法式LL(1)文法. 计算这个文法的每个非终结符的FIRST和FOLLOW。(8分) 答案:FIRST(E)={(,a,b,^} FIRST(E')={+,ε} FIRST(T)={(,a,b,^} FIRST(T')={(,a,b,^,ε} FIRST(F)={(,a,b,^} FIRST(F')={*,ε} FIRST(P)={(,a,b,^} FOLLOW(E)={#,)} FOLLOW(E')={#,)} FOLLOW(T)={+,),#} FOLLOW(T')={+,),#} FOLLOW(F)={(,a,b,^,+,),#} FOLLOW(F')={(,a,b,^,+,),#} FOLLOW(P)={*,(,a,b,^,+,),#} (3)构造它的预测分析表。(6分) 答案;在手机上 写出表达式a+b*(c-d)对应的逆波兰式和三元式序列。 答案:逆波兰式:(abcd-*+) 三元式序列: OP ARG1 ARG2 (1) - c d (2) * b (1) (3) + a (2)

编译原理期末考试题目及答案

一、填空题(每空2分,共20分) 1.编译程序首先要识别出源程序中每个单词,然后再分析每个句子并翻译其意义。 2.编译器常用的语法分析方法有自底向上和自顶向下两种。 3.通常把编译过程分为分析前端与综合后端两大阶段。词法、语法和语义分析是对源程序的分析,中间代码生成、代码优化与目标代码的生成则是对源程序的综合。 4.程序设计语言的发展带来了日渐多变的运行时存储管理方案,主要分为两大类,即静态存储分配方案和动态存储分配方案。 5.对编译程序而言,输入数据是源程序,输出结果是目标程序。 1.计算机执行用高级语言编写的程序主要有两种途径:解释和编译。 2.扫描器是词法分析器,它接受输入的源程序,对源程序进行词法分析并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。 3.自下而上分析法采用移进、归约、错误处理、接受等四种操作。 4.一个LL(1)分析程序需要用到一张分析表和符号栈。 5.后缀式abc-/所代表的表达式是a/(b-c)。 二、单项选择题(每小题2分,共20分) 1.词法分析器的输出结果是__C。 A.单词的种别编码B.单词在符号表中的位置 C.单词的种别编码和自身值D.单词自身值 2.正规式M 1 和M 2 等价是指__C_。 A.M1和M2的状态数相等 B.M1和M2的有向边条数相等 C.M1和M2所识别的语言集相等D.M1和M2状态数和有向边条数相等 3.文法G:S→xSx|y所识别的语言是_C____。 A.xyx B.(xyx)* C.xnyxn(n≥0) D.x*yx* 4.如果文法G是无二义的,则它的任何句子α_A____。 A.最左推导和最右推导对应的语法树必定相同B.最左推导和最右推导对应的语法树可能不同 C.最左推导和最右推导必定相同D.可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握____D__。 A.源程序B.目标语言C.编译方法D.以上三项都是 6.四元式之间的联系是通过__B___实现的。 A.指示器B.临时变量C.符号表D.程序变量 7.表达式(┐A∨B)∧(C∨D)的逆波兰表示为__B___。 A.┐AB∨∧CD∨B.A┐B∨CD∨∧ C.AB∨┐CD∨∧D.A┐B∨∧CD∨ 8. 优化可生成__D___的目标代码。 A.运行时间较短 B.占用存储空间较小 C.运行时间短但占用内存空间大D.运行时间短且占用存储空间小 9.下列___C___优化方法不是针对循环优化进行的。 A. 强度削弱B.删除归纳变量C.删除多余运算D.代码外提 10.编译程序使用_B_区别标识符的作用域。 A. 说明标识符的过程或函数名B.说明标识符的过程或函数的静态层次 C.说明标识符的过程或函数的动态层次 D. 标识符的行号 三、判断题(对的打√,错的打×,每小题1分,共10分) 2.一个有限状态自动机中,有且仅有一个唯一的终态。x

编译原理复习题及答案

编译原理复习题及答案 一、选择题 1.一个正规语言只能对应(B) A 一个正规文法 B 一个最小有限状态自动机 2.文法G[A]:A→εA→aB B→Ab B→a是(A) A 正规文法 B 二型文法 3.下面说法正确的是(A) A 一个SLR(1)文法一定也是LALR(1)文法 B 一个LR(1)文法一定也是LALR(1)文法 4.一个上下文无关文法消除了左递归,提取了左公共因子后是满足LL(1)文法的(A) A 必要条件 B 充分必要条件 5.下面说法正确的是(B) A 一个正规式只能对应一个确定的有限状态自动机 B 一个正规语言可能对应多个正规文法 6.算符优先分析与规范归约相比的优点是(A) A 归约速度快 B 对文法限制少 7.一个LR(1)文法合并同心集后若不是LALR(1)文法(B) A 则可能存在移进/归约冲突 B 则可能存在归约/归约冲突 C 则可能存在移进/归约冲突和归约/归约冲突 8.下面说法正确的是(A) A Lex是一个词法分析器的生成器 B Yacc是一个语法分析器 9.下面说法正确的是(A) A 一个正规文法也一定是二型文法 B 一个二型文法也一定能有一个等价的正规文法 10.编译原理是对(C)。 A、机器语言的执行 B、汇编语言的翻译 C、高级语言的翻译 D、高级语言程序的解释执行 11.(A)是一种典型的解释型语言。

A.BASIC B.C C.FORTRAN D.PASCAL 12.把汇编语言程序翻译成机器可执行的目标程序的工作是由(B)完成的。 A. 编译器 B. 汇编器 C. 解释器 D. 预处理器 13.用高级语言编写的程序经编译后产生的程序叫(B) A.源程序 B.目标程序C.连接程序D.解释程序 14.(C)不是编译程序的组成部分。 A.词法分析程序 B.代码生成程序 C.设备管理程序 D.语法分析程序 15.通常一个编译程序中,不仅包含词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成等六个部分,还应包括(C)。 A.模拟执行器B.解释器 C.表格处理和出错处理D.符号执行器16.编译程序绝大多数时间花在(D)上。 A.出错处理B.词法分析C.目标代码生成D.表格管理 17.源程序是句子的集合,(B)可以较好地反映句子的结构。 A. 线性表 B. 树 C. 完全图 D. 堆栈 18.词法分析器的输出结果是(D)。 A、单词自身值 B、单词在符号表中的位置 C、单词的种别编码 D、单词的种别编码和自身值 19.词法分析器不能(D) A. 识别出数值常量 B. 过滤源程序中的注释 C. 扫描源程序并识别记号 D. 发现括号不匹配 20.文法:G:S→xSx | y所识别的语言是(D)。 A、xyx B、(xyx)* C、x*yx* D、x n yx n (n≥0) 21.如果文法G是无二义的,则它的任何句子α(A) A.最左推导和最右推导对应的语法树必定相同 B.最左推导和最右推导对应的语法树可能不同 C.最左推导和最右推导必定相同 D.可能存在两个不同的最左推导,但它们对应的语法树相同 22.正则文法(A)二义性的。 A. 可以是 B. 一定不是 C. 一定是 23.(B)这样一些语言,它们能被确定的有穷自动机识别,但不能用正则表达式表示。 A. 存在 B. 不存在 C. 无法判定是否存在 24.给定文法A→bA | ca,为该文法句子的是(C) A. bba B. cab C. bca D. cba

期末考试编译原理试卷及答案

一. 填空题(每空2分,共20分) 1. 不同的编译程序关于数据空间的存储分配策略可能不同,但大部分编译中采用的方案有两种:静 态存储分配方案和动态存储分配方案,而后者又分为(1) 和 (2) 。 2. 规范规约是最(3)规约。 3. 编译程序的工作过程一般划分为5个阶段:词法分析、(4) 、语义分析与中间代码生成,代码优化及(5) 。另外还有(6)和出错处理。 4.表达式x+y*z/(a+b)的后缀式为 (7) 。 5.文法符号的属性有综合属性和 (8)。 6.假设二位数组按行存放,而且每个元素占用一个存储单元,则数组a[1..15,1..20]某个元素a[i ,j]的地址 计算公式为(9)。 7.局部优化是局限于一个(10)范围内的一种优化。 二. 选择题(1-6为单选题,7-8为多选题,每问2分,共20分) 1. 一个上下文无关文法G 包括四个组成部分:一组终结符,一组非终结符,一个( ),以及一组 ( )。 A . 字符串 B . 产生式 C . 开始符号 D . 文法 2.程序的基本块是指( )。 A . 一个子程序 B . 一个仅有一个入口和一个出口的语句 C . 一个没有嵌套的程序段 D . 一组顺序执行的程序段,仅有一个入口和一个出口 3. 高级语言编译程序常用的语法分析方法中,递归下降分析法属于( )分析方法。 A . 自左向右 B . 自顶向下 C . 自底向上 D . 自右向左 4.在通常的语法分析方法中,( )特别适用于表达式的分析。 A . 算符优先分析法 B . LR 分析法 C . 递归下降分析法 D . LL (1)分析法 5.经过编译所得到的目标程序是( )。 A . 四元式序列 B . 间接三元式序列 C . 二元式序列 D . 机器语言程序或汇编语言程序 6. 一个文法所描述的语言是( );描述一个语言的文法是( )。 A . 唯一的 B . 不唯一的 C . 可能唯一,也可能不唯一 7. 如果在文法G 中存在一个句子,当其满足下列条件( )之一时,则称该文法是二义文法。 A . 其最左推导和最右推导相同 B . 该句子有两个不同的最左推导 C . 该句子有两个不同的最右推导 D . 该句子有两棵不同的语法树

(2020年整理)编译原理期末总复习题(含答案).doc

第八节习题一、单项选择题 1、将编译程序分成若干个“遍”是为了 b 。 a.提高程序的执行效率 b.使程序的结构更加清晰 c.利用有限的机器内存并提高机器的执行效率 d.利用有限的机器内存但降低了机器的执行效率 2、构造编译程序应掌握 d 。 a.源程序b.目标语言 c.编译方法d.以上三项都是 3、变量应当 c 。 a.持有左值b.持有右值 c.既持有左值又持有右值d.既不持有左值也不持有右值 4、编译程序绝大多数时间花在 b 上。 a.出错处理b.词法分析 c.目标代码生成d.管理表格 5、 d 不可能是目标代码。 a.汇编指令代码b.可重定位指令代码 c.绝对指令代码d.中间代码 6、使用 a 可以定义一个程序的意义。 a.语义规则b.词法规则 c.产生规则d.词法规则 7、词法分析器的输入是 a 。 a.单词符号串b.源程序 c.语法单位d.目标程序 8、中间代码生成时所遵循的是- d 。 a.语法规则b.词法规则 c.语义规则d.等价变换规则 9、编译程序是对 d 。 a.汇编程序的翻译b.高级语言程序的解释执行 c.机器语言的执行d.高级语言的翻译 10、语法分析应遵循 b 。 a.语义规则b.语法规则 c.构词规则d.等价变换规则 解答 1、将编译程序分成若干个“遍”是为了使编译程序的结构更加清晰,故选b。 2、构造编译程序应掌握源程序、目标语言及编译方法等三方面的知识,故选d。 3、对编译而言,变量既持有左值又持有右值,故选c。 4、编译程序打交道最多的就是各种表格,因此选d。 5、目标代码包括汇编指令代码、可重定位指令代码和绝对指令代码3种,因此不是目标代码的只能选d。 6、词法分析遵循的是构词规则,语法分析遵循的是语法规则,中间代码生成遵循的是语义规则,并且语义规则可以定义一个程序的意义。因此选a。 7、b 8、c 9、d 10、c 二、多项选择题

《编译原理》期末考试复习题

《编译原理》期末考试复习题 一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分) ×1.计算机高级语言翻译成低级语言只有解释一种方式。() ×2.在编译中进行语法检查的目的是为了发现程序中所有错误。() √3.甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。 () ×4.正则文法其产生式为 A->a , A->Bb, A,B∈VN , a 、b∈VT 。 () √5.每个文法都能改写为 LL(1) 文法。 () √6.递归下降法允许任一非终极符是直接左递归的。 () ×7.算符优先关系表不一定存在对应的优先函数。 () ×8.自底而上语法分析方法的主要问题是候选式的选择。 () ×9.LR 法是自顶向下语法分析方法。 () ×10.简单优先文法允许任意两个产生式具有相同右部。 () 三、填空题(每空1分,共10分) 1.编译程序的工作过程一般可以划分为词法分析,语法分析,语义分析,中间代码生成,代码优化等几个基本阶段,同时还会伴有__ ___和 ___ _。 表格管理出错处理_ 2.若源程序是用高级语言编写的,__ __是机器语言程序或汇编程序,则其翻译程序称为 __ __ 。 _目标程序_编译程序 3.编译方式与解释方式的根本区别在于__ __。 是否生成目标代码_ 4.对编译程序而言,输入数据是__ __, 输出结果是__ ___。 _源程序目标程序

5.产生式是用于定义__ __的一种书写规则。 _语法成分 6.语法分析最常用的两类方法是___ __和__ __分析法。 自上而下_自下而上 四、简答题(20分) 1. 什么是句子?什么是语言 ? 答:(1)设G是一个给定的文法,S是文法的开始符号,如果S x(其中x∈VT*),则称x是文法的一个句子。 (2)设G[S]是给定文法,则由文法G所定义的语言L(G)可描述为:L(G)={x│S x,x∈VT*} 。 一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分) ×1.对于数据空间的存贮分配,FORTRAN采用动态贮存分配策略。() ×2.甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。() √3.递归下降分析法是自顶向上分析方法。() ×4.产生式是用于定义词法成分的一种书写规则。() √5.LR 法是自顶向下语法分析方法。() √6.在SLR (1 )分析法的名称中,S的含义是简单的。() ×7.综合属性是用于“ 自上而下” 传递信息。() ×8.符号表中的信息栏中登记了每个名字的属性和特征等有关信息,如类型、种属、所占单元大小、地址等等。() ×9.程序语言的语言处理程序是一种应用软件。() ×10.解释程序适用于COBOL 和FORTRAN 语言。() 三、填空题(每空1分,共10分) 1.一个句型中的最左简单短语称为该句型的___句柄__。

编译原理复习资料

第3章文法和语言 第1题 文法G=({A,B,S},{a,b,c},P,S)其中P为: S→Ac|aB A→ab B→bc 写出L(G[S])的全部元素。 答案: L(G[S])={abc} 第 11题 令文法 G[E]为: E→T|E+T|E-T T→F|T*F|T/F F→(E)|i 证明 E+T*F是它的一个句型,指出这个句型的所有短语、直接短语和句柄。答案: 此句型对应语法树如右,故为此文法一个句型。 或者:因为存在推导序列: E=>E+T=>E+T*F,所 以E+T*F句型 此句型相对于E的短语有:E+T*F;相对于 T的短语 有 T*F 直接短语为:T*F 句柄为:T*F 第 13题 一个上下文无关文法生成句子abbaa的推导树如下: (1)给出串abbaa最左推导、最右推导。 (2)该文法的产生式集合 P可能有哪些元素? (3)找出该句子的所有短语、直接短语、句柄。 A S a S B B B A S a

《编译原理》课后习题答案第三章 答案: (1)串abbaa最左推导: S=>ABS=>aBS=>aSBBS=>aBBS=>abBS=>abbS=>abbAa=>abbaa 最右推导: S=>ABS=>ABAa=>ABaa=>ASBBaa=>ASBbaa=>ASbbaa=>Abbaa=>abbaa (2)产生式有:S→ABS |Aa|ε A→a B→SBB|b abbaa aaabbaa ? 可能元素有:ε aa ab (3)该句子的短语有: a是相对 A的短语 ε是相对 S的短语 b是相对 B的短语 εbb是相对 B的短语 aa是相对 S的短语 aεbbaa是相对 S的短语 直接短语有:a ε b 句柄是:a

编译原理考试试卷

南京工业大学继续教育学院编译原理期末考试试卷 (2012-2013学年) A卷 一、选择题(每题2分,共20分) 得分 1. 一个上下文无关文法G包括四个组成部分:一组终结符,一组非终结符,一个_____,以及一组产生式。 A.字符串 B.运算符号 C.开始符号 D.文法 2.程序的基本块是指_____。 A.一个子程序 B.一个仅有一个入口和一个出口的语句 C.一个没有嵌套的程序段 D.一组顺序执行的程序段,仅有一个入口和一 个出口 3. 高级语言编译程序常用的语法分析方法中,递归下降分析法属于_____分析方法。 A.自左向右 B.自顶向下 C.自底向上 D.自右向左 4.经过编译所得到的目标程序是_____。 A.四元式序列 B.间接三元式序列 C.二元式序列 D.机器语言程序或汇编语言程序 5.运行阶段的存储组织与管理的目的是_____。 ①提高编译程序的运行速度②节省编译程序的存储空间 ③提高目标程序的运行速度④为运行阶段的存储分配做准备 A. ①② B. ②③ C. ③④ D. ④②6.词法分析器的输出结果是_____。 A.( ) 单词的种别编码B.( ) 单词在符号表中的位置C.( ) 单词的种别编码和自身值D.( ) 单词自身值 7.正规式M 1 和M 2 等价是指_____。

A.( ) M1和M2的状态数相等B.( ) M1和M2的有向边条数相等 C.( ) M1和M2所识别的语言集相等D.( ) M1和M2状态数和有向边条数相等 8.文法G:S→xSx|y所识别的语言是_____。 A.( ) xyx B.( ) (xyx)* C.( ) xnyxn(n≥0) D.( ) x*yx* 9.语言是_____。 A.句子的集合B.产生式的集合 C.符号串的集合D.句型的集合 10.编译程序前三个阶段完成的工作是 A.词法分析、语法分析和代码优化 B.代码生成、代码优化和词法分析 C.词法分析、语法分析、语义分析和中间代码生成 D.词法分析、语法分析和代码优化 二、名词解释(每题2分,共20分) 得分 1.最左推导: 2.语法: 3.文法: 4.基本块: 5.语法制导翻译: 6.短语: 7.规范句型:

编译原理期末复习

编译原理 一、单选题 1、将编译程序分为若干个“遍”是为了()。B A.提高程序的执行效率 B.使程序的结构更加清晰 C.利用有限的机器内存并提高机器的执行效率 D.利用有限的机器内存但降低了机器的执行效率 2、构造编译程序应掌握()。D A.源程序 B.目标语言 C.编译方法 D.以上三项都是 3、变量应当()。C A.持有左值 B.持有右值 C.既持有左值又持有右值 D.既不持有左值也不持有右值 4、编译程序绝大多数时间花在()上。D A.出错处理 B.词法分析 C.目标代码生成 D.管理表格 5、()不可能是目标代码。D A.汇编指令代码 B.可重定位指令代码

C.绝对指令代码 D.中间代码 6、编译程序是对()。D A.汇编程序的翻译 B.高级语言程序的解释执行 C.机器语言的执行 D.高级语言的翻译 7、正规式M1和M2等价是指()。C A.M1和M2的状态数相等和M2的有象弧条数相等 和M2所识别的语言集相等和M2状态数和有象弧条数相等 8、如果文法G是无二义的,则它的任何句子()。A A.最左推导和最右推导对应的语法树必定相同。 B.最左推导和最右推导对应的语法树可能相同。 C.最左推导和最右推导必定相同。 D.可能存在两个不同的最左推导,但它们对应的语法树相同。 9、文法G:S→S+T|T T→T*P|P P→(S)|i 句型P+T+i的短语有()B A.i,P+T B. P,P+T,i,P+T +i +T + i D. P,P+T,i

10、产生正规语言的文法为()。D 型型型型 11、文法G:S→b|?|(T) T→T?S|S 则FIRSTVT(T)=() C A.{b,?,(} B.{b,?,)} C.{b,?,(,?} D.{b,?,),?} 12、给定文法:A→bA | cc,下面的符号串中,为该文法句子的是()。A cc bcbc bcbcc ④bccbcc ⑤bbbcc 可选项有: A. B.④⑤ C.④ D.④⑤ 13、采用自上而下分析,必须()。C A.消除左递归 B.消除右递归 C.消除回溯 D.提取公共左因子 14、由文法的开始符经0步或多步推导产生的文法符号序列是()。C A.短语 B.句柄 C.句型 D.句子 15、后缀式ab+cd+/可用表达式()来表示。B

编译原理复习提纲整理

说明 1.这份资料的最初来源是王金伟老师给大家发的复习提纲,我在下面会给大家附一份原版,后面的21面资料是在那个的基础上整理和细化得到的。最初做这份资料的目的是我本人作为班长为了帮助我们班的同学顺利通过考试而整理的。听王老师说有想法留给学弟学妹们用,我放假后又对一些内容进行了修正和改进,得到了大家看到的这个版本 2.这份资料加入了很多我个人的理解。与原提纲相比,我增删了一些内容,并对某些内容进行了调序与合并。 3.这份资料融入了老师平时上课的以及最后复习课给的,更重要的是我个人的理解和猜测。大家或许都有感受,觉得编译原理书上或者上说的句子根本看不懂。针对这个问题,我把很多晦涩难懂的形式化的算法通过我的理解后用比较形象易懂的话表述了 出来,表述得可能并不科学严谨,但我的目的是为了能帮助大家做题和考试 4.里面的每一个考点我都在最后用括号加了注释,方便不同起点不同准备时间的同学进行选择,这里简单说明 “了解”:代表这一部分的内容被老师列在提纲内,但其实并不太影响大家对大题的计算;并且据我的分析也并不太可能出小题所以时间很紧的同学可以略看就好,当然看看还是有好处的。

“小题”一类的字样代表这一块的知识点值得出填空选择,大家 1 / 47 有时间应该理解性的记忆下来(在2012年的期末考试上,选择 为1分*10题;填空为1分*10题,判断改错为2分*5题,小题总计30分) “简答”:老师在最后复习课上说过编译原理是有简答题的,简 答不同于计算,很可能是让你默写一些步骤。所以这一块内容大家需要背诵,即使不理解也要背下来(在2012年的期末考试上,简答题的分值为5分*4题=20分 “铺垫”“大题步骤”等代表这一块的内容对于综合大题的做题 是必须了解的,或者其实就是做大题的分解步骤,这些块的内容是所有人必须看懂并且记下来的 “实际大题”:总共列出的有4道,应该每年考察的都会是这4 中题型,每一道的分值都在12~15分左右,是所有人想通过考试所必须攻克的。这里通常我会标出他需要用到之前的哪些哪些知识点(2012年期末考试4道题的总分值为50分) 5.如果大家想去打印,最好在装有2007及以上的机器上打印,否则有些符号可能会显示不出来。建议大家去生活广场找机器打,不要去景元鸿 6.由于时间仓促,这份资料做的并不完善和严谨,难免有错漏之处,希望大家谅解。大家可以一边看我的这份资料,一边看老师

编译原理期末考试复习题

选择: 1.编译程序绝大多数时间花在 D 上。 a.出错处理b.词法分析 c.目标代码生成d.管理表格 3.如果文法G是无二义的,则它的任何句子α A 。 a. 最左推导和最右推导对应的语法树必定相同 b. 最左推导和最右推导对应的语法树可能不同 c. 最左推导和最右推导必定相同 d. 可能存在两个不同的最左推导,但它们对应的语法树相同 4.在规范归约中,用 B 来刻画可归约串。 a. 直接短语 b. 句柄 c. 最左素短语 d. 素短语 5.若a为终结符,则A→α·aβ为 B 项目 a.归约 b.移进 c.接受 d.待约 6.间接三元式表示法的优点为(A) A.采用间接码表,便于优化处理 B.节省存储空间,不便于表的修改 C.便于优化处理,节省存储空间 D.节省存储空间,不便于优化处理 7.下列C优化方法不是针对循优化进行的。 a.强度削弱b.删除归纳变量c.删除多余运算d.代码外提 8.过程P1调用P2时,连接数据不包含 A 。 a. 嵌套层次显示表 b. 老SP c. 返回地址 d. 全局DISPLAY地址 9.如果活动记录中没有DISPLAY表,则说明b。 a. 程序中不允许有递归定义的过程 b. 程序中不允许有嵌套定义的过程 c. 程序中既不允许有嵌套定义的过程,也不允许有递归定义的过程 d. 程序中允许有递归定义的过程,也允许有嵌套定义的过程 10.关于必经结点的二元关系,下列叙述中不正确的是 D 。 a.满足自反性b.满足传递性c.满足反对称性d.满足对称性11.构造编译程序应掌握 D 。 a.源程序b.目标语言 c.编译方法d.以上三项都是 12.词法分析器的输出结果是__C___。 A.单词的种别编码B.单词在符号表中的位置 C.单词的种别编码和自身值D.单词自身值 13.文法G:S→xSx|y所识别的语言是 C 。 a. xyx b. (xyx)* c. x n yx n(n≥0) d. x*yx* 14.同心集的合并有可能产生新的归约/归约冲突 15.四元式之间的联系是通过 B 实现的。 a.指示器 b.临时变量 c.符号表 d.程序变量 16.优化可生成_____的目标代码。 A. 运行时间较短 B.占用存储空间较小 C.运行时间短但占用内存空间大D.运行时间短且占用存储空间小

相关文档
最新文档