第1章 编译程序基本概念_第1页
第1章 编译程序基本概念_第2页
第1章 编译程序基本概念_第3页
第1章 编译程序基本概念_第4页
第1章 编译程序基本概念_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

编译程序的设计原理与实现如何让计算机认识、理解和执行高级程序设计语言?自我介绍课件:

compiler_principle@

password:2008happy网易网盘->我的文档Email:

刘洪娟:liuhongjuan0125@163.com办公室:

综合楼303办公电话:

83680831

教材与参考书教材:胡伦骏等:《编译原理》(第2版),电子工业出版社。参考书:美AlfredV.Aho,RaviSethiJeffrey,D.Ullman著.李建中,姜守旭译:《编译原理》,机械工业出版社,2003-1。美KennethC.Louden著,冯博琴等译:《编译原理及实践》,机械工业出版社,2002-2。陈火旺等:《程序设计语言编译原理》(第3版),国防工业出版社,2003-2。课程的学时分配(40学时)课程内容教学上机第1章编译程序基本概念2第2章形式语言基础4第3章自动机基础4第4章词法分析24第5章语法分析6第6章中间代码生成64第7章符号表组织2第8章优化2第9章目标代码生成4合计328计算机系统硬件软件组成原理电子技术体系结构数字逻辑电路电路原理大学物理计算机网络接口与通讯技术通讯概论安全与保密程序设计语言汇编语言高级语言编译原理计算理论C、C++、JAVA、PB、VB…系统软件操作系统DOS、Windows、UNIX…数据库Access、Sybase、Oracle…数据结构人工智能应用软件开发软件工程算法设计与分析本课程在计算机系统中的地位

课程的名称、地位和特点课程名称:编译理论、编译原理、编译结构、编译技术和编译方法等。课程地位:编译程序(系统)和操作系统一起构成了计算机中两大系统软件;一个是计算机资源的操纵者;而另一个是计算机软件资源的开拓者。课程特点:

知识性—形式语言和自动机作为本课程的两大理论基础具有典型的应用技术;

系统性—从词法、语法、语义直到目标生成,构成了语言翻译的完整体系;

趣味性—关于语言处理的一些经典算法和实现技术,可以享受获取软件设计方法的乐趣。

应用性—编译技术可广泛应用于文本编辑、排版系统、模式识别以及机器翻译等各个领域。第1章编译程序基本概念内容提要

1.1什么是编译程序?1.2编译程序逻辑结构1.3编译程序实现机制1.4编译程序的生成方法1.5编译过程实例分析Ⅲ.Ⅱ.Ⅰ.计算机中语言的翻译程序体系解释程序

图1.1计算机语言的层次体系高级语言1编译程序2反汇编程序汇编程序

汇编语言机器语言反编译程序转换程序

高级语言2编译程序11.1什么是编译程序?

编译程序(compiler)是一种翻译程序,它特指把某种高级程序设计语言翻译成与之等价的具体计算机上的低级程序设计语言。编译程序的执行过程—两个阶段:源语言编译程序目标语言数据结果运行程序编译阶段运行阶段图1.2编译程序的执行过程※什么是解释程序?

解释程序(interpreter)也是一种翻译程序,它将源语言书写的源程序作为输入,解释一句后就提交计算机执行一句,并不形成目标程序。

编译程序与解释程序的主要区别:数据结果解释程序图1.3解释程序的执行过程源语句(1)前者有目标程序而后者无目标程序;(2)前者运行效率高而后者便于人机对话。1.2编译程序逻辑结构词法分析语法分析语义分析目标代码生成源语言目标语言错误处理程序符号表管理程序图1.4编译程序总体结构优化处理编译程序的五个阶段:※编译程序执行过程词法分析语法分析语义分析目标代码生成源语言目标语言错误处理程序符号表管理程序

图1.5

编译程序执行过程图解优化处理单词串TOKEN语法树语义树优化语义树前端后端※编译程序与外文翻译的类比:

词法分析--识别单词,确认词类;

语法分析--识别短语和句型的

语法属性;

语义分析

--确认单词、短语和句型的

语义特征;

代码优化--修辞、文本编辑;

代码生成--生成译文。Iwishyousuccess!1.3编译程序的实现机制遍:编译程序对源程序或等价程序从头至尾扫描的次数。

根据语言和环境的不同,编译程序实现时是把图1.4中的各阶段划分成若干遍;典型的情况是两遍的编译程序:第一遍:词法分析、语法分析和语义分析;第二遍:中间代码优化和目标代码生成。每遍中的各阶段的工作是穿插进行的,例如:使语法分析器处于核心位置。当语法分析需要下一个单词时,就调用词法分析器,识别一个单词;一旦识别出一个语法单位,就调用语义分析器,完成语义分析并产生中间代码。1.4编译程序的生成方法编译程序的生成方法:

利用已有的编译器自编译方式移植方式:重写编译器代码的后端自动生成编译程序:词法分析程序生成器LEX

语法分析程序生成器YACC

编译程序生成器

输入:词法规则、语法规则和语义解释涉及的三个语言:源语言、目标语言和实现语言。1.5编译过程实例分析例:C程序片段:1.

词法分析:识别单词并分类

inta,b;

...b=a+2*5;

编译过程如下:⑴关键字(k)--int⑵标识符(i)--a,b⑶常数(c)--2,5⑷界符(p)--,;=+*

单词类码图1.6赋值语句b=a+2*5的语法树例:b=a+2*5的分析过程如下所示:(生成的结果是一棵语法树

)

<变量>

=<表达式><赋值语句>b

<项>+<项>

<变量><因式>*<因式>

<常数><常数>a25<因式>2.语法分析:组词成句及语法错误检查算术表达式的层次结构ⅠⅡⅢ3.语义分析:分析各种语法成分的语义特征inta,b;...b=a+2*5;构建标识符的语义辞典---符号表:构造语句的语义树---中间语言;b的值a的值

数据区

v

i

b

v

i

a

地址种类

类型

名字符号表=b+a*25如:b=a+2*5(1)(*25t1)(2)(+at1t2)(3)(=t2_b)或4.优化:提高目标程序的质量=b+a*25(1)(*25t1)(2)(+at1t2)(3)(=t2_b)经常数合并,可分别获得优化后的中间代码如下图所示:(1)(+a10t2)(2)(=t2_b)例

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论