编译原理复习-中国矿业大学北京 下载本文

内容发布更新时间 : 2024/5/4 10:45:03星期一 下面是文章的全部内容请认真阅读。

第1章 引论(小结)

1. 编译程序的功能:将……翻译成…… 2. 编译过程:

词法分析、语法分析、语义分析、(中间代码生成、代码优化)、目标代码生成。 3. 解释程序的工作模式:

一个个获取、分析并执行源程序语句。 4. 编译程序与解释程序的根本区别:

是否生成目标代码。 5. PL/0编译系统的构成:

以语法语义分析程序为核心,词法分析程序和代码生成程序都作为一个独立的过程被语法语义分析程序调用。 6. PL/0的语法描述:EBNF 7. PL/0的目标代码:p-code

8. PL/0的出错处理:语法错误、语义错误、运行错误

第1章 练习

1、程序语言一般分为 (1) 和 (2) 两大类。其中 (3) 与人类自然语言比较接近,(4)又称为面向机器的语言。 A 高级语言 B 专用程序语言 C 低级语言 D 通用程序语言

A C A C

2、面向机器的语言是指(1) ,其特点是(2) 。 (1) A. 用于解决机器硬件设计问题的语言 B. 特定计算机系统所固有的语言 C. 各种计算机系统都通用的语言 D. 只能在一台计算机上使用的语言

(2) A. 程序执行效率低,编写效率低,可读性差 B. 程序执行效率低,编写效率高,可读性强 C. 程序执行效率高,编写效率高,可读性强 D. 程序执行效率高,编写效率低,可读性差

B D 3、编译程序是将 (1) 翻译成 (2) ;汇编程序是将 (3) 翻译成 (4) 。 A.汇编语言程序 B.高级语言程序 C.机器语言程序 D.汇编语言程序 或 机器语言程序 E.汇编语言程序 或 高级语言程序

B D A C

4、编译程序的工作过程可以划分为 (1) 等六个阶段,同时还伴有 (2) 和(3) 。

(1)词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成。 (2)表格管理

(3)出错处理

5、编译程序可以发现源程序的全部 (1) 错误和部分 (2) 错误。 A.语用 B. 语义 C.语法 D. 运行

C B

6、要在某台机器上为某种语言构造一个编译程序(编译器),必须掌握的内容有(1)。 A.汇编语言 B.源语言 C.目标语言 D.程序设计方法学 E.编译方法 F.测试方法 G.机器语言

B C E

7、一个编译程序,不仅包含词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成,还应包括(1) 。其中(2)和(3)不是每个编译程序都必需的。词法分析器用于识别(4) 。语法分析器可以发现源程序中的 (5)。

(1)表格处理和出错处理 (2)中间代码生成 (3) 代码优化 (4)单词 (5)语法错误

8、程序语言的语言处理程序是一种(1)。(2)都是程序语言的处理程序,两者的主要区别在于(3) 。 (1) A.系统软件 B. 应用软件 C.实时软件 D. 分布式系统软件 (2) A. 高级语言程序 和 低级语言程序 B. 解释程序 和 编译程序 C. 编译程序 和 操作系统 D. 系统程序 和 应用程序 (3) A. 单用户与多用户的差别 B. 对用户程序的查错能力不同 C. 机器执行的效率不同 D. 是否生成目标代码

A B D 9、编译器必须完成的工作有(1) 。 A. 词法分析 B. 语法分析 C. 语义分析

D. 中间代码生成 E. 代码优化 F. 目标代码生成

A B C F

因为代码优化是为了提高目标程序的质量,不是必须的,没有优化源程序一样能够转化为目标代码。而中间代码生成是为代码优化服务的,没有代码优化的编译器可以直接生成目标代码。

10、编译时,语法分析器的任务包括(1) 。 A. 分析单词是怎样构成的 B. 分析单词串是如何构成语句和说明的 C. 分析语句和说明是如何构成程序的 D. 分析程序的结构

B C D

11、与编译程序相比,解释程序通常缺少(1),同时,解释程序(2),它处理语言时采用的方法是(3)。 (1) A.中间代码生成 B.目标代码生成 C.词法分析 D.语法分析 E.代码优化 (2) A.比较简单,可以移植性好,执行速度快 B.比较复杂,可以移植性好,执行速度快 C.比较简单,可以移植性差,执行速度慢 D.比较简单,可以移植性好,执行速度慢 (3) A. 源程序语句被直接解释执行 B. 将源程序逐句转化成中间代码,解释执行 C. 先将源程序解释转化为目标代码,再执行 D. 以上方法都行

(1)B E (2) D (3) B

编译与解释的根本区别:是否生成目标代码 工作模式是一个个获取、分析并执行源程序

12、判断:“含有代码优化的编译器的执行效率高”。 错。含有代码优化的编译器,其优化是指对生成的目标代码进行了优化,而不是编译器本身得到了优化,所以,它提高的是目标代码的执行效率,而不是编译器本身的执行效率。

13. 判断:“解释方式与编译方式的区别在于解释程序对源程序没有真正进行翻译”。 错。编译方式和解释方式实际上都进行的翻译,只是编译相当于笔译,而解释相当于口译。 解释方式下,不将于源程序彻底翻译成目标代码,而是每读入一条语句,将其翻译成中间代码,解释其含义并执行,然后再读入下一条语句,再翻译执行。 编译方式和解释方式的根本区别在于“是否生成了目标代码”。

1. 编译程序有哪些主要构成成分?各自的主要功能是什么?