编译原理A卷

合集下载

编译原理期末考试试卷A卷

编译原理期末考试试卷A卷

试卷答题时限:120 分钟考试形式:闭卷笔试一、单项选择题(请从4个备选答案中选择最适合的一项,每小题2分,共20注意:须将本题答案写在下面的表格中,写在其它地方无效1. 编译程序是对()A. 汇编程序的翻译B。

高级语言程序的解释执行C. 机器语言的执行D. 高级语言的翻译2。

词法分析器的输出结果是()A.单词的种别编码B.单词在符号表中的位置C.单词的种别编码和自身值D.单词自身值3.在规范规约中,用()来刻画可规约串.A.直接短语B.句柄C.最左素短语D.素短语4。

与正规式(a* |b)*(c |d)等价的正规式是()A.a*(c |d)|b(c |d) B.a*(c |d) * | b(c |d)*C.a*(c | d)| b*(c |d) D.(a | b) * c|(a |b)*d5. 若项目集I K含有A→α·,则在状态K时,仅当面临输入符号a∈FOLLOW(A)时,才采取A→α·动作的一定是()A.LALR文法B.LR(0) 文法C.LR(1)文法D.SLR(1)文法6。

四元式之间的联系是通过()实现的。

A. 指示器B。

临时变量C。

符号表D. 程序变量7.文法G:S → x Sx|y所识别的语言是()A.xyx B.(xyx)*C.x n yx n(n≥0)D.x*yx*8.有一语法制导翻译如下所示:S → b Ab {print “1”}A→(B {print “2”}A→a {print “3"}B→Aa) {print “4”}若输入序列为b(((aa)a)a)b,且采用自下而上的分析方法,则输出序列为()A.32224441 B. 34242421 C.12424243 D。

344422129.关于必经结点的二元关系,下列叙述不正确的是( )A.满足自反性B.满足传递性C.满足反对称型D.满足对称性10.错误的局部化是指()。

A.把错误理解成局部的错误B.对错误在局部范围内进行纠正C.当发现错误时,跳过错误所在的语法单位继续分析下去D.当发现错误时立即停止编译,待用户改正错误后再继续编译1分,共5分)1.文法G的一个句子对应于多个推导,则G是二义性的。

编译原理期末试题(8套含答案+大题集)

编译原理期末试题(8套含答案+大题集)

《编译原理》期末试题(一)一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分)1.编译程序是对高级语言程序的解释执行。

(× )2.一个有限状态自动机中,有且仅有一个唯一的终态。

(×)3.一个算符优先文法可能不存在算符优先函数与之对应。

(√ )4.语法分析时必须先消除文法中的左递归。

(×)5.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。

(√)6.逆波兰表示法表示表达式时无须使用括号。

(√ )7.静态数组的存储空间可以在编译时确定。

(×)8.进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。

(×) 9.两个正规集相等的必要条件是他们对应的正规式等价。

(× )10.一个语义子程序描述了一个文法所对应的翻译工作。

(×)二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分) 1.词法分析器的输出结果是_____。

A.( ) 单词的种别编码B.( ) 单词在符号表中的位置C.( ) 单词的种别编码和自身值D.( ) 单词自身值2.正规式M 1 和M 2 等价是指_____。

A.( ) M1和M2的状态数相等B.( ) M1和M2的有向边条数相等C.( ) M1和M2所识别的语言集相等D.( ) M1和M2状态数和有向边条数相等3.文法G:S→xSx|y所识别的语言是_____。

A.( ) xyx B.( ) (xyx)* C.( ) xnyxn(n≥0) D.( ) x*yx*4.如果文法G是无二义的,则它的任何句子α_____。

A.( )最左推导和最右推导对应的语法树必定相同B.( ) 最左推导和最右推导对应的语法树可能不同C.( ) 最左推导和最右推导必定相同D.( )可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握______。

编译原理(A卷)答案

编译原理(A卷)答案

湖北第二师范学院2014-2015学年度第二学期《编译原理》课程考试答案(A卷) 院系:计算机学院专业班级:学生姓名:学号:考试方式:闭卷………………………………………………………………………………………………………………一、填空题(每空1分,共10分)1.词法分析程序是逐个识别(字符),形成单词级别的(字符)串,词法分析程序输出的数据是(2 )个,它们分别是(种别编码)和(自身值)。

2.语法分析程序是逐个识别(单词),形成语句级别的(单词)串。

3.一遍扫描的编译方法,是以语法分析程序为主,调用(词法分析)程序、语义分析程序,再由语义程序调用中间代码生成、中间代码优化等。

4.程序设计语言的发展带来了日渐多变的运行时存储管理方案,主要分为两大类,即(静态存储分配)方案和(动态存储分配)方案。

二、综合题(共90分)1.(5分)将下面文法改写成3型文法:G=({S,A,B},{a,b,c,d,e},P,S)其中:P={S→abcA|edB,A→beB,B→d}答案:改写后的3型文法是(5分)G=({S,A,B,C,D,E,F},{a,b,c,d,e},P,S)其中:P={S→aC|eF, C→bD,D→cA,A→bE,E→eB,F→dB,B→d}2.(5分)给出下面表达式的四元式形式:a*b+(c-d)/e答案:四元式形式(5分)(*,a,b,t1)(-,c,d,t2)(/,t2,e,t3)(+,t1,t3,t4)3.(30分)给定文法 G[E] :E → E+T | E-T | TT → T*F | T/F | FF → (E) | i该文法是 LL(1) 文法吗?为什么?不是的能否改造为LL(1)文法,如果能够改造,给出改造后的文法,并给出改造后文法是LL(1)文法的证明过程。

无论改造前还是改造后的文法,如果是LL(1)文法,则给出(i+i)*i的分析过程(要求给出详细过程,并给出LL(1)的分析表)答案:(1)该文法不是LL(1)文法,因为文法的产生式含有左递归(2分)(2)该文法可改造为LL(1)文法,即消除左递归,改造后的文法是(3分)E → TE’E’→ +TE’ | -TE’ | εT → FT’T’→ *FT’ | /FT’ |εF → (E) | i证明改造后的文法是LL(1)文法的过程A.求可达ε的非终结符(1分)可达的是E’,T’B.求每个非终结符的First集合(3分)First(E)={ (,i}First(E’)={+,-}First(T)={ (,i}First(T’)={*,/}First(F)={ (,i}C.求每个产生式右部字符串的First集合(3分)First(TE’)={ (,i}First(+TE’)={+}First(-TE’)={-}First(FT’)={ (,i}First(*FT’)={*}First(/FT’)={/}First((E))={ ( }First(i)={ i }First(ε)={ ε}D.求每个非终结符的Follow集合(3分)Follow(E)={$,)}Follow(E’)= Follow(E)={$,)}Follow(T)=First(E’) ∪ Follow(E)={$,+,-,)}Follow(T’)= Follow(T)={$,+,-,)}Follow(F)= First(T’) ∪ Follow(T)={$,+,-, *,/,)}E.求每个非终结符的Select集合(5分)Select(E → TE’)=First(TE’)={ (,i }Select(E’→ +TE’)=First(+TE’)={ + }Select(E’→ -TE’)=First(-TE’)={ - }Select(E’→ε)=First(ε)-{ ε} ∪ Follow(E’)={ $,) }Select(T → FT’)=First(FT’)={ (,i }Select(T’→ *FT’)=First(*FT’)={ * }Select(T’→ /FT’)=First(/FT’)={ / }Select(T’→ε)=First(ε)-{ ε} ∪ Follow(T’)={ $,+,-,) }Select(F → (E))=First((E))={ ( }Select(F → i)=First(TE’)={ i }F.求有多个产生式的非终结符Select集合的交集(2分)显然有Select(E’→ +TE’)∩Select(E’→ -TE’) ∩Select(E’→ε)=ΦSelect(T’→ *FT’) ∩Select(T’→ /FT’) ∩Select(T’→ε)= ΦSelect(F → (E))= ∩Select(F → i)= Φ所以改造后的文法是LL(1)文法4.(10分)对下面的NFA进行确定化答题:第1第25.(15分)给定文法 G[E] :E → E+T | E-T | TT → T*F | T/F | F该文法是算符优先文法吗?是,则构造该文法的算符优先关系矩阵,并给出(i+i)*i的分析过程(要求给出详细过程)答案:(1)该文法是算符优先文法(1分)(2)构造该文法的算符优先矩阵A.求各非终结符的FirstVT集合(3分)FirstVT(E)={+,-,*,/,(,i}FirstVT(T)={*,/,(,i}FirstVT(F)={(,i}B.求各非终结符的LasttVT集合(3分)LastVT(E)={ +,-,*,/,),i }LastVT(T)={ *,/,),i }LastVT(F)={ ),i }C.构造优先关系表(4分)6.(25分)给定文法 G[E] :T → T*F | FF → (E) | i该文法是LR(0)文法吗?是,则构造该文法的LR(0)分析表,并给出(i+i)*i的分析过程,不是的,是SLR(1)文法吗,是,则构造该文法的SLR(1)分析表,并给出(i+i)*i的分析过程。

编译原理复习题

编译原理复习题

编译原理复习题一、选择题1、编译原理是对(C)。

A、机器语言的执行B、汇编语言的翻译C、高级语言的翻译D、高级语言程序的解释执行2、(A)是一种典型的解释型语言。

A.BASIC B.C C.FORTRAN D.PASCAL3、把汇编语言程序翻译成机器可执行的目标程序的工作是由(B)完成的。

A. 编译器B. 汇编器C. 解释器D. 预处理器4、用高级语言编写的程序经编译后产生的程序叫(B)A.源程序 B.目标程序C.连接程序D.解释程序5、(C)不是编译程序的组成部分。

A.词法分析程序B.代码生成程序C.设备管理程序D.语法分析程序6、通常一个编译程序中,不仅包含词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成等六个部分,还应包括(C)。

A.模拟执行器B.解释器 C.表格处理和出错处理D.符号执行器7、编译程序绝大多数时间花在(D)上。

A.出错处理B.词法分析C.目标代码生成D.表格管理8、源程序是句子的集合,(B)可以较好地反映句子的结构。

A. 线性表B. 树C. 完全图D. 堆栈9、词法分析器的输出结果是(D)。

A、单词自身值B、单词在符号表中的位置C、单词的种别编码D、单词的种别编码和自身值10、词法分析器不能(D)A. 识别出数值常量B. 过滤源程序中的注释C. 扫描源程序并识别记号D. 发现括号不匹配11、文法:G:S→xSx | y所识别的语言是(D)。

A、xyxB、(xyx)*C、x*yx*D、x n yx n (n≥0)12、如果文法G是无二义的,则它的任何句子α(A)A.最左推导和最右推导对应的语法树必定相同B.最左推导和最右推导对应的语法树可能不同C.最左推导和最右推导必定相同D.可能存在两个不同的最左推导,但它们对应的语法树相同13、正则文法(A)二义性的。

A. 可以是B. 一定不是C. 一定是14、(B)这样一些语言,它们能被确定的有穷自动机识别,但不能用正则表达式表示。

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

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

期末考试试卷(A)卷一、填空题(每小题2分,共20分)1、字母表∑,用∑*表示∑上所有有穷长的串集合,∑*称为∑的①。

2、设z=abc,则z的固有头是①。

3、如何由语言基本符号组成程序中各个语法成分(包括程序)的一组规则叫①。

4、设∑={a,b},∑上的正规式(a|b)(a|b) 相应的正规集为①5、NFA的映象f是从"状态×字"映射到"状态子集",f为①值函数。

6、LR分析是按规范句型的①为可归约串。

7、结点的①属性值由该结点的兄弟结点和父结点的属性值计算。

8、如果分析树中一结点的属性b依赖于属性c,那么这个结点的属性b的语义规则的计算必须在定义属性c的语义规则的计算①。

9、对于栈式符号表,引入一个显示嵌套层次关系表- ①表,该表总是指向当前正在处理的最内层的过程的子符号表在栈符号表中的起始位置。

10、任一有向边序列n1 → n2,n2 → n3,…,nk-1 → nk为从结点n1到结点nk的一条通路。

如果n1=nk,则称该通路为①。

二、单项选择(每小题2分,共14分)1、乔姆斯基把文法分成4种类型,即0型、1型、2型和3型。

其中3型文法也称为()。

A.上下无关文法 B.正规文法C.上下文有关文法 D.无限制文法2、生成非0开头的正偶数集的文法是()。

A. Z::=ABC B. Z::=ABCC::=0|2|4|6|8 C::=0|2|4|6|8B::=BA|B0|ε B::=BA|B0|0A::=1|2|3|…|9 A::=1|2|3|…|9C. Z::=ABC|2|4|6|8D. Z::=ABC|2|4|6|8C::=0|2|4|6|8 C::=0|2|4|6|8B::=BA|B0|0 B::=BA|B0|εA::=1|2|3|…|9 A::=1|2|3|…|93、简单优先分析法从左到右扫描输入串,当栈顶出现()时进归约。

A.素短语B.直接短语C.句柄D.最左素短语4、同心集合并有可能产生新的()冲突。

编译原理考试试卷

编译原理考试试卷

编译原理考试试卷一、选择题(每题2分,共20分)1. 编译器的主要功能是将源代码转换成目标代码,以下哪个不是编译器的基本组成部分?A. 词法分析器B. 语法分析器C. 代码优化器D. 运行时环境2. 词法分析器通常不负责以下哪项任务?A. 识别关键字B. 识别标识符C. 进行语义分析D. 去除空白字符3. 语法分析中,递归下降分析是一种:A. 确定性分析方法B. 非确定性分析方法C. 基于语法制导的分析方法D. 基于语法树的分析方法4. LR分析器是用于处理:A. 上下文无关文法B. 上下文有关文法C. 正则文法D. 链式文法5. 语义分析的目的是:A. 检查源代码的语法是否正确B. 检查源代码的语义是否正确C. 将源代码转换为目标代码D. 优化源代码6. 代码生成阶段,编译器将抽象语法树转换成:A. 目标代码B. 源代码C. 汇编代码D. 机器代码7. 编译优化中,常量折叠是一种:A. 局部优化B. 全局优化C. 过程间优化D. 模块内优化8. 编译器的前端主要负责:A. 源代码的输入B. 目标代码的生成C. 源代码的解析和翻译D. 运行时错误检测9. 编译器的后端主要负责:A. 词法分析B. 语法分析C. 代码优化D. 目标代码的生成和链接10. 以下哪个是编译原理中常用的数据结构?A. 栈B. 队列C. 链表D. 所有选项都是二、简答题(每题10分,共30分)1. 简述编译原理中词法分析器的作用及其实现方式。

2. 描述语法分析中自顶向下分析和自底向上分析的区别。

3. 解释编译优化的重要性,并给出一个优化的例子。

三、计算题(每题25分,共50分)1. 给定一个简单的算术表达式 "3 + 4 * 2 - 1",请说明如何使用递归下降分析器来解析这个表达式,并给出相应的语法树。

2. 假设你有一个简单的编译器后端,需要将四元式 "(a, b, +, c)" 转换成目标代码。

编译原理复习题一(含答案)

编译原理复习题一(含答案)

一、单选题(每题2分,共20分)1. 编译器的()阶段可将源程序的字符流收集到若干记号中。

A. 语法分析B. 语义分析C. 代码生成D. 词法分析2. 文法A aA | b属于正则文法,正则文法在乔姆斯基层次中对应于()文法。

A. 1型B. 2型C. 3型D. 0型3. 某C语言源代码文件包含#include <stdio.h>,()将对源代码进行处理,把文件stdio.h 包含进去。

A.编译器B.解释器C.汇编器D.预处理器4. LL(1)文法的充要条件是()。

A.对于文法中的每条产生式Uα1|α2|…|αn,要求FIRST(αi)∩FIRST(αj)=Φ(i≠j)B.该文法对应的LL(1)分析表中每个项目最多只有一条产生式。

C.A和BD.都不是5. 以下说法中正确的是()。

A.任何语言都可以描述为一个正则表达式。

B.对于任何一个NFA M,都存在一个DFA M’,满足L(M)= L(M’)。

C.任何一个DFA只有一个终态。

D.NFA的弧上标记只含输入字母表中的元素。

6.合成属性的计算可以通过对语法树进行()遍历进行。

A. 前序B.中序C.后序D.任意7.乔姆斯基的2型文法是这样一种语言,其产生式限制为()。

A. α->βB. P->βC. P->a或P->aβD. αPγ->αβγ8. 正则式的“*”读作()。

A. 并且B.连接C.正则闭包D.闭包9. 编译程序中的语义分析器接受以()为单位的输入,并产生信息供以后各阶段使用。

A. 语法树B.子程序C.单词D.语句10.文法A->aAb|ab生成的语言是()。

A. {ab}B.{aAb}C. {anbn|n≥1}D.{anbn|n≥0}二、判断题(每题2分,共10分,对的打√,错的打×)1. 一个LR(0)文法一定是SLR(1)文法。

()2. 在类型声明文法中,类型属性type是继承属性。

编译原理试题及答案

编译原理试题及答案

参考答案一、单项选择题(共10小题,每小题2分,共20分)1.语言是A .句子的集合B .产生式的集合C .符号串的集合D .句型的集合 2.编译程序前三个阶段完成的工作是 A .词法分析、语法分析和代码优化 B .代码生成、代码优化和词法分析C .词法分析、语法分析、语义分析和中间代码生成D .词法分析、语法分析和代码优化3.一个句型中称为句柄的是该句型的最左 A .非终结符号 B .短语 C .句子 D .直接短语4.下推自动机识别的语言是A .0型语言B .1型语言C .2型语言D .3型语言5.扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即 A . 字符B .单词C .句子D .句型6.对应Chomsky 四种文法的四种语言之间的关系是 A .L 0⊂L 1⊂L 2⊂L 3B .L 3⊂L 2⊂L 1⊂L 0C .L 3=L 2⊂L 1⊂L 0D .L 0⊂L 1⊂L 2=L 3 7.词法分析的任务是 A .识别单词B .分析句子的含义C .识别句子D .生成目标代码 8.常用的中间代码形式不含A .三元式B .四元式C .逆波兰式D .语法树 9. 代码优化的目的是A .节省时间B .节省空间C .节省时间和空间D .把编译程序进行等价交换10.代码生成阶段的主要任务是 A .把高级语言翻译成汇编语言 B .把高级语言翻译成机器语言C .把中间代码变换成依赖具体机器的目标代码装 订 线D.把汇编语言翻译成机器语言二、填空题(本大题共5小题,每小题2分,共10分)1.编译程序首先要识别出源程序中每个(单词),然后再分析每个(句子)并翻译其意义。

2.编译器常用的语法分析方法有(自底向上)和(自顶向下)两种。

3.通常把编译过程分为分析前端与综合后端两大阶段。

词法、语法和语义分析是对源程序的(分析),中间代码生成、代码优化与目标代码的生成则是对源程序的(综合)。

编译原理试题A及答案

编译原理试题A及答案

编译原理试题A一、单项选择题(每题1分,共20分)1、哪个不是编译系统的组成部分(C )A.词法分析器 B. 代码生成器C.设备管理程序 D. 语法分析器2. 设有表达式a*b-c,将其中a*b识别为表达式的编译阶段是什么( B )A.词法分析 B. 语法分析C.语义分析 D. 代码生成3. 下面不能用于对文法进行描述的是(A )A.源语言 B. EBNF C.BNF D. 语法图4. 设有文法G[S]: S→S1|S0|Sa|Sc|a|b|c,下列符号串中不是该文法的句子的是(A )A.ab0 B. a0c01 C.aaa D. bc105. 文法G[S]:S→aAA→bBB→a|aS ,则L(G)为(C )A.{(ab)n a|n≥1} B. {a (ba)n|n≥1}C.{(aba)n|n≥1} D. {(aba)n|n≥0}6. 哪个不是DFA的构成成分(B )A.有穷字母表 B. 初始状态集合C.终止状态集合 D. 有限状态集合7.词法分析器的输入是(B )A.单词符号串 B.源程序C.语法单位 D.目标程序8.在词法分析阶段不能识别的是(C )A.标识符 B. 运算符C.四元式 D. 常数9.设有一段C语言程序while(i&&++j){c=2.19;j+=k;i++;} ,经过词法分析后可以识别的单词个数是(B )A.19 B.20 C.21 D.2310.自上而下语法分析的主要动作是(B )A.移进 B. 推导C.规约 D. 匹配11.下面不属于LL(1)分析器的组成部分是(D )A.LL(1)总控程序 B. LL(1)分析表C.分析栈 D.源程序串12.设有文法G[S]为S→AB|bC,A→ε|b,B→ε|aD,C→AD|b,D→aS|c则FOLLOW(A)为(A )A.{a,c,#} B.{c,#} C.{a,#} D.{#}13.设有文法G[S]:S→Ap|Bq,A→a|cA,B→b|dB,则FIRST(Ap)为( C )A.{p,q} B. {b,d} C.{a,c} D. 其他14.自下而上语法分析的主要分析动作是(D )A.推导 B. 规约C.匹配 D. 移进-规约15.算法优先分析中,可规约串是(C )A.句柄B.活前缀C.最左素短语D.素短语16. 设有文法G={{S},{a},{S→SaS|ε},S},该文法是(B )A.LL(1)文法B.二义性文法C.SLR(1)文法D.算法优先文法17、中间代码生成时所以据的是(C )A.语法规则B.词法规则C.语义规则 D.等价变换规则18、给定文法G: E→E+T|T,T→T*F|F,F→i|(E)则L(G)中的一个句子i+i+(i*i)*i的逆波兰表示为(C)A.iii*i++B.ii+iii**+ C.ii+ii*i*+ D.其他19.在编译程序中与生成中间代码的目的无关的是(B)A.便于目标代码优化B.便于存储空间的组织C.便于目标代码的移植D.便于编译程序的移植20.中间代码是介于源语言程序和什么之间的一种代码 (D )A .源代码 B. 机器语言 C. 汇编语言 D. 目标代码二.简答(每题3分,共12分) 1. 什么是编译程序?编译程序是将源语言程序翻译为目标语言程序的程序。

《编译原理》(A)

《编译原理》(A)

2013届毕业生毕业前补考《编译原理》试卷注意事项:本试卷适用于09级本科、11级专升本计算机科学与技术、软件工程专业学生。

一、单项选择题(在下列每题的四个选项中,只有一个选项是符合试题要求的。

请把答案填入答题框中相应的题号下。

每小题1分,共15分)1.编译的基本任务是()。

A.将源语言程序翻译成目标语言程序B.将源语言程序翻译成等价的目标语言程序C.将高级语言翻译成机器语言D.将高级语言翻译成等价的机器语言2.构造编译程序应掌握()。

A.源程序B.目标语言C.编译方法D.以上三项都是3.一个规范句型的句柄是它的()。

A.最左直接短语B.最左素短语C.任意直接短语D.任意素短语4.给定文法G:A→xAx|y,其描述的语言是()。

A.xyx B.xy n x C.x n yx n D.x n yx5.一个最小化的DFA是()。

A.无多余状态的DFAB.无等价状态的DFAC.既无多余状态又无等价状态的DFAD.任意确定化有穷自动机6.设有语言L={α|α∈{a,b}+,且α不以b开头,但以bb结尾},描述该语言的正规表达式为()。

A.abb B.a(a|b)*bb C.aa*b*bb D.a(a*|b*)bb7.产生正规语言的文法为()。

A.0型B.1型C.2型D.3型8.使用()可以定义一个程序的意义。

A.语义规则B.词法规则C.产生规则D.语法规则9.以下()不是优化技术。

A.删除公共子表达式B.强度削弱C.局部优化D.循环不变运算外提10.中间代码生成时所遵循的是()。

A.语法规则B.词法规则C.语义规则D.等价变换规则11.局部优化是在基本块上进行的优化,所谓基本块是指()。

A.一个入口、一个出口、顺序执行的语句序列B.循环体C.一个入口、一个出口的语句序列D.分程序12.给定文法G:Z→bMbM→(L|aL→Ma)则b和(的优先关系为()。

A.b( B.b( C.b( D.不存在优先关系13.由文法的开始符号经0步或多步推导产生的文法符号序列是()。

08计算机函授编译原理A卷答案及评分标准

08计算机函授编译原理A卷答案及评分标准

2008计算机函授本科编译原理期末试卷(A)答案及评分标准一、填空题(20分,每空2分)1、传值;传地址2、从左向右分析;最右推导的逆过程;向右查看K个输入符3、二义性的4、最左素短语5、2006、aab*d-abd*-*d/-7、词法分析器二、选择题(20分,每个选项2分)1、D2、B3、D4、B5、C6、C7、C8、D9、D 10、A三、简答题(10分)1、因为存在推导序列: E E+T E + * F 所以E+T*F是文法G[E]的一个句型(2分)句型E+T*F的短语有:E+T*F,T*F (2分)直接短语有:T*F (1分)句柄为:T*F(1分)2、最左推导N=>ND=>NDD=>NDDD=>DDDD=>0DD D=>06DD=>062D=>0625 (2分)最右推导N=>ND=>N5=>ND5=>N25=>ND25=>N6 25=>D625=>0625 (2分)四、综合应用题(50分)1、解:对应的NFA(6分),确定化后的DFA(9分)如图所示(4分)3、%{#include <stdio.h>%}digit [0-9] (2分)number 350-{digit}{15}\n (3分)%%{number} { printf("该身份证号码是福建省的身份证号码\n"); } (1分).*\n {printf("该身份证号码不是福建省的身份证号码\n");} (1分)%%main(){yylex();return 0;} (2分)int yywrap(){ return 1;} (1分)4、编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析;语法分析;中间代码生成;代码优化;目标代码生成。

主要是进行词法分析和语法分析,又称为源程序分析,分析过程中发现有语法错误,给出提示信息。

编译原理期末考试A卷

编译原理期末考试A卷

8.下列文法中,_____是 LL(1)文法。( A.S->aSb|ab C.S->aS|a
9.语言分析方法中的 LR(1)分析法属于_____分析方法。( A.自左至右 B.自上而下 C.自下而上
) D.自右至左 )
10.设有语句 z=x+y,将 x+y 识别为表达式的编译阶段是_____。( A.词法分析 C.语义分析 B.语法分析 D.代码生成 )
14.设有文法的产生式:S->Aa| ,则在自上而
A.FIRST(Aa)∩FOLLOW(P)= B.FIRST(Aa)∩FIRST(P) = C.FIRST(Aa)∪FOLLOW(P)= D.上述 3 个都不是 15.设有文法 G(S 为开始符号): S->Bp|Dq B->a|Dc D->b|B Follow(B)={_____}。 ( A.a,c B.c,c ) C.p,c,q D.其他答案
) D.8 )
6.识别各类单词的 FA(状态转化图)合并后得到的 FA_____。( A.可能是 NFA 也可能是 DFA C.一定是 NFA B.一定是 DFA D.是最小的 DFA ) D.自右至左
7.语言分析方法中的 LL(1)分析法属于_____分析方法。( A.自左至右 B.自上而下 C.自下而上 ) B.S->ab|Sab D.S->aS|b
18.算符优先分析法从左到右扫描输入串,采用移进-规约的方式,当栈顶出现 _____时进行规约。( A.最左素短语 C.句柄 ) B.素短语 D.直接短语 )
学号____________________ 姓名____________________
19.自下而上语法分析的主要分析动作是_____。( A.匹配 C.规约 B.推导 D.移进-规约 )

山东工商学院2022秋季考试_编译原理复习资料_普通用卷

山东工商学院2022秋季考试_编译原理复习资料_普通用卷

山东工商学院2020学年第一学期编译原理课程试题 A卷(考试时间:120分钟,满分100分)特别提醒:1、所有答案均须填写在答题纸上,写在试题纸上无效。

2、每份答卷上均须准确填写函授站、专业、年级、学号、姓名、课程名称。

一单选题 (共43题,总分值43分 )1. 基本块内的优化为()。

(1 分)A. 代码外提,删除归纳变量B. 删除多余运算,删除无用赋值C. 强度削弱,代码外提D. 循环展开,循环合并2. 若a为终结符,则A->α·a β为()项目。

(1 分)A. 移进B. 归约C. 接受D. 待约3. 优化可生成()的目标代码。

(1 分)A. 运行时间较短B. 运行时间短但占用内存空间大C. 占用存储空间较小D. 运行时间短且占用存储空间小4. 下面哪种不是中间代码?()(1 分)A. 三元式B. 四元式C. 二元式D. 后缀式5. 一个上下文无关文法 G 包括四个组成部分,它们是:一组非终结符号,一组终结符号,一个开始符号,以及一组()。

(1 分)A. 句子B. 句型C. 单词D. 产生式6. 下列()优化方法不是针对循环优化进行的。

(1 分)A. 强度削弱B. 删除归纳变量C. 删除多余运算D. 代码外提7. 文法G[A]:A→ε A→aB B→Ab B→a是()。

(1 分)A. 0型文法B. 1型文法C. 2型文法D. 3型文法8. 在LR分析法中,分析栈中存放的状态是识别规范句型()的 DFA 状态。

(1 分)A. 句柄B. 前缀C. 活前缀D. LR(0) 项目9. 四元式之间的联系是通过()来实现的。

(1 分)A. 指示器B. 临时变量C. 符号表D. 程序变量10. 下面哪种不是中间代码?()(1 分)A. 三元式B. 四元式C. 二元式D. 后缀式11. 若一个文法是递归的,则它所产生的语言的句子是()。

(1 分)A. 无穷多个B. 有穷多个C. 可枚举的D. 个数是常量12. 将编译程序分成若干个“遍”是为了(1 分)A. 提高程序的执行效率B. 使程序的结构更加清晰C. 利用有限的机器内存并提高机器的执行效率D. 利用有限的机器内存但降低了机器的执行效率13. 下列哪种不是代码生成技术?()(1 分)A. 基于多元式B. 基于树结构C. 基于LR(0)D. 基于DAG14. 四元式之间的联系是通过()来实现的。

电子科技大学编译原理--A1答案--网络教育

电子科技大学编译原理--A1答案--网络教育

《计算机编译原理》试卷A1参考答案一、单项选择题(每小题1分,共25分)1、语言是___A___A、句子的集合B、产生式的集合C、符号串的集合D、句型的集合2、编译程序前三个阶段完成的工作是___C___A、词法分析、语法分析和代码优化B、代码生成、代码优化和词法分析C、词法分析、语法分析、语义分析和中间代码生成D、词法分析、语法分析和代码优化3、一个句型中称为句柄的是该句型的最左___D___A、非终结符号B、短语C、句子D、直接短语4、下推自动机识别的语言是___C___A、0型语言B、1型语言C、2型语言D、3型语言5、扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即___B___A、字符B、单词C、句子D、句型6、对应Chomsky四种文法的四种语言之间的关系是___B___A、L0⊂L1⊂L2⊂L3B、L3⊂L2⊂L1⊂L0C、L3=L2⊂L1⊂L0D、L0⊂L1⊂L2=L37、词法分析的任务是___A___A、识别单词B、分析句子的含义C、识别句子D、生成目标代码8、常用的中间代码形式不含___D___A、三元式B、四元式C、逆波兰式D、语法树9、代码优化的目的是___C___A、节省时间B、节省空间C、节省时间和空间D、把编译程序进行等价交换10、代码生成阶段的主要任务是___C___A、把高级语言翻译成汇编语言B、把高级语言翻译成机器语言C、把中间代码变换成依赖具体机器的目标代码D、把汇编语言翻译成机器语言11、一个上下文无关文法G包括四个组成部分:一组终结符,一组非终结符,一个开始符号,以及一组___B___。

A、字符串B、产生式C、数字符号D、文法12、程序的基本块是指___D___。

A、一个子程序B、一个仅有一个入口和一个出口的语句C、一个没有嵌套的程序段D、一组顺序执行的程序段,仅有一个入口和一个出口13、高级语言编译程序常用的语法分析方法中,递归下降分析法属于___B___分析方法。

编译原理(高起本)题及答案

编译原理(高起本)题及答案

课程:编译原理(高起本)总时长:120分钟1. (单选题) 语言是( )(本题2.0分)A、句子的集合B、产生式的集合C、符号串的集合D、句型的集合学生答案: A标准答案:A解析:得分: 22. (单选题) 编译程序前三个阶段完成的工作是( )(本题2.0分)A、词法分析、语法分析和代码优化B、代码生成、代码优化和词法分析C、词法分析、语法分析、语义分析和中间代码生成D、词法分析、语法分析和代码优化学生答案: C标准答案:C解析:得分: 23. (单选题) 一个句型中称为句柄的是该句型的最左( )(本题2.0分)A、非终结符号B、短语C、句子D、直接短语学生答案: D标准答案:D解析:得分: 24. (单选题) 下推自动机识别的语言是( )(本题2.0分)A、0型语言B、1型语言C、2型语言D、3型语言学生答案: C标准答案:C解析:得分: 25. (单选题) 扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即( )(本题2.0分)A、字符B、单词C、句子D、句型学生答案: B标准答案:B解析:得分: 26. (单选题) 对应Chomsky四种文法的四种语言之间的关系是( )(本题2.0分)A、L0L1L2L3B、L3L2L1L0C、L3=L2L1L0D、L0L1L2=L3学生答案: B标准答案:B解析:得分: 27. (单选题) 词法分析的任务是( )(本题2.0分)A、识别单词B、分析句子的含义C、识别句子D、生成目标代码学生答案: A标准答案:A解析:得分: 28. (单选题) 常用的中间代码形式不含( )(本题2.0分)A、三元式B、四元式C、逆波兰式D、语法树学生答案: D标准答案:D解析:得分: 29. (单选题) 代码优化的目的是( )(本题2.0分)A、节省时间B、节省空间C、节省时间和空间D、把编译程序进行等价交换学生答案: C标准答案:C解析:得分: 210. (单选题) 代码生成阶段的主要任务是( )(本题2.0分)A、把高级语言翻译成汇编语言B、把高级语言翻译成机器语言C、把中间代码变换成依赖具体机器的目标代码D、把汇编语言翻译成机器语言学生答案: C标准答案:C解析:得分: 211. (单选题) 将高级语言程序翻译为计算机可执行的目标程序有哪些途径()。

编译原理-A卷

编译原理-A卷

编译原理-A卷浙江⼯业⼤学之江学院编译原理试卷A2009/2010(2)课程:编译原理姓名:⼀、选择题(20*2=40)1、两个有穷⾃动机等价是指它们的( )。

A.状态数相等B.有向弧数相等C.所识别的语⾔相等D.状态数和有向弧数相等2、若状态k含有项⽬“A→α·”,且仅当输⼊符号a∈FOLLOW(A)时,才⽤规则“A →α”归约的语法分析⽅法是( )。

A.LALR分析法B.LR(0)分析法C.LR(1)分析法D.SLR(1)分析法3、若a为终结符,则A→α ·aβ为( )项⽬。

A.归约B.移进C.接受D.句柄4、在使⽤⾼级语⾔编程时,⾸先可通过编译程序发现源程序的全部和部分( )错误。

A. 语法B. 语义C. 语⽤D. 运⾏5、乔姆斯基(Chomsky)把⽂法分为四种类型,即0型、1型、2型、3型。

其中3型⽂法是( )A. ⾮限制⽂法B. 正则⽂法C. 上下⽂有关⽂法D. 上下⽂⽆关⽂法6、⼀个句型中的( )称为该句型的句柄。

A. 最左直接短语B. 最右直接短语C. 终结符D. ⾮终结符7、⼀个上下⽂⽆关⽂法G包括四个组成部分,它们是⼀组⾮终结符号,⼀组终结符号,⼀个开始符号,以及⼀组( )A. 句⼦B. 产⽣式8、编译程序是⼀种( )A. 汇编程序B. 翻译程序C. 解释程序D. ⽬标程序9、按逻辑上划分,编译程序第三步⼯作是( )A. 语义分析B. 词法分析C. 语法分析D. 代码⽣成10、在语法分析处理中,FIRST集合、FOLLOW集合均是( )A. ⾮终结符集B.终结符集C. 字母表D. 状态集11、识别上下⽂⽆关语⾔的⾃动机是( )A. 下推⾃动机B. NFAC. DFAD. 图灵机12、正则表达式R1和R2等价是指( )A. R1和R2都是定义在⼀个字母表上的正则表达式B. R1和R2中使⽤的运算符相同C. R1和R2代表同⼀正则集D. R1和R2代表不同正则集13、已知⽂法G[S]:S→A1,A→A1|S0|0。

编译原理习题及答案(整理后)

编译原理习题及答案(整理后)

编译原理习题及答案(整理后)第⼀章1、将编译程序分成若⼲个“遍”是为了。

b.使程序的结构更加清晰2、构造编译程序应掌握。

a.源程序b.⽬标语⾔c.编译⽅法3、变量应当。

c.既持有左值⼜持有右值4、编译程序绝⼤多数时间花在上。

d.管理表格5、不可能是⽬标代码。

d.中间代码6、使⽤可以定义⼀个程序的意义。

a.语义规则7、词法分析器的输⼊是。

b.源程序8、中间代码⽣成时所遵循的是- 。

c.语义规则9、编译程序是对。

d.⾼级语⾔的翻译10、语法分析应遵循。

c.构词规则⼆、多项选择题1、编译程序各阶段的⼯作都涉及到。

b.表格管理c.出错处理2、编译程序⼯作时,通常有阶段。

a.词法分析b.语法分析c.中间代码⽣成e.⽬标代码⽣成三、填空题1、解释程序和编译程序的区别在于是否⽣成⽬标程序。

2、编译过程通常可分为5个阶段,分别是词法分析、语法分析中间代码⽣成、代码优化和⽬标代码⽣成。

3、编译程序⼯作过程中,第⼀段输⼊是源程序,最后阶段的输出为标代码⽣成程序。

4、编译程序是指将源程序程序翻译成⽬标语⾔程序的程序。

⼀、单项选择题1、⽂法G:S→xSx|y所识别的语⾔是。

a. xyxb. (xyx)*c. x n yx n(n≥0)d. x*yx*2、⽂法G描述的语⾔L(G)是指。

a. L(G)={α|S+?α , α∈V T*}b. L(G)={α|S*?α, α∈V T*}c. L(G)={α|S*?α,α∈(V T∪V N*)}d. L(G)={α|S+?α, α∈(V T∪V N*)}3、有限状态⾃动机能识别。

a. 上下⽂⽆关⽂法b. 上下⽂有关⽂法c.正规⽂法d. 短语⽂法4、设G为算符优先⽂法,G的任意终结符对a、b有以下关系成⽴。

a. 若f(a)>g(b),则a>bb.若f(a)c. a~b都不⼀定成⽴d. a~b⼀定成⽴5、如果⽂法G是⽆⼆义的,则它的任何句⼦α。

a. 最左推导和最右推导对应的语法树必定相同b. 最左推导和最右推导对应的语法树可能不同c. 最左推导和最右推导必定相同d. 可能存在两个不同的最左推导,但它们对应的语法树相同6、由⽂法的开始符经0步或多步推导产⽣的⽂法符号序列是。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编译原理 A 卷
一、是非题(下列各题,你认为正确的,请在题干的括号内打“√”,错的打“×”)
1、一个 LL(1) 文法一定是无二义的。(√ ) 2、逆波兰法表示的表达式亦称前缀式。(× ) 3、目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。(√) 4、正规文法产生的语言都可以用上下文无关文法来描述。(√) 5、一张转换图只包含有限个状态,其中有一个被认为是初态,最多只有一个终态。 ( × )
五、计算题(共 41 分) 1、写一个文法使其语言为偶数集,且每个偶数不以 0 开头。 答:文法 G(S): S→AB|B|A0 A→AD|C B→2|4|6|8 C→1|3|5|7|9|B D→0|C
2、已知文法 G(S): S→a|∧|(T) T→T,S|S
⑴ 给出句子(a,(a,a))的最左推导并画出语法树; ⑵ 给出句型((T,S),a)的短语、直接短语、句柄。 答: (1)最左推导: S=>(T)=>(T,S)=>(S,S) =>(a,S)=>(a,(T))=>(a,(T,S)) =>(a,(S,S))=>(a,(a,S)) =>(a,(a,a)) 语法树:(2 分)
5、符号表的作用是什么?符号表的查找有哪几种方法? 答:符号表主要有两个方面的作用:(1)下文语义的合法性检查的依据;(2)目标 代码生 成阶段地址分配的依据。 主要技术:线性表,折半查找与二叉树,杂凑技术。
6、所谓 DISPLAY 表?其作用是什么? 答:display 表是嵌套层次显示表。由于过程嵌套允许内层过程引用外层过程定义的数 据,因此,当一个过程运行时必须跟踪它的所有外层过程的最新活动记录起始地址, 而 display 表就是用于登记每个外层过程的最新活动记录起始地址。
4、设某语言的 for 语句的形式为 for i:=E(1) TO E(2) do S 其语义解释为 i:=E(1); LIMIT:=E(2); again:if i<=LIMIT then BEGIN S; i:=i+1; goto again END; ⑴写出适合语法制导翻译的产生式; ⑵写出每个产生式对应的语义动作。 答: ⑴ F→for i:=E(1) to E(2) do S→F S(1) ⑵ F→for i:=E to E do {GEN(:=,E(1).place,-,entry(i)); F.place:=entry(i); LIMIT:=Newtemp; (2) GEN(:=,E .place,-,LIMIT); q:=NXQ;
T4:=T2*T3 T5:=3*T1 T6:=A-B L:=A+B T7:=T6*L T8:=T5*4 M:=T8+T7 L:=M ⑴ 画出 DAG 图; ⑵ 假设只有 L 在基本块出口之后还被引用,请写出优化后的四元式序列。 解: 答: ⑴ DAG
n9 + n6 * T2,T6 n4 n1 2 T1 n2 A n5 + n3 B T4,T7
二、填空题
1、 语法分析是依据语言的( 语法)规则进行的,中间代码产生是依据语言的( 语义)规则进行的。 2、 程序语言的单词符号一般可以分为(基本字, 标识符, 常数, 运算符, 界符 )等等。 3、 语法分析器的输入是( 单词符号串),其输出是(语法单位 )。 4、 所谓自上而下分析法是指(从开始符号出发,向下推导,推出句子 )。
⑼ (:=,T2,-,x) ⑽ (+,y,3,T3) ⑾ (:=,T3,-,y) ⑿ 三地址代码: ⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ if x>0 goto (3) goto (8) if y>0 goto (5) goto (8) T1:=x+y z:=T1 goto (12) T2:=x+2 x:=T2 T3:=y+3 y:=T3
答案:传地址:a[1]=10 , a[2]=6 传 -值:a[1]=5 ,a[2]=6
2、状态转换图的用途是什么?试举一简单例子说明。 答:一个状态转换图可用于识别一定的字符串。 例如,识别标识符的状态转换图为:
4、写出表达式(a+b)/(a-b)-a(a+b*c)的三元式序列及四元序列(或三地址代码)。 答案: 三元式 ⑴.(+,a,b) ⑵.(-,a,b) ⑶.(/,⑴,⑵) ⑷.(*,b,c)
M,L
T3,L
n2 6
T5
n2 24
T8
⑵ 四元式序列: T2:=A-B T3:=A+B T4:=T2*T3 L:=T4+24
5、设文法 G(S): S→S+aF|aF|+aF F→*aF|*a ⑴ 消除左递归和回溯; ⑵ 构造相应的 FIRST 和 FOLLOW 集合; ⑶ 构造预测分析表 答: ⑴ 消除左递归,提公共左因子 S→aFS'|+aFS' S'→+aFS'|ε F→*aF' F'→F|ε ⑵ FIRST(S)={a,+} FIRST(S')={+,ε} FIRST(F)={*} FIRST(F')={*,ε} ⑶
S S' F F' a S→aFS' + S→+aFS' S' →+aFS' F' →ε * F→*aF' F' →F # S' →ε F' →ε
FOLLOW(S)={#} FOLLOW(S')={#} FOLLOW(F)={+,#} FOLLOW(F')={+,#}
6、对以下基本块 T1:=2 T2:=A-B T3:=A+B
⑸.(+,a,⑷) ⑹.(-,⑶,⑸) 四元式(或三地址代码) ⑴.(+,a,b,T1) ⑵.(-,a,b,T2) ⑶.(/,T1,T2,T3) ⑷.(*,b,c,T4) ⑸.(+,a,T4,T5) ⑹.(-,T3,T5,T6) 三地址代码: ⑴. ⑵. ⑶. ⑷. ⑸. ⑹. T1:=a+b T2:=a-b T3:=T1/T2 T4:=b*c T5:=a+T4 T6:=T3-T5
(2)句型((T,S),a)的最左推导: S=>(T)=>(T,S)=>(S,S) =>((T),S)=>((T,S),S)=>((T,S),a) 短语:((T,S),a);T,S ;(T,S);(T,S),a ;a 直接短语:T,S ; a; 句柄:T,S
3、把语句 if x>0∧y>0 then z:=x+y else begin x:=x+2; y:=y+3 END; 翻译成四元式序列或三地址代码。 答:四元式 ⑴ (j>,x,0,3) ⑵ (j,-,-,8) ⑶ (j>,y,0,5) ⑷ (j,-,-,8) ⑸ (+,x,y,T1) ⑹ (:=,T1,-,z) ⑺ (j,-,-,12) ⑻ (+,x,2,T2)
5、 如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是(二义的 )。 6、 对于文法 G,仅含终结符号的句型称为( 句子)。 7、 逆波兰式 ab+c+d*e-所表达式为( (a+b+c)*d-e)。 8、 一个名字的属性包括(类型 )和(作用域 )。 9、 对于数据空间的存贮分配,FORTRAN 采用(静态存储分配 )策略,PASCAL 采用(动态 )策略。 10. 所谓优化是指(对程序进行各种等价变换, 使得从变换后的程序出发, 能生成更有效的目标代码 )
ቤተ መጻሕፍቲ ባይዱ
进行替
指程序中一组顺序执行的语句序列, 它只有一个出口或一个入口, 执行时只能从入口语句进入从 出口语句退出。
四、简述题
1、考虑下面的程序: ........... V ar i:integer; a:array[1..2] of integer; procedure Q(b); V ar b:integer; begin i:=1;b:=b+2; i:=2;b:=b+3 End; begin a[1]:=5;a[2]:=6; i:=1; Q(a[i]);print(a[1],a[2]) END. 试问:若参数传递的方式分别采用传地址和传值时,程序执行后输出 a[1],a[2] 的值是什么?
三、名词解释题
1、词法分析器 执行词法分析的程序称为词法分析程序, 或称词法分析器或扫描器。其任务是对字符串表示 的源程序从左到右地进行扫描和分解, 根据语言的词法规则识别出一个一个具有独立意义的单词 符号。 2、语法 语言的语法规则规定了如何从单词符号形成语法单位, 换言之, 语法规则是语法单位的形成 规则。 3、最右推导 指对于一个推导序列中的每一步直接推导α=>B, 都是对α中的最左(最右)非终结符 换。 4、语法制导翻译 在语法分析过程中,随着分析的步步进展, 根据每个规则所对应的语义规则(又称语义动作或语 义子程序)进行翻译(产生中间代码)的办法。 5、基本块
(1) (2)
F.QUAD:=q; GEN(j≤,entry(i),LIMIT,q+2) F.chain:=NXQ; GEN(j,-,-,0)} S→F S(1) {BACKPATCH(S(1).chain,NXQ); GEN(+,F.place,1,F.place); GEN(j,-,-,F.QUAD); S.chain:=F.chain}
相关文档
最新文档