编译原理课件-引论_第1页
编译原理课件-引论_第2页
编译原理课件-引论_第3页
编译原理课件-引论_第4页
编译原理课件-引论_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

编译原理课程目标掌握高级语言的编译原理和方法第一章

引论

什么是编译程序编译过程概述编译程序的结构编译程序与程序设计环境编译程序的生成§1.1什么叫编译程序计算机是如何实现用户的计算需求?§1.1什么叫编译程序

大多数用户是利用高级语言为工具编程来实现需求的§1.1什么叫编译程序

为什么不能执行源程序test.c?

必须翻译成机器语言程序test.exe

§1.1什么叫编译程序●计算机如何执行高级语言程序?

实现用户的计算需求●高级语言的作用?①首先将高级语言程序翻译为机器语言程序②然后运行机器语言程序求得计算结果●翻译程序高级语言程序→

低级语言程序将一种语言程序转换成逻辑上等价的另一种语言程序●编译程序(C、 C++)

(汇编、机器语言)●解释程序

以源程序作为输入,边解释边执行源程序本身,并不产生目标程序。

源目标●编译程序的分类●编译程序的发展史

Compiler是随着高级语言的发展而发展的。

第一个编译程序是FORTRAN编译程序

Algol60语言是计算机语言的研究成为一门科学的标志。

§1.2编译过程概述

编译程序的工作过程:源程序目标程序*.C

*.exe编译程序TurboC例如例如:

英文句子

中文句子

Hiswordscameoutinqiacksuccession.

(1)词法分析识别出一个个单词,并指出单词错误。quick(2)语法分析:各类语法范畴。

主语:Hiswords

谓语:cameout

状语:inquicksuccession

(3)初步翻译:他的话用快的连续的方式说出来。(4)优化:inquicksuccession

机关枪似的。(5)译文:他说话像机关枪似的。§1.2编译过程概述编译程序的五个阶段:词法分析语法分析语义分析与中间代码产生优化目标代码生成例如:

for(i=1;i<=N;i++)

基本字

for

标识符

i

N

常数

1界符();

运算符

=<=++

●词法分析任务:

输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个单词(或符号)。

(线性分析)描述词法规则的工具

正则式、有限自动机、正规文法●语法分析

任务:在词法分析的基础上,根据语言的语法规则,把单词串分解成各类语法单位(语法范畴)。描述语法规则的工具:

上下文无关文法例如:

z=x+0.618*y;●语义分析与中间代码产生

任务:对各类语法范畴,分析其含义,并进行初步翻译、产生中间代码。描述语义规则的工具:

属性文法(2)中间代码的翻译

(独立于具体硬件、且含义明确的记号系统)

(1)静态语义检查

(变量是否定义、类型是否正确)举例:

Z:=X+0.618*Y;序号算符左操作数右操作数结果(1)*0.618YT1(2)+XT1T2(3):=T2Z对应的中间代码形式(四元式):●优化

任务:

对前段产生的中间代码进行加工变换,力求在最后阶段能产生出更高效的目标代码。优化的原则:

程序的等价变换规则举例

for(k=1;k<=100;k++)

{m=a+10*k;n=b-10*k;}序号算符左操作数右操作数结果(1):=1K(2)j>k100(9)(3)*10kT1(4)+aT1m(5)*10kT2(6)-bT2n(7)+k1K(8)j(2)(9)……中间代码:序号算符左操作数右操作数结果(1):=am(2):=bn(3):=1K(4)j>k100(9)(5)+m10m(6)-n10n(7)+k1K(8)j(4)(9)……优化后的中间代码:●目标代码生成任务:把中间代码变换成依赖于特定机器上的低级语言代码。目标代码的三种形式:

(1)绝对指令代码(2)汇编指令代码(3)可重定位的指令代码

§1.3编译过程的结构

词法分析器

语法分析器

语义分析与中间代码产生器

优化器

目标代码生成器

出错处理表格管理源程序单词符号语法单位中间代码中间代码目标代码遍(pass)

对源程序或源程序的中间结果从头至尾扫描一次,并做有关的加工处理技术,并生成新的中间结果或目标程序。

编译前端:

与源语言有关,与目标机无关的部分。

(词法分析、语法分析、语义分析与中间代码生成、优化)编译后端:

与源语言无关,与目标机有关的部分。

(优化、目标代码生成)§1.4编译程序与程序设计环境编辑程序(智能提示、词法查错)编译程序连接程序调试工具配置管理程序控制流分析工具§1.5编译程序的生成

机器/汇编语言直接编写在现有编译器基础上用高级语言编写先实现语言的内核编译,再进行自编译扩展先实现某语言的编译,再用该语言实现另一语言的编译,即编译—编译程序利用编译程序产生器输入源语言和目标语言的形式描述而自动产生

温馨提示

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

评论

0/150

提交评论