--
《编 译 原 理》教案
授课题目(教学章、节或主题): 第一章 引论 教学目的、要求(分掌握、熟悉、了解三个层次): 简单介绍学习此课程的目的和要求 初步了解编译技术的基本原理和方法 熟悉Compiler的基本概念 掌握Compiler的结构和功能 教学重点和难点:编译程序的基本结构和功能 授课类型(请打√):理论课教学方式(请打√):讲授 讨论课□ 实验课□ 练习课□ 其他□ 其他□ 课时安排 授课时间 2 第1周 第1、2节 讨论□ 示教□ 指导教学资源(请打√):多媒体讨论、思考题、作业: 模型□ 实物□ 挂图□ 音像□ 其他□ 编译程序的基本结构如何?各部分功能? 教学内容
0 课程学习的要求及任务,学习方法介绍,成绩考核标准。
第一章 引论
1.1 什么叫编译程序?
通常所说的翻译程序是指这样的一个程序,它能够把某一种语言程序(称为源
语言程序)转换成另一种语言程序(称为目标语言程序),而后者与前者在逻辑上是等价的。如果 源语言是诸如FORTRAN、Pascal、C、Ada、Smalltalk或
--
--
Java这样的“高级语言”,而目标语言是诸如汇编语言或机器语言之类的“低级语言”,这样的一个翻译程序就称为编译程序。
高级语言程序除了像上面所说的先编译后执行外,有时也可“解释”执行。一个源
语言的解释程序是这样的程序,它以该语言写的源程序作为输入,但不产生目标程序,而是 边解释边执行源程序本身。本书将不对解释程序作专门的讨论。实际上,许多编译程序的构造与实现技术同样适用于解释程序。
根据不同的用途和侧重,编译程序还可进一步分类。专门用于帮助程序开发和调
试 的编译程序称为诊断编译程序(Diagnostic Compiler),着重于提高目标代码效率的编译程序叫优化编译程序(Optimizing Compiler)。现在很多编译程序同时提供了调试、优化等多种功能,用户可以通过“开关”进行选择。运行编译程序的计算机称宿主机,运行编译程序所产生目标代码的计算机称目标机。
如果一个编译程序产生不同于其宿主机的机器代码, 则称它为交叉编译程序
(CrOSS Compiler)。如果不需重写编译程序中与机器无关的部分就能改变目标机,则称该编译程序为可变目标编译程序(Retargetable Compiler)。 1.2 编译过程概述
编译程序过程: 从输入源程序开始到输出目标程序为止的整个编译过程可分为以下五个阶段:词法分析,语法分析,语义分析,中间代码产生,优化和目标代码生成. 1.3 编译程序的结构
编译程序的结构可以按照从输入源程序开始到输出目标程序为止的整个编译过
程可分为以下五个阶段:词法分析,语法分析,语义分析,中间代码产生,优化和目标代码生成。
--
--
1.3.1 编译程序总框
编译程序的结构可以按照这五个阶段的任务分模块进行设计。下图给出了编译程
序的总框。
1.3.2 表格与表格管理
编译程序在工作过程中需要保持一系列的表格,以登记源程序的各类信息和编
译各阶段的进展状况。在编译程序使用的表格中,最合理的是符号表。 编译程序在工作过程中需要保持一系列的表格,以登记源程序的各类信息和编译各阶段的进展状况。合理地设计和使用表格是编译程序构造的一个重要问题。在编译程序使用的表格中,最重要的是符号表。它用来登记源程序中出现的每个名字以及名字的各种属性。例如,一个名字是常量名、变量名,还是过程名等等;如果是变量名,它的类型是什么、所占内存是多大、地址是什么等等。通常,编译程序在处理到名字的定义性出现时,要把名字的各种属性填人到符号表中;当处理到名字的使用性出现时,要对名字的属性进行查证。
--
《编译原理》教案



