编译原理作业集-第一章-修订版 下载本文

编译原理作业集-第一章

的编译程序。

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

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

可变目标编译程序:不需重写编译程序中与机器无关的部分就能改变目标机的编译程序。 3. 编译程序的“遍”:就是对源程序或者中间结果从头到尾的一次扫描,并做有关的加工处理,生成新的中间结果或者目标程序。

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

(按照组卷方案,至少3道小题) 1. 什么是编译程序的“遍”?

2. 什么编译程序、解释程序?编译程序和解释程序有什么区别?

3. 前端编译和后端编译是如何划分的?

西安理工大学计算机学院 张发存编写 8:45:54 PM12/16/2019

11

编译原理作业集-第一章

4. 什么是标识符,什么是名字,它们的区别是什么?

5. 如果机器A上已有一个用A机器代码实现的某高级语言L1的编译程序,则可以用L1编写另一种高级语言L2的编译程序,画出这个实现过程的T形图表示。

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

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

既可以将几个不同阶段合为一遍,也可以把一个阶段的工作分为若干遍。当一遍中包含若干阶段时,各阶段的工作是穿插进行的。

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

2. 编译程序:把某一种高级语言源程序转换成

西安理工大学计算机学院 张发存编写 8:45:54 PM12/16/2019

12

编译原理作业集-第一章

汇编语言程序或机器语言程序的程序。 解释程序:对高级语言源程序并不生成汇编程序或机器语言程序,而是边解释边执行的程序。 编译程序把源语言程序翻译成目标代码,然后由操作系统加载执行;而解释程序则是边翻译边执行,不生成目标代码。

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

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

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

当给某标识符以确切的含义时,这个标识符就叫做名字。程序语言中的各种名字都是用标识符

西安理工大学计算机学院 张发存编写 8:45:54 PM12/16/2019

13

编译原理作业集-第一章

表示的。 名字和标识符具有相同的形式,名字使用标识符来描述,但标识符是没有意义的字符序列,而名字却有确切的意义和属性(即类型和作用域)。 5. L2语言 A代码 L2语言 A代码 L1语言 L1语言 A代码 A代码 A代码 6. L语言 B代码 L语言 B代码 L语言 L语言 B代码 L语言 B代码 B代码 L语言 L语言 A代码 A代码 A代码 西安理工大学计算机学院 张发存编写 8:45:54 PM12/16/2019 14