编译原理PPT课件第一章编译引论.ppt
《编译原理PPT课件第一章编译引论.ppt》由会员分享,可在线阅读,更多相关《编译原理PPT课件第一章编译引论.ppt(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、12一一 什么是编译程序?什么是编译程序?计算机经过几十年的发展,计算机经过几十年的发展,在程序设计语言方面在程序设计语言方面,已经从已经从低级语言发展到高级语言低级语言发展到高级语言;然而然而,计算机内部的本质只能识别计算机内部的本质只能识别 0,1 代码序列(机器语言)代码序列(机器语言),而对高级语言甚至符号语言仍然一窍而对高级语言甚至符号语言仍然一窍不通。不通。因此用高级语言编写的程序因此用高级语言编写的程序,必须先翻译为机器语言,必须先翻译为机器语言,才能被计算机理解执行。第一个完成这种翻译任务的编译程序才能被计算机理解执行。第一个完成这种翻译任务的编译程序为为FORTRAN编译程序
2、编译程序,是上世纪五十年代设计的是上世纪五十年代设计的.第一章第一章 引论引论第一节、编译程序概述第一节、编译程序概述3定义定义:设源语言为设源语言为L1,目标语言为目标语言为L2,翻译程序翻译程序是一个程序是一个程序,它能将它能将L1转换为逻辑上等价的转换为逻辑上等价的L2。若若 L1 为高级语言,为高级语言,L2 为低级语言或机器语言,称这种为低级语言或机器语言,称这种 翻译程序为翻译程序为编译程序编译程序。若若 L1 为低级语言,为低级语言,L2 为机器语言,称这种翻译程序为为机器语言,称这种翻译程序为 汇编程序。汇编程序。解释程序解释程序是指逐条翻译是指逐条翻译 L1的语句,并立即执行
3、翻译出的的语句,并立即执行翻译出的 目标代码序列。目标代码序列。编译原理编译原理 就是介绍编译程序的一般规律及设计方法的就是介绍编译程序的一般规律及设计方法的一门课程。一门课程。高级语言程序高级语言程序机器语言程序机器语言程序翻译为翻译为4二二 编译过程概述编译过程概述 编译程序从接受源程序到输出目标代码的整个过程,可编译程序从接受源程序到输出目标代码的整个过程,可逻辑的分为逻辑的分为 5 5 个阶段,个阶段,词词 法法 分分 析析语语 法法 分分 析析 中间代码生成中间代码生成 代代 码码 优优 化化 目标代码生成目标代码生成 1)词法分析:把源程序作为字符串进行扫描词法分析:把源程序作为字
4、符串进行扫描,根据单词词,根据单词词法,识别出所有单词,过滤无用符,并检查是否为合法的单法,识别出所有单词,过滤无用符,并检查是否为合法的单词。词。单词一般分为如下几种:单词一般分为如下几种:基本字,标识符,常数,算符,界符基本字,标识符,常数,算符,界符 5例如:例如:if n=1 then f:=1 else f:=n*f(n);该程序经过语法分析该程序经过语法分析,得到如下单词序列得到如下单词序列:ifn=1thenf:=1 elsef:=n*f(n);过滤掉回车换行过滤掉回车换行,空格空格,注释等注释等62)语法分析语法分析:根据语言的语法规则根据语言的语法规则,从单词符号串中识别出从
5、单词符号串中识别出各种语法单位各种语法单位,进行句子分析进行句子分析,并检查整个输入字串是否为合并检查整个输入字串是否为合法的程序法的程序;重要的语法单位有重要的语法单位有:程序程序,子程序子程序,语句语句,短语短语,表达式等表达式等例如例如:program add;var a,b:real;begin read(a,b);write(a+b);end.7程序程序首部首部说明段说明段执行部执行部program程序名及参数程序名及参数var说明语句说明语句add变量名表变量名表变量类型变量类型a,brealbegin多语句多语句endread(a,b)write(a+b)83)中间代码生成中间代
6、码生成:根据语义规则根据语义规则,把各种语法单位翻译成中间把各种语法单位翻译成中间代码序列代码序列.中间代码有三种中间代码有三种:四元式四元式,三元式三元式,逆波兰式逆波兰式.中间代码的特点中间代码的特点:结构简单结构简单,语义明确语义明确,易于理解及优化易于理解及优化.四元式可表示为四元式可表示为:(操作符操作符,操作数操作数1,操作数操作数2,结果结果)例如例如:语句语句 Z:=(x+0.4)*Y/W;翻译后得到右面翻译后得到右面 的四元式序列的四元式序列:四元式序列四元式序列(+,x,0.4,T1)(*,T1,Y,T2)(/,T2,w,T3)(:=,T3,Z)从示例可看出从示例可看出:每
7、条四元式只进行一次最基本的操作每条四元式只进行一次最基本的操作.94)代码优化:对产生的中间代码序列进行加工变换,使变换代码优化:对产生的中间代码序列进行加工变换,使变换后的代码更为高效后的代码更为高效(时间,空间上)。(时间,空间上)。优化主要有:优化主要有:循环优化,公共表达式提取,强度削弱等。循环优化,公共表达式提取,强度削弱等。5)目标代码生成:把中间代码程序翻译为机器指令或汇编指令目标代码生成:把中间代码程序翻译为机器指令或汇编指令程序。程序。这一部分的处理,与计算机硬件及操作系统密切相关。这一部分的处理,与计算机硬件及操作系统密切相关。如寄存器数目,机器指令功能及指令条数;操作系统
8、的如寄存器数目,机器指令功能及指令条数;操作系统的 BIOS,内存管理,文件管理等。内存管理,文件管理等。三三 编译程序的结构编译程序的结构 编译程序可以划分为如下几个基本模块:编译程序可以划分为如下几个基本模块:10词法分析器词法分析器语法分析器语法分析器中间代码生成中间代码生成中间代码优化中间代码优化目标代码生成目标代码生成源程序源程序单词符号单词符号语法单位语法单位四元式四元式四元式四元式目标程序目标程序 表表格格管管理理 错错误误处处理理编译程序总框编译程序总框11表格管理表格管理:对各种表格进行管理对各种表格进行管理,包括表格的构造、查找、修改、包括表格的构造、查找、修改、删除、插入
9、删除、插入 等;等;编译程序中,表格的种类较多,最主要的有如下几种:编译程序中,表格的种类较多,最主要的有如下几种:符号表,常量表,标号表,子程序名表,四元式表等符号表,常量表,标号表,子程序名表,四元式表等。表格由若干结构相同的表格项组成,表格项由二元式表示:表格由若干结构相同的表格项组成,表格项由二元式表示:项名项名 信息信息表格项表格项表格表格项名项名 1 信息信息项名项名 2 信息信息项名项名 n 信息信息12四四 设计编译程序设计编译程序 编译程序的设计方式可以分为两类:编译程序的设计方式可以分为两类:方式方式人工设计人工设计自动生成自动生成低级语言低级语言高级语言高级语言自动生成扫
10、描器自动生成扫描器自动生成分析器自动生成分析器自动生成编译程序自动生成编译程序13第二节、高级语言概述第二节、高级语言概述一一 什么是程序设计语言什么是程序设计语言 程序设计语言是一符号系统,由程序设计语言是一符号系统,由语法语法和和语义语义两方面所定义。两方面所定义。语法:语法:是一组规则,规定了语言的形式结构,包括单词结构,是一组规则,规定了语言的形式结构,包括单词结构,句子结构,程序结构等。句子结构,程序结构等。语法语法=词法规则词法规则+句法规则句法规则 词法规则词法规则:规定了形成单词的规则;如常数,标识符,:规定了形成单词的规则;如常数,标识符,基本字,算符等。基本字,算符等。句法
11、规则句法规则:规定了由单词构造更大语法单位的规则;:规定了由单词构造更大语法单位的规则;如表达式,短语,语句,程序等。如表达式,短语,语句,程序等。14语义:语义:也是一组规则,规定了各语法单位的确切含义。也是一组规则,规定了各语法单位的确切含义。例如:例如:A=B,可解释为:可解释为:A赋值为赋值为B;(;(C语言)语言)也可以解释为也可以解释为:A等于等于B (P语言)语言)这完全由语义规则所确定。这完全由语义规则所确定。二二 数据类型数据类型 各种语言都提供了一些最基本的数据类型各种语言都提供了一些最基本的数据类型,称为初等数据称为初等数据类型,这些数据类型的特征是数据的单一性;还提供了
12、由初等类型,这些数据类型的特征是数据的单一性;还提供了由初等数据类型构造复杂结构类型的手段。数据类型构造复杂结构类型的手段。1)初等数据类型)初等数据类型数值类型:(整数,实数)可进行算术运算和比较运算;数值类型:(整数,实数)可进行算术运算和比较运算;逻辑类型:可进行逻辑运算;逻辑类型:可进行逻辑运算;字符类型:可进行比较远算及字符串操作;字符类型:可进行比较远算及字符串操作;指针类型:指向另一变量的地址。指针类型:指向另一变量的地址。152)结构类型)结构类型-数组数组 数组是由同一类型数据所组成的多维结构,数组元素是多数组是由同一类型数据所组成的多维结构,数组元素是多维空间的一个点,代表
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 PPT 课件 第一章 引论
限制150内