程序设计语言与编译原理-第五章编译概述课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《程序设计语言与编译原理-第五章编译概述课件.ppt》由用户(ziliao2023)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计语言 编译 原理 第五 概述 课件
- 资源描述:
-
1、程序设计语言与编译 主要内容主要内容1.1.编译的一些基本概念编译的一些基本概念2.2.编译步骤编译步骤1 1程序设计语言与编译 第一节第一节 不同语言的翻译不同语言的翻译:将一种语言编写的程序转换成完全等效的另一种语言编写的程序的过程称为(translate);在计算机中,翻译由一个程序来实现,称为(translator);源程序源程序翻译程序翻译程序目标程序目标程序一一.基本概念基本概念编译程序编译程序:高级语言低级语言汇编程序汇编程序:汇编语言机器语言2 2程序设计语言与编译 :编写编译程序的语言称为;源语言、目标语言、宿主语言通常是不同的语言;:运行翻译程序的机器编译程序能生成可供其宿
2、主机执行的机器代码编译程序是用源语言写的:编译程序生成的不是宿主机的机器代码,而是别的机器代码3 3程序设计语言与编译 二二.两种运行方式两种运行方式源程序源程序编译程序编译程序目标程序目标程序初始数据初始数据目标程序目标程序运行库运行库结果结果 源程序源程序 目标程序目标程序 计算结果计算结果 汇编语言程序汇编语言程序 目标程序目标程序编译编译编译编译运行运行汇编程序汇编程序初始数据初始数据4 4程序设计语言与编译 :不将源程序翻译成目标程序,而是一边分析,一边执行,这种翻译方法称为 实现解释的程序,称为。1.特别适合于动态语言和交互式环境,便于人机对话2.解释器边解释边执行,重复执行的程序
3、需要重复翻译,比编译执行花费更多时间,执行效率低;源程序源程序解释程序解释程序计算结果计算结果初始数据初始数据5 5程序设计语言与编译1.:输入字符串,根据词法规词法规则则识别出单词符号。2.:根据语法规则,将单词符号构成各类语法单位,并进行语法检查。3.:根据语义规则,进行初步编译。第二节第二节 编译步骤编译步骤6 6程序设计语言与编译4.:对中间代码进行等价变换,以使代码更有效。5.:生成机器语言程序或汇编语言程序。说明:说明:(1 1)实用的编译程序不一定总是分成)实用的编译程序不一定总是分成5 5个阶段个阶段(2 2)目标程序不一定能立即执行,可能还要经过连接、装入等阶段)目标程序不一
4、定能立即执行,可能还要经过连接、装入等阶段(3 3)编译的各阶段均需要和符号表管理程序、出错处理程序打交道)编译的各阶段均需要和符号表管理程序、出错处理程序打交道7 7程序设计语言与编译8 8自然语言翻译过程:自然语言翻译过程:编译程序工作过程:编译程序工作过程:识别单词识别单词分析句法分析句法初步翻译初步翻译译文润饰译文润饰正式翻译正式翻译词法分析词法分析语法分析语法分析语义分析与中间代码产生语义分析与中间代码产生代码优化代码优化目标代码生成目标代码生成程序设计语言与编译9 91.词法分析词法分析l任务:输入源程序,对字符串扫描分解、识别出任务:输入源程序,对字符串扫描分解、识别出单词单词(
5、或单词符号、或简称符号或单词符号、或简称符号)。l单词是高级语言中有实在意义的最小语法单位,单词是高级语言中有实在意义的最小语法单位,一般分为一般分为5类:类:保留字保留字(begin、end、if、for、while等)、等)、标识符标识符、常数常数、运算符运算符和和分界符分界符(标(标点符号、括号、注释符号等点符号、括号、注释符号等 依循原则:语言的词法规则依循原则:语言的词法规则(或构词规则或构词规则)描述工具:正规式和有限自动机描述工具:正规式和有限自动机程序设计语言与编译1010程序设计语言与编译11112.语法分析语法分析l任务:在词法分析的基础上,根据语言的任务:在词法分析的基础
6、上,根据语言的语法语法规则规则,从单词符号串中识别出各类语法单元,从单词符号串中识别出各类语法单元(如:如:表达式、语句、程序段、程序等)并进行语法表达式、语句、程序段、程序等)并进行语法检查,即检查各种语法单位在语法结构上的正检查,即检查各种语法单位在语法结构上的正确性。通过语法分析,确定整个输入串是否构确性。通过语法分析,确定整个输入串是否构成语法上正确的成语法上正确的“程序程序”。依循原则:语言的语法规则依循原则:语言的语法规则描述方法:上下文无关文法描述方法:上下文无关文法程序设计语言与编译1212词法分析词法分析 线性分析线性分析语法分析语法分析 层次结构分析层次结构分析u识别标识符
7、,因为标识符的结构是字母打头的字母和数字串,这只要顺序扫描输入流,遇到既不是字母又不是数字字符时,将前面所发现的所有字母和数字组合在一起而构成单词标识符 u不能用于识别递归定义的语法成分,比如就无法仅用线性扫描去匹配表达式中的括号 程序设计语言与编译1313词法分析词法分析 线性分析线性分析语法分析语法分析 层次结构分析层次结构分析u把源程序的单词序列依照语法结构按层次分组,形成各类语法单元,组成语法短语(表示成语法树)uid1=id2+id3*10Id1 id2 id3是变量单词序列id2+id3*10是表达式id1=id2+id3*10是 赋值语句 程序设计语言与编译1414u语法分析所依
8、据的是语言的语法规则,语语法分析所依据的是语言的语法规则,语言的语法规则通常是由递归规则来定义言的语法规则通常是由递归规则来定义u如表达式和赋值语句可由下述递归规则来如表达式和赋值语句可由下述递归规则来定义:定义:(1)任何标识符是表达式;任何标识符是表达式;(2)任何常数是表达式;任何常数是表达式;(3)若表达式若表达式1和表达式和表达式2都是表达式,则表达式都是表达式,则表达式1+表达式表达式2,表达式,表达式1*表达式表达式2都是表达式;都是表达式;(4)赋值语句就可以用规则:标识符赋值语句就可以用规则:标识符=表达式表达式;来定义。;来定义。程序设计语言与编译1515程序设计语言与编译
9、16163.语义分析与中间代码产生语义分析与中间代码产生任务任务:对语法分析所识别的各类语法范畴,:对语法分析所识别的各类语法范畴,分析其含义分析其含义,并进行,并进行初步翻译初步翻译(产生中产生中间代码间代码)。静态语义检查:变量是否定义,类型是静态语义检查:变量是否定义,类型是否正确等。否正确等。若语义正确,则进行中间代码的翻译。若语义正确,则进行中间代码的翻译。通常包括两方面工作:通常包括两方面工作:程序设计语言与编译1717依循原则:依循原则:语言的语义规则语言的语义规则描述方法:描述方法:属性文法属性文法中间代码:中间代码:一种含义明确,便于处理的记号系统,一种含义明确,便于处理的记
展开阅读全文