编译原理复习题2017(含试卷)

合集下载

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

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

编译原理考试题及答案汇总

一、选择

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/d

6.一个编译程序中,不仅包含词法分析,_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)

完整版编译原理试题

完整版编译原理试题

编译原理考试题及答案汇总

一、选择

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/d

6. 一个编译程序中,不仅包含词法分析, _A _______ ,中间代码生成,代码优化,

生成等五个部分。

A .( ) 语法分析

B .( ) 文法分析

C .( ) 语言分析

D .( ) 解释分析 7. 词法分析器用于识别 __C___。

A .( ) 字符串

B .( ) 语句

C .( ) 单词

D .( ) 标识符 8. 语法分析器则可以发现源程序中的 ___D__。

A .( ) 语义错误

B .( ) 语法和语义错误

C .( ) 错误并校正

D .( ) 语法错误 9. 下面关于解释程序的描述正确的是 __B___。

(1) 解释程序的特点是处理程序时不产生目标代码 (2) 解释程序适用于 COBOL 和FORTRAN 语言 (3) 解释程序是为打开编译程序技术的僵局而开发的

《编译原理》考试试题及答案(汇总)

《编译原理》考试试题及答案(汇总)

《编译原理》考试试题及答案(汇总)

一、是非题(请在括号内,正确的划√,错误的划×)(每个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是无二义的,则它的任何句子α_____.

编译原理期末试题(含答案+大题集+重要知识点)

编译原理期末试题(含答案+大题集+重要知识点)

《编译原理》期末试题(一)

一、是非题(请在括号内,正确的划√,错误的划×)(每个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是无二义的,则它的任何句子α_____。

编译原理复习题集

编译原理复习题集

《编译原理》复习题集

1.名词解释

短语

句柄

文法

上下文无关文法

LL(1)文法

LR(1)文法

语法分析

无环路有向图(DAG)

后缀式

语法制导翻译

局部优化

词法分析

语法分析

语义分析

源语言

源程序

目标语言

中间语言(中间表示)

2.简答题

(1)编译程序和高级语言有什么区别?

(2)编译程序的工作分为那几个阶段?

(3)简述自下而上的分析方法。

(4)目标代码有哪几种形式?生成目标代码时通常应考虑哪几个问题?

(5)何谓优化?按所涉及的程序范围可分为哪几级优化?

(6)简述代码优化的目的和意义。

3.叙述下面的正规式描述的语言,并画出接受该语言的最简DFA的状态转换图。

( 1 | 01 )* 0*

4.Pascal语言无符号数的正规定义如下:

num→digit+ (.digit+)? (E(+|-)? digit+)?

其中digit表示数字,用状态转换图表示接受无符号数的确定有限自动机。5.画出Pascal中实数(不带正负号,可带指数部分)的状态转换图。

6.用状态转换图表示接收(a|b)*aa的确定的有限自动机。

7.处于/* 和 */之间的串构成注解,注解中间没有*/。画出接受这种注解的DFA的状

态转换图。

8.某操作系统下合法的文件名为

device:name.extension

其中第一部分(device:)和第三部分(.extension)可缺省,device, name和extension都是字母串,长度不限,但至少为1,画出识别这种文件名的确定有限自动机。

9.构造一个DFA,它接受∑={0, 1}上0和1的个数都是偶数的字符串。

(完整版)编译原理复习题

(完整版)编译原理复习题

(完整版)编译原理复习题

《编译原理》常见题型

一、填空题

1、编译程序的工作过程一般可以划分为词法分析,语法分析,语义分析,中间代码生成,目标代码生成等几个基本阶段。

2、若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序。

3、编译方式与解释方式的根本区别在于是否生成目标代码。

5、对编译程序而言,输入数据是源程序,输出结果是目标程序。

7、若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序。

8、一个典型的编译程序中,不仅包括词法分析、语法分析、中间代码生成、代码优化、目标代码生成等五个部分,还应包括表格处理和出错处理。其中,词法分析器用于识别单词。

10、一个上下文无关文法所含四个组成部分是一组终结符号、一组非终结符号、一个开始符号、一组产生式。

12、产生式是用于定义语法成分的一种书写规则。

13、设G[S]是给定文法,则由文法G所定义的语言L(G)可描述为L(G)={x│

S

*

x,x∈V T*} 。

14、设G是一个给定的文法,S是文法的开始符号,如果S

*

x(其中x∈V*),

则称x是文法的一个句型。

15、设G是一个给定的文法,S是文法的开始符号,如果S

*

x (其中x∈V T*),

则称x是文法的一个句子。

16、扫描器的任务是从源程序中识别出一个个单词符号。

17、语法分析最常用的两类方法是自上而下和自下而上分析法。

18、语法分析的任务是识别给定的终结符串是否为给定文法的句子。

19、递归下降法不允许任一非终结符是直接左递归的。

20、自顶向下的语法分析方法的关键是如何选择候选式的问题。

编译原理习题及答案

编译原理习题及答案

( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 10.× 22.√
) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 11.
二、填空题: 2.编译过程可分为 ( 词法分析) , (语法分析) , (语义分析与中间代码生成 ) , (优化)和(目标 代码生成 )五个阶段。 3.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是( 二义性的 4.从功能上说,程序语言的语句大体可分为( 5.语法分析器的输入是( 单词符号 6.扫描器的任务是从( 源程序中 执行性 )语句和(说明性 ) 。 ) 。 ) ,其输出是( 语法单位 )中识别出一个个( 单词符号 ) 。 )语句两大类。
2. 考虑文法 G[S]: S → (T) | a+S | a T → T,S | S 消除文法的左递归及提取公共左因子。 解:消除文法 G[S]的左递归: S→(T) | a+S | a T→ST′ T′→,ST′| ε 提取公共左因子: S→(T) | aS′ S′→+S | ε T→ST′ T′→,ST′| ε 3. 试为表达式 w+(a+b)*(c+d/(e-10)+8) 写出相应的逆波兰表示。 解: w a b + c d e 10 - / + 8 + * + 4. 按照三种基本控制结构文法将下面的语句翻译成四元式序列: while (A<C ∧ B<D) { if (A ≥ 1) C=C+1; 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) 105 (j,_,_,108) 106 (+, C, 1, C)

编译原理试题及答案

编译原理试题及答案

参考答案

一、单项选择题(共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 3

B .L 3⊂L 2⊂L 1⊂L 0

C .L 3=L 2⊂L 1⊂L 0

D .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. 下列哪个不是编译器所需的基本处理步骤?

A. 词法分析

B. 语法分析

C. 语义分析

D. 目标代码优化

答案:D

2. 编译器的主要功能是将高级语言程序翻译成什么形式?

A. 汇编语言

B. 机器语言

C. 中间代码

D. 高级语言

答案:B

3. 下列哪个不属于编译器的后端阶段?

A. 代码优化

B. 目标代码生成

C. 词法分析

D. 目标程序优化

答案:C

二、填空题

1. 编译器的输入是源程序,输出是目标程序。

2. 目标代码生成阶段的任务是将中间代码翻译成汇编语言或机器语言。

3. 语法分析阶段的输出是抽象语法树。

三、简答题

1. 请简述编译器的工作原理。

编译器的工作原理主要包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等阶段。词法分析阶段将源程序分解成单词(也称为词法单元),语法分析阶段根据语法规则将词法单元组织成一个语法树,语义分析阶段对语法树进行语义检查,中间代码生成阶段将语法树转化为中间代码,代码优化阶段对中间代码进行优化,最后目标代码生成阶段将中间代码转化为机器语言或汇编语言。

2. 请说明词法分析的作用是什么,如何实现?

词法分析的作用是将源程序中的字符序列转化为单词序列,也就是将一段代码切分成不同的词法单元。实现词法分析可以通过有限状态

自动机来处理输入字符序列,并根据一系列规则将字符序列划分为词

法单元。常用的方法有手写分析器和使用词法分析生成器等。

3. 简要介绍一下代码优化的目的和方法。

代码优化的目的是通过对程序的中间代码或目标代码进行调整,以

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

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

2、对无二义性文法来说,一棵语法树往往代表了 。
a. 多种推导过程
b. 多种最左推导过程
c.一种最左推导过程
d.仅一种推导过程 e.一种最左推导过程
3、如果文法 G 存在一个句子,满足下列条件 之一时,则称该文法是二义文法。
a. 该句子的最左推导与最右推导相同
b. 该句子有两个不同的最左推导
c. 该句子有两棵不同的最右推导

a.语法分析
b.表格管理
c.出错处理
d.语义分析
e.词法分析
2、编译程序工作时,通常有
阶段。
a.词法分析
b.语法分析
c.中间代码生成
d.语义检查
e.目标代码生成
三、填空题
1、解释程序和编译程序的区别在于

2、编译过程通常可分为 5 个阶段,分别是
、语法分析
、代码优化和目标代码生成。
3、编译程序工作过程中,第一段输入是
,最后阶段的输出为
程序。
4、编译程序是指将
程序翻译成
程序的程序。
单选解答
1、将编译程序分成若干个“遍”是为了使编译程序的结构更加清晰,故选 b。
2、构造编译程序应掌握源程序、目标语言及编译方法等三方面的知识,故选 d。
3、对编译而言,变量既持有左值又持有右值,故选 c。
4、编译程序打交道最多的就是各种表格,因此选 d。

完整版编译原理复习题及答案

完整版编译原理复习题及答案

编译原理复习题及答案

一、选择题

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. 汇编器

编译原理期末总复习题(含答案)

编译原理期末总复习题(含答案)

第八节习题一、单项选择题

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。

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

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

第八节习题一、单项选择题

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.产生规则d.词法规则

7、词法分析器的输入是。

a.单词符号串b.源程序

c.语法单位d.目标程序

8、中间代码生成时所遵循的是- 。

a.语法规则b.词法规则

c.语义规则d.等价变换规则

9、编译程序是对。

a.汇编程序的翻译b.高级语言程序的解释执行

c.机器语言的执行d.高级语言的翻译

10、语法分析应遵循。

a.语义规则b.语法规则

c.构词规则d.等价变换规则

解答

1、将编译程序分成若干个“遍”是为了使编译程序的结构更加清晰,故选b。

2、构造编译程序应掌握源程序、目标语言及编译方法等三方面的知识,故选d。

3、对编译而言,变量既持有左值又持有右值,故选c。

4、编译程序打交道最多的就是各种表格,因此选d。

5、目标代码包括汇编指令代码、可重定位指令代码和绝对指令代码3种,因此不是目标代码的只能选d。

6、词法分析遵循的是构词规则,语法分析遵循的是语法规则,中间代码生成遵循的是语义规则,并且语义规则可以定义一个程序的意义。因此选a。

编译原理试题及答案(期末复习版)

编译原理试题及答案(期末复习版)

<编译原理>历年试题及答案

一.(每项选择2分,共20分)选择题

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.词法分析器的输出结果是_c___。

a.单词的种别编码

b.单词在符号表中的位置

c.单词的种别编码和自身值

d.单词自身值

6.正规式MI和M2等价是指__c__。

a.MI和M2的状态数相等

b.Ml和M2的有向弧条数相等。

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

a.语法规则b.词法规则c.语义规则d.等价变换规则

8.后缀式ab+cd+/可用表达式__b_来表示。

a.a+b/c+d b.(a+b)/(c+d)c.a+b/(c+d)d.a+b+c/d

9.程序所需的数据空间在程序运行前就可确定,称为____c__管理技术。

a.动态存储

b.栈式存储

c.静态存储

d.堆式存储

10.堆式动态分配申请和释放存储空间遵守___d_____原则。

a.先请先放

b.先请后放

c.后请先放

d.任意

二(每小题10分,共80分)简答题

1.画出编译程序的总体结构图,简述各部分的主要功能。

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

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

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

第⼀章

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. xyx

b. (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、有限状态⾃动机能识别。

编译原理试题及答案(期末复习版)

编译原理试题及答案(期末复习版)

历年试题及答案

一.(每项选择2分,共20分)选择题

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.词法分析器的输出结果是_c___。

a.单词的种别编码

b.单词在符号表中的位置

c.单词的种别编码和自身值

d.单词自身值

6.正规式MI和M2等价是指__c__。

a.MI和M2的状态数相等

b.Ml和M2的有向弧条数相等。

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

a.语法规则b.词法规则c.语义规则d.等价变换规则

8.后缀式ab+cd+/可用表达式__b_来表示。

a.a+b/c+d b.(a+b)/(c+d)c.a+b/(c+d)d.a+b+c/d

9.程序所需的数据空间在程序运行前就可确定,称为____c__管理技术。

a.动态存储

b.栈式存储

c.静态存储

d.堆式存储

10.堆式动态分配申请和释放存储空间遵守___d_____原则。

a.先请先放

b.先请后放

c.后请先放

d.任意

二(每小题10分,共80分)简答题

1.画出编译程序的总体结构图,简述各部分的主要功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

*

编译原理复习题

一.简答题:

1) 什么是句子? 什么是语言?

解答:句子——设G 是一个给定的文法,S 是文法的开始符号,如果S x (其中x ∈V T *

),则称x 是文法的一个句子。 语言——语言是句子的集合。

或——设G[S]是给定文法,则由文法G 所定义的语言L(G)可描述为:L(G)={x │

S

x,x ∈V T *

} 。

2) DFA 与NFA 有何区别 ?

解答:DFA 与NFA 的区别表现为两个方面:一是NFA 可以有若干个开始状态,而DFA 仅只有一个

开始状态。另一方面,DFA 的映象M 是从K ×∑到K ,而NFA 的映象M 是从K ×∑到K 的子集,即映象M 将产生一个状态集合(可能为空集),而不是单个状态。 3) 自顶向下的语法分析方法的基本思想是什么?

解答:从文法的开始符号开始,根据给定的输入串并按照文法的产生式一步一步的向下进行直接

推导,试图推导出文法的句子,使之与给定的输入串匹配。 4) 自底向上的语法分析方法的基本思想是什么?

解答:从给定的输入串(终结符串)开始,根据文法的规则一步一步的向上进行直接归约,试图

归约到文法的开始符号。

5) 一个上下文无关文法G 包括哪四个组成部分?

解答:一组非终结符号,一组终结符号,一个开始符号,以及一组产生式。 6) 在自底向上的语法分析方法中,分析的关键是什么?

解答:关键是寻找句柄。

7)在自顶向下的语法分析方法中,分析的关键是什么?

解答:关键是选择候选式。

8)什么是属性文法?

答:是在上下文无关文法的基础上,为每个文法符号(含终结符和非终结符)配备若干个属

性值,对文法的每个产生式都配备了一组属性计算规则(称为语义规则)。在语法分析过

程中,完成语义规则所描述的动作,从而实现语义处理。

一个属性文法形式的定义为一个三元组AG,AG=(G,V,E)。

其中G为一个上下文无关文法;V为属性的有穷集;E为一组语义规则。

9)语法制导翻译

语法制导翻译:定义翻译所必须的语义属性和语义规则,一般不涉及计算顺序。

语法制导翻译(Syntax-Directed Translations):

–一个句子的语义翻译过程与语法分析过程同时进行。

在文法中,文法符号有明确的意义,文法符号之间有确定的语义关系。属性描述语义信息,

语义规则描述属性间的的关系,将语义规则与语法规则相结合,在语法分析的过程中计算语义

属性值。

10)词法分析的主要任务是什么?

解答:词法分析器的任务是对构成源程序的字符串从左到右逐个字符逐个字符地进行扫

描,依次把它们识别为一个一个具有独立意义的单词,并确定其属性,再转换为长度统一的属

11)图示运行时存储空间的划分(分为哪几个区)。

解答: 一般分为静态区和动态区:

程序代码区、静态数据区、栈区和堆区

12)常用的中间语言种类有哪几种?

解答: 常用的中间语言种类有逆波兰表示、三元式、四元式和树形表示。

13)文法G所描述的语言是什么的集合?

解答:是由文法的开始符号推出的所有终结符串的集合。或说是句子的集合。

14)乔姆斯基把文法分为四种类型,即0型、1型、2型、3型。其中2型文法叫什么?

解答: 2型文法叫上下文无关文法。

15)常见的动态存贮分配策略有哪两种?

解答:常见的两种动态存贮分配策略是栈式动态分配策略和堆式动态分配策略。

16)语法分析的任务是什么?

解答:语法分析的任务是识别给定的终结符串是否为给定文法的句子。

17)局部优化是局限于一个什么围的一种优化?

解答: 是局限于一个基本块围的一种优化。

18)通常一个编译程序中应包括哪七个部分?

解答: 通常一个编译程序中应包含词法分析,语法分析,语义分析与中间代码生成,代码优化,目标代码生成以及表格处理和出错处理等七个部分。

19)代码优化的主要目标是什么?

解答: 代码优化的主要目标是如何提高目标程序的运行速度和如何减少目标程序运行时所需的空间。

20).符号表的组织方式有哪几种?

答:一个编译程序对符号表的总体组织可有三种选择:

第一种:把属性种类完全相同的那些符号组织在一起,构造出表项是分别为等长的多个符号表。这样组织的最大优点是每个符号表的属性个数和结构完全相同。则表项是等长的,并且表项中的每个属性栏都是有效的,对于单个符号表示来说,这样使得管理方便一致,空间效率高。但这样组织的主要缺点是一个编译程序将同时管理若干个符号表,增加了总体管理的工作量和复杂度。而且对各类符号共同属性的管理必须设置重复的运行机制。使得符号表的管理显得臃肿。

第二种:把所有语言中的符号都组织在一符号表中。组成一包括了所有属性的庞大的符号表。这样组织方式的最大优点是总体管理非常集中单一,且不同种类符号的共同属性可一致地管理和处理。这样组织所带来的缺点是,由于属性的不同,为完整表达各类符号的全部属性必将出现不等长的表项,以及表项中属性位置的交错重叠的复杂情况,这就极增加了符号表管理的复杂度。为使表项等长且实现属性位置的唯一性,可以把所有符号的可能属性作为符号表项属性。这种组织方法可能有助于降低符号表管理复杂性,但对某个具体符号,可能增加了无用的属性空间,从而增加了空间开销。

第三种:折衷方式是根据符号属性相似程度分类组织成若干表,每表中记录的符号都有比较多的相同属性。这种折衷的组织方式在管理复杂性及时空效率方面都取得折衷的效果,并且对复杂性和效率的取舍可由设计者根据自己的经验和要求及目标系统的客观环境和需求进行选择和调整。

21). 在整个编译期间,对于符号表的操作有哪些?

答:在整个编译期间,对于符号表的操作大致可归纳为五类:

·对给定名字,查询此名是否已在表中;

·往表中填入一个新的名字;

相关文档
最新文档