编译原理课件chap1.ppt

编译原理课件chap1.ppt

ID:51496650

大小:87.50 KB

页数:18页

时间:2020-03-25

编译原理课件chap1.ppt_第1页
编译原理课件chap1.ppt_第2页
编译原理课件chap1.ppt_第3页
编译原理课件chap1.ppt_第4页
编译原理课件chap1.ppt_第5页
资源描述:

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

1、第一章引论(1)1.1什么叫编译程序编译程序:是指这样的程序,它能够把某种语言的程序转换成另一种语言的程序,而后者与前者在逻辑上是等价的。如果源语言是诸如FORTRAN、Pascal、C、Ada、Smalltalk或Java这样的“高级语言”,而目标语言如汇编语言之类的“低级语言”这样的翻译程序则称之为编译程序。第一章引论注意编译程序与解释程序的区别,一个语言的解释程序是着样的程序:它以该语言写的源程序作为输入,但不产生目标程序,而是边解释边执行源程序本身。术语“编译”的内涵是实现从源语言表示的算法向目标语言表示的算法的等

2、价变换。第一章引论1.2编译过程概述掌握编译过程的五个基本阶段,是我们学习编译原理课程的基本内容,把编译的五个基本阶段与英译中的五个步骤相比较,有利于对编译过程的理解:第一章引论英译与编译的比较1。识别出句子中的一个个单字2。分析句子的语法结构3。初步翻译句子的含意4。译文修饰5。写出最后译文1。词法分析2。语法分析3。语义分析中间代码生成4。优化5。目标代码生成第一章引论1。2。1词法分析输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个单词(也称单词符号,或简称符号)在词法分析阶段工作所依循的是语言的词法规则

3、。描述词法规则的有效工具是正规式和有限自动机。第一章引论1。2。2语法分析语法分析的任务:在词法分析的基础上,根据语言的语法规则,把单词符号分解成各类语法单位(语法范畴),如“短语”、“句子”、“子句”、“程序段”等。语法规则通常用上下文无关文法描述。第一章引论1。2。3语义分析与中间代码的产生这一阶段通常包括两方面的工作首先对各种语法范畴进行静态语义检查,如果正确则进行另一方面的工作,即进行中间代码的翻译。通常使用属性文法描述语义规则所谓“中间代码”是一种含义明确,便于处理的记号系统。中间代码除四元式外,还有三元式、间接

4、三元式、逆波兰记号、树形表示等。第一章引论1。2。4优化优化的任务在于对前段产生的中间代码进行加工,以期在最后阶段产生更为高效(省时间和空间)的代码优化所依循的原则是程序的等价变换规则其方法有:公共子表达式的提取、循环优化、删除无用代码等。第一章引论1。2。5目标代码生成这一阶段的任务:把中间代码(或经优化处理后)变换成特定机器上的低级语言代码。它有赖于硬件系统结构和机器指令含义。第一章引论1。3编译程序的结构表格管理词法分析器语法分析器语义分析与中间代码产生优化器目标代码生成器源程序单词符号语法单位中间代码中间代码目标代

5、码出错处理第一章引论我们可以按照上页的总框图设计编译程序。从图中我们可以看到除编译的五个基本阶段外,一个完整的编译程序还应包括“表格管理”和“出错处理”两部分1。3。2表格与表格管理在编译程序使用的表格中最重要的是符号表它用来登记源程序中出现的每一个名字以及名子的各种属性。如一个名字是常量名、变量名,还是过程名等;如果是变量名它的类型又是什麽、所站内存是多大、地址是什麽等。第一章引论1。3。3出错处理一个编译程序不仅能对书写正确的程序进行编译,而且应能对处现在源程序中的错误进行处理。如果源程序有错,编译程序应设法发现错误,

6、把有关错误报告给用户。这部分的工作是由专门的一组程序(叫做处错处理程序)完程的。第一章引论1。3。5编译前端与后端前端主要由与源语言有关但与目标机无关的那些部分组成。通常包括词法分析、语法分析、语义分析与中间代码产生,有的代码优化工作,也可以包括在前端。后端包括编译程序中与目标代码有关的部分,如与目标机有关的有关的优化,和目标代码的生成等。第一章引论1。4编译程序与程序设计环境编译程序无疑是实现高级语言的一个最重要的工具。但支持程序设计人员进行程序设计开发通常还需要其它一些工具:如编辑程序、连接程序、调试程序等。编译程序与

7、这些程序设计工具一起构成所谓的程序设计环境。在一个程序设计环境中,编译程序起着中心的作用。连接程序、调试程序、程序分析等工具直接依赖于编译程序所产生的结果,而其它工具的构造也常常要用到编译的原理、方法和技术。第一章引论1。5编译程序的生成以前构造编译程序大多是用机器语言或汇编语言作工具的。为了充分发挥各种不同硬件系统的效率,为了满足各种不同的具体要求,现在许多人仍然使用这种工具来构造编译程序(或编译程序的核心部分)但是越来越多的人已经使用高级语言作工具来编译程序。因为这样可以大大节省程序设计的时间,热切构造出来的编译程序易

8、于阅读、维护和移植。第一章引论为此我们用T形图来表示源语言S、目标语言T和编译语言I之间的关系,如果A机器上已有一个用A机器码实现的某高级语言L1的编译程序,则我们可以用L1语言编写另一种高级语言L2的编译程序,把写好的L2编译程序经过L1编译程序编译后就可得到A机器代码实现的L2编译程序。第一章引论我

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

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

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