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

下载本文档

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

文档简介

(优选)编译程序基本概念现在是1页\一共有15页\编辑于星期一第1章

关于编译程序的基本概念内容提要:1.1什么是编译程序?1.2编译程序逻辑结构

1.3编译程序实现机制

1.4编程过程实例分析现在是2页\一共有15页\编辑于星期一Ⅲ.Ⅱ.Ⅰ.

※计算机中语言的层次体系:解释程序

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

汇编语言机器语言

计算机反编译程序转换程序

高级语言2编译程序1现在是3页\一共有15页\编辑于星期一

1.1什么是编译程序?

编译程序(compiler)是一种翻译程序,它特指把某种高级程序设计语言翻译成具体计算机上的低级程序设计语言。

高级语言的执行过程---源语言编译程序目标语言数据结果运行程序编译阶段运行阶段图1.2高级语言的执行过程两个阶段:现在是4页\一共有15页\编辑于星期一

※什么是解释程序?解释程序(interpreter)也是一种翻译程序,将某高级语翻译成具体计算机上的低级程序设计语言;解释程序的执行过成如图1.3所示。

编译程序与解释程序的主要区别:数据结果解释程序图1.3解释程序的执行过程一条源语句⑴前者有目标程序而后者无目标程序;⑵前者运行效率高而后者便于人机对话。现在是5页\一共有15页\编辑于星期一1.2编译程序结构词法分析语法分析语义分析代码生成源语言目标语言错误处理符号表管理图1.4编译程序总体结构框图优化处理

编译程序总体结构如图1.4所示。编译程序的五个阶段:单词串TOKEN词法分析源语言语法分析语义分析优化处理代码生成目标语言优化语义树错误处理符号表管理语法树语义树现在是6页\一共有15页\编辑于星期一【例1.1】我们用树叶和颜料能够制作美丽的图画。【机器翻译】是指利用计算机把一种自然语言翻译成另一种自然语言。翻译过程Ⅰ.词法分析:r()p()n()c()n()u()v()a()n().Ⅱ.句法分析:汉英辞典与知识库Wecanmakebeautifulpictureswithleavesandpaint.SpSbjPrdruvObjPpVpNpanpNpncnⅢ.语义分析:制作(make)<施事>我们(we)<受事>图画(pictures)<特征>美丽(beautiful)<材料>树叶(leaves)<并列>颜料(paint)<格标>用(with)Ⅳ.优化处理:…Ⅴ.目标生成:※编译程序与机器翻译的类比:语义网语法树现在是7页\一共有15页\编辑于星期一1.3编译程序的实现机制

根据语言和环境的不同,编译程序实现时是把图1.2中的各阶段划分成若干遍;遍:编译程序对源程序或等价程序从头至尾扫描的次数。

两遍的编译程序:

第一遍:词法分析、语法分析和语义分析;

第二遍:目标代码生成和目标代码优化。

每遍中的各阶段的工作是穿插进行的,例如:使语法分析器处于核心位置,而把词法分析器作为子程序;当语法分析需要下一个单词时,就调用词法分析器,识别一个单词。现在是8页\一共有15页\编辑于星期一1.4编译过程实例例:Pascal程序片段:⒈

词法分析:识别单词并分类vara,b:integer;

...b:=a+2*5;

编译过程如下:⑴关键字(k)--var,integer;

⑵标识符(i)--a,b;

⑶常数(c)--2,5;⑷界符(p)--,;::=+

单词类码现在是9页\一共有15页\编辑于星期一图1.5赋值语句b:=a+2*5

的语法树例:b:=a+2*5

的分析过程如下所示:(生成的结果是一棵语法树

)

<变量>

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

<项>+<项>

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

<常数><常数>a25<因式>2.语法分析:组词成句及语法错误检查算术表达式的层次结构ⅠⅡⅢ现在是10页\一共有15页\编辑于星期一3.语义分析:分析各种语法成分的语义特征;vara,b:integer;

...b:=a+2*5;构建标识符的语义辞典---符号表:构造语句的语义树---中间语言;

b的值

a的值

数据区

v

i

b

v

i

a地址种类类型名字符号表:=b+a*25如:b:=a+2*5⑴(*25t1)⑵(+at1t2)⑶(:=t2_b)或现在是11页\一共有15页\编辑于星期一4.

优化:提高目标程序质量的工作;:=b+a*25⑴(*25t1)⑵(+at1t2)⑶(:=t2_b)经常数合并,可分别获得优化后的中间代码如下图所示:⑴(+a10t2)⑵(:=t2_b)例:b:=a+2*5:=b+a10现在是12页\一共有15页\编辑于星期一5.

目标代码生成:

产生计算机可识别的语言;通常,是把中间语言转换成目标代码,⑴(+a10t2)⑵(:=t2_b)①LDR,a②ADDR,10

③STR,bR

为寄存器三条指令分别为:取、加和存。如:目标代码:现在是13页\一共有15页\编辑于星期一

编译程序的理论基础编译程序的构造,是一种语言处理工程,其理论基础和技术基础主要有以下两个方面:

1.形式语言【第2章】计算机处理语言,首先应考虑语言的形式化、规范化,使其具有可计算性和可操作性;形式语言诞生于1956年,由chomsky创立。

2.自动机【第3章】自动机是一种语言模

温馨提示

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

评论

0/150

提交评论