编译原理试题集78677

合集下载

编译原理期末试题(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.构造编译程序应掌握______。

编译原理试题库.docx

编译原理试题库.docx

精品文档一填空题1.编译程序首先要识别出源程序中每个,然后再分析每个并翻译其意义。

单词,句子2.编译器常用的语法分析方法有和两种。

自底向上,自顶向下2.通常把编译过程分为分析与综合两大阶段。

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

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

静态存储分配,动态存储5.对编译程序而言,输入数据是,输出结果是。

源程序,目标程序6.文法 G 包括四个组成部分:一组终结符号,一组非终结符号,一组,以及一个开始符号。

产生式7.文法按产生式的形式分为四种类型,它们是: 0 型文法,又称短语文法; 1 型文法,又称上下文有关文法; 2 型文法,又称;3 型文法,又称。

上下文无关文法,正规文法8.最右推导称为,由规范推导产生的句型称为规范句型。

规范推导9.设 G 是一个文法, S 是它的开始符号,如果 S=>* α,则称α是一个。

仅由终结符号组成的句型是一个。

句型,句子10 对于一个文法G 而言,如果 L(G) 中存在某个句子对应两棵不同,那么该文法就称为是二义的。

语法树11.通常程序设计语言的单词符号分为五种:基本字、、常数、算符、界限符。

标识符12.在自底向上分析法中,LR 分析法把“可归约串”定义为。

句柄13.编译中常用的中间代码形式有逆波兰式、三元式、和四元式等。

树代码14.对中间代码优化按涉及的范围分为,和全局优化。

局部优化,循环优化15.局部优化主要包括、利用公共子表达式和删除无用赋值等内容。

合并已知量16.为了构造不带回溯的递归下降分析程序,我们通常要消除和提取左递归,左公共因子17.计算机执行用高级语言编写的程序主要有两种途径:和。

解释执行,编译执行18.扫描器是词法分析,它接收输入的,对源程序进行词法分析并识别出一个个,供语法分析器使用。

源程序,单词符号19.自下而上分析法采用,,和等四种操作。

编译原理考试题及答案

编译原理考试题及答案

编译原理考试题及答案一、选择题(每题2分,共20分)1. 编译器的主要功能是什么?A. 代码优化B. 代码解释C. 代码翻译D. 代码调试答案:C2. 编译过程中的语法分析阶段主要解决什么问题?A. 词法问题B. 语法问题C. 语义问题D. 代码生成问题答案:B3. 在编译原理中,哪些技术用于处理程序中的递归结构?A. 正则表达式B. 有限自动机C. 上下文无关文法D. 属性文法答案:C4. 编译器的哪个部分负责将中间代码转换为目标代码?A. 词法分析器B. 语法分析器C. 语义分析器D. 代码生成器答案:D5. 编译器中的词法分析器主要使用哪种数据结构来存储输入的源代码?A. 栈B. 队列C. 链表D. 哈希表答案:C6. 在编译原理中,哪个概念用于描述程序语言的语法结构?A. 语法树B. 抽象语法树C. 控制流图D. 数据流图答案:B7. 编译器的哪个阶段负责检查变量是否被正确声明和使用?A. 词法分析B. 语法分析C. 语义分析D. 代码优化答案:C8. 编译器在哪个阶段会进行代码优化?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:D9. 在编译原理中,哪些技术用于生成有效的目标代码?A. 语法分析B. 语义分析C. 代码优化D. 目标代码生成答案:D10. 编译器的哪个部分负责将源代码中的注释和空白字符去除?A. 词法分析器B. 语法分析器C. 语义分析器D. 代码生成器答案:A二、填空题(每题2分,共20分)1. 编译器的前端包括词法分析、语法分析和______。

答案:语义分析2. 编译器的后端包括中间代码生成、______和目标代码生成。

答案:代码优化3. 编译原理中的______用于描述词法单元。

答案:词法规则4. 编译原理中的______用于描述程序语言的语法结构。

答案:上下文无关文法5. 编译原理中的______用于描述程序语言的语义。

答案:属性文法6. 编译原理中的______用于描述程序控制流。

编译原理考试题目及答案

编译原理考试题目及答案

编译原理考试题目及答案一、选择题(每题2分,共20分)1. 在编译原理中,词法分析的主要任务是什么?A. 将源程序代码转换成抽象语法树B. 将源程序代码转换成中间代码C. 识别源程序中的单词符号D. 检查源程序的语法正确性答案:C2. 语法分析器的作用是什么?A. 识别单词符号B. 检查程序的语法结构C. 进行语义分析D. 生成目标代码答案:B3. 编译器的哪个阶段负责生成目标代码?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:D4. 在编译原理中,下列哪个不是中间代码的形式?A. 三地址代码B. 后缀表达式C. 抽象语法树D. 源代码答案:D5. 编译过程中,语义分析的主要任务是什么?A. 识别单词符号B. 检查语法结构C. 检查类型一致性D. 生成可执行代码答案:C6. 编译器优化的主要目标是什么?A. 提高程序的可读性B. 减少程序的执行时间C. 增加程序的存储空间D. 提高程序的可移植性答案:B7. 编译器前端和后端的主要区别是什么?A. 前端负责生成中间代码,后端负责优化B. 前端负责词法和语法分析,后端负责代码生成C. 前端负责代码生成,后端负责优化D. 前端负责优化,后端负责生成目标代码答案:B8. 在编译原理中,哪些技术用于错误恢复?A. 预测分析B. 回溯C. 语法制导翻译D. 词法分析答案:B9. 编译器中的哪些阶段不涉及源程序的语义?A. 词法分析B. 语法分析C. 语义分析D. 代码优化答案:A10. 在编译原理中,哪些技术用于代码优化?A. 常量传播B. 死代码消除C. 循环不变代码外提D. 所有以上答案:D二、填空题(每题2分,共20分)1. 编译器的前端主要包括______和______两个阶段。

答案:词法分析;语法分析2. 编译器的后端主要包括______和______两个阶段。

答案:语义分析;代码生成3. 在编译原理中,______是将源程序代码转换成中间代码的过程。

完整版编译原理试题

完整版编译原理试题

编译原理考试题及答案汇总一、选择1.将编译程序分成若干个“遍”是为了 _B__。

A . 提高程序的执行效率 B. 使程序的结构更加清晰C. 利用有限的机器内存并提高机器的执行效率D. 利用有限的机器内存但降低了机器的执行效率 2.正规式 MI 和 M2 等价是指 __C__。

A . MI 和 M2 的状态数相等 B.Ml 和 M2 的有向弧条数相等。

C .M1 和 M2 所识别的语言集相等 D. Ml 和 M2 状态数和有向弧条数相等3.中间代码生成时所依据的是 _C_。

A.语法规则 B •词法规则 C •语义规则 D •等价变换规则 4.后缀式ab+cd+/可用表达式__B_来表示。

A. a+b/c+d B . (a+b)/(c+d) C a+b/(c+d) D a+b+c/d6. 一个编译程序中,不仅包含词法分析, _A _______ ,中间代码生成,代码优化,生成等五个部分。

A .( ) 语法分析B .( ) 文法分析C .( ) 语言分析D .( ) 解释分析 7. 词法分析器用于识别 __C___。

A .( ) 字符串B .( ) 语句C .( ) 单词D .( ) 标识符 8. 语法分析器则可以发现源程序中的 ___D__。

A .( ) 语义错误B .( ) 语法和语义错误C .( ) 错误并校正D .( ) 语法错误 9. 下面关于解释程序的描述正确的是 __B___。

(1) 解释程序的特点是处理程序时不产生目标代码 (2) 解释程序适用于 COBOL 和FORTRAN 语言 (3) 解释程序是为打开编译程序技术的僵局而开发的A .( ) (1)(2)B .( ) (1)C .( ) (1)(2)(3)D .( ) (2)(3) 10. 解释程序处理语言时 , 大多数采用的是 __B___方法。

A .( ) 源程序命令被逐个直接解释执行B .( ) 先将源程序转化为中间代码 , 再解释执行C .( ) 先将源程序解释转化为目标程序 , 再执行D .( ) 以上方法都可以11. 编译过程中 , 语法分析器的任务就是 (1) 分析单词是怎样构成的 (2) (3) 分析语句和说明是如何构成程序的 A .( ) (2)(3) B .( ) (2)(3)(4)C .( ) (1)(2)(3) D .( ) (1)(2)(3)(4) 12. 编译程序是一种 ___C__。

编译原理考试试题与答案(汇总)

编译原理考试试题与答案(汇总)
18.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。 ( )
19.正规文法产生的语言都可以用上下文无关文法来描述。 ( )
20.一个优先表一定存在相应的优先函数。 ( )
21.3型文法一定是2型文法。 ( )
22.如果一个文法存在某个句子对应两棵不同的语法树,则文法是二义性的。 ( )
答案:1.× 2.× 3.× 4.√ 5.√ 6.× 7.×8.× 9.√ 10.× 11.×
5.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。(√)
6.逆波兰表示法表示表达式时无须使用括号。(√ )
7.静态数组的存储空间可以在编译时确定。(×)
8.进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。(×)
9.两个正规集相等的必要条件是他们对应的正规式等价。(× )
else while (A ≤ D)
A=A+2;
}。
解:该语句的四元式序列如下(其中E1、E2和E3分别对应A<C∧B<D、A≥1和A≤D,并且关系运算符优先级高):
100 (j<,A,C,102)
101 (j,_,_,113)
102 (j<,B,D,104)
103 (j,_,_,113)
104 (j=,A,1,106)
C.( )编译方法D.( )以上三项都是
6.四元式之间的联系是通过_____实现的。
A.( )指示器B.( )临时变量
C.( )符号表D.( )程序变量
7.表达式(┐A∨B)∧(C∨D)的逆波兰表示为_____。
A. ( ) ┐AB∨∧CD∨B.( ) A┐B∨CD∨∧
C.( ) AB∨┐CD∨∧D.( ) A┐B∨∧CD∨

完整word版编译原理考试试题及答案

完整word版编译原理考试试题及答案

完整word版编译原理考试试题及答案《编译原理》考试试题及答案(附录)一、判断题:1.一个上下文无关文法的开始符,可以是终结符或非终结符。

( X )2.一个句型的直接短语是唯一的。

( X )3.已经证明文法的二义性是可判定的。

( X )4.每个基本块可用一个DAG表示。

(√)5.每个过程的活动记录的体积在编译时可静态确定。

(√)6.2型文法一定是3型文法。

( x )7.一个句型一定句子。

( X )8.算符优先分析法每次都是对句柄进行归约。

(应是最左素短语) ( X )9.采用三元式实现三地址代码时,不利于对中间代码进行优化。

(√)10.编译过程中,语法分析器的任务是分析单词是怎样构成的。

( x )11.一个优先表一定存在相应的优先函数。

( x )12.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。

( )13.递归下降分析法是一种自下而上分析法。

( )14.并不是每个文法都能改写成LL(1)文法。

( )15.每个基本块只有一个入口和一个出口。

( )16.一个LL(1)文法一定是无二义的。

( )17.逆波兰法表示的表达试亦称前缀式。

( )18.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。

( )19.正规文法产生的语言都可以用上下文无关文法来描述。

( )20.一个优先表一定存在相应的优先函数。

( )21.3型文法一定是2型文法。

( )22.如果一个文法存在某个句子对应两棵不同的语法树,则文法是二义性的。

( )二、填空题:1.( 最右推导 )称为规范推导。

2.编译过程可分为(词法分析),(语法分析),(语义分析和中间代码生成),(代码优化)和(目标代码生成)五个阶段。

3.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是()。

4.从功能上说,程序语言的语句大体可分为()语句和()语句两大类。

5.语法分析器的输入是(),其输出是()。

6.扫描器的任务是从()中识别出一个个()。

编译原理考试习题及答案

编译原理考试习题及答案

( T ② S ① a
T ,
T ④ S ③ a
2019/1/29
CH.5.练习题3(P133.)

3.(1) 计算练习2文法G2的FIRSTVT和LASTVT。 S→a||(T) T→T,S|S

(1) 解: (执行相应的算法可求得) FIRSTVT(S)={ a, ∧, ( } FIRSTVT(T)={ , , a, ∧, ( } LASTVT(S)={ a, ∧, ) } LASTVT(T)={ , , a, ∧, ) }
(1) 正规式 1(0|1)*101
0
0
DFA:
3,2
1 0
3,5,2
1 1 0
x
1
1,3,2
1
0
3,4,2
1
3,Y,4,2 I0 I1 1 3 3 3 5 3
I {X} {1,3,2} {3,2} {3,4,2} {3,5,2} {3,Y,4,2}
I0 {3,2} {3,2} {3,5,2} {3,2} {3,5,2}
2019/1/29 22
CH.5.练习题2(P133.)

2.(2).给出(a,(a,a))“移进-归约”的过程。 (2) 解: (a,(a,a))的“移进-归约”过程: 步骤 符号栈 输入串 动作 9 #(T,( S ,a))# 归约 S → a 10 #(T,(T , a ))# 归约 T → S 11 #(T,(T, a ))# 移进 , 12 #(T,(T, a ))# 移进 a 13 #(T,( T,S ))# 归约 S → a 14 #(T, (T ) )# 归约 T → T,S 15 #(T, (T) )# 移进 ) 16 #( T, S )# 归约 S → (T)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

编译原理试题集78677
第一章引论
一.填空题
1. 对编译程序而言,输入数据是________________;输出数据是_____________。

2. 编译后端通常不依赖于源语言而仅仅依赖于___________________。

3. 如果不需改写编译程序中与机器无关的部分就可以把编译程序移植到另外一个目标机上,则称该编译程序是___________________。

4. 描述程序设计语言词法的有效工具是___________________________。

5. 编译过程的每一个阶段都能检测出错误,其中,绝大多数错误在_______________阶段检测出来的。

6. 编译过程的每一个阶段都能检测出错误,其中,绝大多数错误在_______阶段检测出来的。

7. 为了使编译后的Java程序从一个平台移到另外一个平台上执行,Java定义了一种称为Byt eCode的虚拟机代码。

只要实际使用的操作平台上实现了执行ByteCode的Java 解释器,这个
操作平台就可以执行各种Java程序。

这就是所谓Java语言的________________。

8. 在一个程序设计环境中,______________起着中心作用。

连接程序、调试程序、程序分析等工具的工作直接依赖于它所产生的结果。

解答: 1. 2. 3. 4. 5. 6. 7. 8.
二.判断题
1. 在编译过程中,既可以将几个不同的阶段合为一遍,也可以把一个阶段的工作分为若干遍。

()
2. 编译程序生成的目标程序都是可执行的程序。

()
3. 编译前端主要由与源语言和目标机相关的那些部分组成。

()
4. 优化的任务在于对前端编译所产生的中间代码进行加工和变换,以其能产生运行结果更
为准确的目标代码。

()
5. 支持程序设计人员进行程序计开发的工具,除了编译程序以外,还需要编辑程序、链接程序和调试程序等其他一些工具。

()
6. 汇编器将高级语言程序翻译成汇编语言程序。

()
7. 许多编译程序在识别出语法单位后并不真正构造语法树。

()
8. 取编译程序前端改写其后端以生成不同机器上的目标代码,目前技术上还难以实现。

()解答: 1. √ 2. × 3. × 4. ×
5. √
6. ×
7.
8.
三.单项选择题
1. 如果一个编译程序能产生不同于其宿主机的机器代码,则称它为:
___________________ 。

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. Lex是语法分析自动生成器
d. 解释程序属于编译程序
7. 目标代码生成阶段所生成的目标代码的形式不可能是____。

a. 绝对指令代码
b. 可充定位的指令代码。

c. 汇编指令代码
d. 三地址代码
8. 语义错误是指源程序中不符合语义规则的错误,不包括:____ a. 非法字符错误 b. 类型不一致错误。

c. 作用域错误 d. 说明错误
解答: 1. 2. 3. 4. 5. 6. 7. 8.
四.名词解释
1. 诊断编译程序、优化编译程序;
2. 交叉编译程序、可变目标编译程序;
3. 编译程序的“遍”
4. 程序设计环境
解答:
1. 诊断编译程序:专门用于帮助程序开发和调试的编译程序。

优化编译程序:着重于提高目标代码效率的编译程序。

2. 交叉编译程序:能产生不同于其宿主机的机器代码的编译程序。

可变目标编译程序:不需重写编译程序中与机器无关的部分就能改变目标机的编译程序。

3. 编译程序的“遍”:就是对源程序或者中间结果从头到尾的一次扫描,并做有关的加工处理,生成新的中间结果或者目标程序。

4. 程序设计环境:支持程序设计人员进行程序设计开发所需要的如编辑程序、编译程序、连接程序和调试程序等软件工具,一起构成程序设计环境。

五.简答题
1. 什么是编译程序的“遍”?
2. 什么编译程序、解释程序?编译程序和解释程序有什么区别?
3. 前端编译和后端编译是如何划分的?
4. 什么是标识符,什么是名字,它们的区别是什么?
5. 如果机器A上已有一个用A机器代码实现的某高级语言L1的编译程序,则可以用L1编写另
一种高级语言L2的编译程序,画出这个实现过程的T形图表示。

6. 如何采用“移植”的办法,利用A机器上已有的高级语言L编写能够在B机器上
运行的高级
语言L的编译程序?画出T形图表示。

解答:
1. 编译程序的“遍”,就是对源程序或者中间结果从头到尾的一次扫描,并做有关
的加工处理,生成新的中间结果或者目标程序。

既可以将几个不同阶段合为一遍,也
可以把一个阶段的工作分为若干遍。

当一遍中包含若干阶段时,各阶段的工作是穿插进
行的。

一个编译程序究竟应分为几遍、如何划分,是与源语言、设计要求、硬件设备等
诸因素有关的,难以统一规定。

2. 编译程序:把某一种高级语言源程序转换成汇编语言程序或机器语言程序的程序。

解释程序:对高级语言源程序并不生成汇编程序或机器语言程序,而是边解释边执行
的程序。

编译程序把源语言程序翻译成目标代码,然后由操作系统加载执行;而解释
程序则是边翻译边执行,不生成目标代码。

3. 前端编译和后端编译是如何划分的?根据编译器的工作是与源语言相关还是目
标机器有关来进行划分。

编译前端:编译程序中包括词法分析、语法分析、语义分析和
中间代码产生等主要与源语言程序有关但与目标机无关的那些部分叫编译前端。

编译
后端:编译程序中包括目标代码生成、目标代码优化等与目标机有关而与源语言无关的
那些部分部分叫编译后端。

4. 标识符是由字母或数字以及某些特殊符号(因不同的高级语言而不同)组成的,
但是必须以字母开头的一个字符串。

当给某标识符以确切的含义时,这个标识符就叫
做名字。

程序语言中的各种名字都是用标识符表示的。

名字和标识符具有相同的形式,名字使用标识符来描述,但标识符是没有意义的字符序列,而名字却有确切的意义和属
性(即类型和作用域)。

5. 6.
六.应用题解答:
第二章高级语言及其语法描述
一.填空题
1. 假设G是一个文法,?是由终结符和非终结符组成的串,S是文法的开始符号,如
果S=>*α
,则称α是________________________。

2. 在赋值语句中,赋值号‘:=’左右两边的变量名扮演着两种不同的角色,为了区分一个名字的这两种特征,我们把一个名字所代表的______称为该名的左值,把一个名字的_______ _ 称为该名字的右值。

感谢您的阅读,祝您生活愉快。

相关文档
最新文档