《编译原理》教案

《编译原理》教案

ID:19532034

大小:1.80 MB

页数:40页

时间:2018-10-03

《编译原理》教案_第1页
《编译原理》教案_第2页
《编译原理》教案_第3页
《编译原理》教案_第4页
《编译原理》教案_第5页
资源描述:

《《编译原理》教案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《编译原理》教案授课题目(教学章、节或主题):课时安排2第一章引论授课时间第1周第1、2节教学目的、要求(分掌握、熟悉、了解三个层次):简单介绍学习此课程的目的和要求初步了解编译技术的基本原理和方法熟悉Compiler的基本概念掌握Compiler的结构和功能教学重点和难点:编译程序的基本结构和功能授课类型(请打√):理论课讨论课□实验课□练习课□其他□教学方式(请打√):讲授讨论□示教□指导其他□教学资源(请打√):多媒体模型□实物□挂图□音像□其他□讨论、思考题、作业:编译程序的基本结构如何?各部分功能?教学内容0课程学习的

2、要求及任务,学习方法介绍,成绩考核标准。第一章引论1.1什么叫编译程序?通常所说的翻译程序是指这样的一个程序,它能够把某一种语言程序(称为源语言程序)转换成另一种语言程序(称为目标语言程序),而后者与前者在逻辑上是等价的。如果源语言是诸如FORTRAN、Pascal、C、Ada、Smalltalk或Java这样的“高级语言”,而目标语言是诸如汇编语言或机器语言之类的“低级语言”,这样的一个翻译程序就称为编译程序。高级语言程序除了像上面所说的先编译后执行外,有时也可“解释”执行。一个源语言的解释程序是这样的程序,它以该语言写的源程序作为输

3、入,但不产生目标程序,而是边解释边执行源程序本身。本书将不对解释程序作专门的讨论。实际上,许多编译程序的构造与实现技术同样适用于解释程序。根据不同的用途和侧重,编译程序还可进一步分类。专门用于帮助程序开发和调试的编译程序称为诊断编译程序(DiagnosticCompiler),着重于提高目标代码效率的编译程序叫优化编译程序(OptimizingCompiler)。现在很多编译程序同时提供了调试、优化等多种功能,用户可以通过“开关”进行选择。运行编译程序的计算机称宿主机,运行编译程序所产生目标代码的计算机称目标机。如果一个编译程序产生不同

4、于其宿主机的机器代码,则称它为交叉编译程序(CrOSSCompiler)。如果不需重写编译程序中与机器无关的部分就能改变目标机,则称该编译程序为可变目标编译程序(RetargetableCompiler)。11.2编译过程概述编译程序过程:从输入源程序开始到输出目标程序为止的整个编译过程可分为以下五个阶段:词法分析,语法分析,语义分析,中间代码产生,优化和目标代码生成.1.3编译程序的结构编译程序的结构可以按照从输入源程序开始到输出目标程序为止的整个编译过程可分为以下五个阶段:词法分析,语法分析,语义分析,中间代码产生,优化和目标代码生

5、成。1.3.1编译程序总框编译程序的结构可以按照这五个阶段的任务分模块进行设计。下图给出了编译程序的总框。1.3.2表格与表格管理编译程序在工作过程中需要保持一系列的表格,以登记源程序的各类信息和编译各阶段的进展状况。在编译程序使用的表格中,最合理的是符号表。编译程序在工作过程中需要保持一系列的表格,以登记源程序的各类信息和编译各阶段的进展状况。合理地设计和使用表格是编译程序构造的一个重要问题。在编译程序使用的表格中,最重要的是符号表。它用来登记源程序中出现的每个名字以及名字的各种属性。例如,一个名字是常量名、变量名,还是过程名等等;如

6、果是变量名,它的类型是什么、所占内存是多大、地址是什么等等。通常,编译程序在处理到名字的定义性出现时,要把名字的各种属性填人到符号表中;当处理到名字的使用性出现时,要对名字的属性进行查证。当扫描器识别出一个名字(标识符)后,它把该名字填人到符号表中。但这时不能完全确定名字的属性,它的各种属性要在后续的各阶段才能填人。例如,名字的类型等要在语义分析时才能确定,而名字的地址可能要到目标代码生成才能确定。由此可见,编译各阶段都涉及到构造、查找或更新有关的表格。1.3.3出错处理2遍:是对源程序或源程序的中间结果从头到尾扫描一次,并作有关的加工

7、处理,生产新的中间结果或目标程序。一个编译程序不仅应能对书写正确的程序进行翻译,而且应能对出现在源程序中的错误进行处理。如果源程序有错误,编译程序应设法发现错误,把有关错误信息报告给用户。这部分工作是由专门的一组程序(叫做出错处理程序)完成的。一个好的编译程序应能最大限度地发现源程序中的各种错误,准确地指出错误的性质和发生错误的地点,并且能将错误所造成的影响限制在尽可能小的范围内,使得源程序的其余部分能继续被编译下去,以便进一步发现其它可能的错误。如果不仅能够发现错误,而且还能自动校正错、误,那当然就更好了。但是,自动校正错误的代价是非

8、常高的。编译过程的每一阶段都可能检测出错误,其中,绝大多数错误可以在编译的前三阶段检测出来。源程序中的错误通常分为语法错误和语义错误两大类。语法错误是指源程序中不符合语法(或词法)规则的错误,它们可在词法分

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。