




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、编 译 原 理2011.11课程简介先行课程: (PASCAL)、离散数学、 汇编语言、数据结构编译原理课程应用领域编译器的设计一般的软件设计例如:文本编辑器、信息检索系统、模式识别器排版、绘图系统程序验证器21、程序设计语言编译程序 陈火旺等 国防工业出版社(第三版)2、编译原理 吕映芝 清华大学出版社 3、编译原理及实践,Kenneth C. Louden, 冯博琴译,机械工业出版社主要参考资料3系统地了解程序设计语言编译程序的构造原理及其具体实现的方法;培养利用计算机语言处理技术进行系统分析和软件设计的能力。 为什么要学习编译原理,学习的目的是什么?4课程考核方法主要采用闭卷考试的形式;
2、同时,作业完成情况和上机实践的结果占一定的比例。 考试成绩 = 闭卷考试+ 考勤和作业完成 情况 + 上机5联系方式E-mail: Tel: 作业可通过班长(或课程代表)提交。如有什么建议和问题,课后可E-mail或电话联系。6编译原理第一章 引论第二章 高级语言及其语法描述第三章 词法分析第四章 语法分析自上向下分析第五章 语法分析自下向上分析第六章 属性文法与语法制导翻译第七章 语义分析和中间代码生成第八章 符号表第九章 运行时存储空间组织第十章 优化第十一章 目标代码生成第十二章 并行编译基础7第一章 引论1.1 什么叫编译程序1.2 编译过程概述1.3 编译程序的结构1.4 编译程序与
3、程序设计环境1.5 编译程序的生成8知 识 结 构9过程式语言 Fortran,Pascal,C函数式语言 Lisp逻辑式语言 Prolog对象式语言 C+汇编语言机器语言第一章 引论1.1 什么叫编译程序. 程序设计语言程序设计语言 高级语言低级语言:面向机器的语言10编译程序:是指这样的程序,它能够把某种语言的程序转换成另一种语言的程序,而后者与前者在逻辑上是等价的。如果源语言是诸如FORTRAN、Pascal、C、Ada、Smalltalk或Java这样的“高级语言”,而目标语言如汇编语言之类的“低级语言”这样的翻译程序则称之为编译程序。112.在计算机上如何执行一个高级语言程序?1)把
4、高级语言程序翻译成机器语言程序;2)运行所得的机器语言程序求得计算结果。高级语言源程序的执行通常分两个阶段:计算机只能识别由0和1组成的二进制指令。12源程序(高级语言)编译程序计算机目标程序(机器语言)编译阶段初始数据目标程序计算机运行系统计算结果运行阶段13. 翻译和解释程序(1)翻译和编译程序编译:如果一个翻译程序的源语言是某种高级语言,其目标语言是相对于某一计算机的汇编语言或机器语言,则称这种翻译程序为编译程序(或称为编译器)。翻译:是指在计算机中放置一个能由计算机直接执行的翻译程序,它以某一种程序设计语言(源语言)所编写的程序(源程序)作为翻译或转换的对象,当计算机执行翻译程序时,就
5、将它转换成与之等价的另一种语言(目标语言)的程序(目标程序)。输入输出14(2) 编译和解释程序目标程序源程序编译程序初始数据计算结果源程序解释程序初始数据计算结果15解释程序和编译程序的区别解释程序和编译程序的根本区别:是否生成目标代码16口译解释程序笔译编译程序解释程序和编译程序的区别优点:直观易懂,结构简单, 易于实现人机对话。缺点:效率低。解释程序的优缺点17编译程序的分类诊断型编译程序: 用于帮助程序开发和调试的编译程序。优化型编译程序: 着重于提高目标代码效率的编译程序。交叉型编译程序可变目标型编译程序18编译技术的发展第一个编译程序出现在20世纪50年代早期,主要是将算术公式翻译
6、成机器代码。20世纪60年代起,出现自编译技术。还在不断发展之中,目前已经形成一套比较成熟的系统化的理论和方法。191. 编译过程概述翻译外文资料与编译源程序进行类比20 编译程序的工作过程指从输入源程序开始到输出目标程序为止的整个过程。一般可划分为五个阶段:词法分析、语法分析、语义分析和中间代码生成、代码优化、目标代码生成。 1)词法分析 词法分析的任务是输入源程序, 对构成源程序的字符串进行扫描和分解,识别出一个个单词符号, 并将识别出的单词用统一长度的标准形式表示。词法分析过程就是将源程序中的字符串变换成单词串的过程。21 在词法分析阶段工作所依循的是语言的词法规则。描述词法规则的有效工
7、具是正规式和有限自动机。int fun() int i,sum; sum=0; for(i=0;i=100;i+) sum+=i; return sum;关键字:int for return 标识符:i sum 常量:0 100 运算符:= = + += 界限符:; ( ) , 222)语法分析 语法分析的任务:在词法分析的基础上,根据语言的语法规则,把单词符号分解成各类语法单位(语法范畴),如“短语”、“句子”、 “子句”、“程序段”等。 语法规则通常用上下文无关文法描述。23int fun() -函数定义语句 int i,sum; -变量定义语句 sum=0; -赋值语句 for(i=0;
8、i=100;i+) - for语句 sum+=i; -赋值语句 return sum; -返回语句243)语义分析与中间代码的产生 这一阶段通常包括两方面的工作:首先对各种语法范畴进行静态语义检查,如果正确则进行另一方面的工作,即进行中间代码的翻译。 该阶段遵循的是语言的语义规则。 通常使用属性文法描述语义规则。 所谓“中间代码”是一种含义明确,便于处理的记号系统,它通常独立于具体的硬件。 中间代码除四元式外,还有三元式、间接三元式、逆波兰记号、树形表示等。254)优化 优化的任务在于对前段产生的中间代码进行加工,以期在最后阶段产生更为高效(省时间和空间)的代码 优化所依循的原则是程序的等价变
9、换规则。其方法有:公共子表达式的提取、循环优化、删除无用代码等。265)目标代码生成 这一阶段的任务:把中间代码(或经优化处理后)变换成特定机器上的低级语言代码。它有赖于硬件系统结构和机器指令含义。 如何充分利用寄存器、合理选择指令以生成尽可能短且有效的目标代码等都与目标机器硬件结构有关。271)编译程序的功能和组织结构表 处 理词法分析器源程序目标程序错 误 处 理语法分析器语义分析目标代码生成前 端后 端代码优化器中间代码生成1.3 编译程序的结构282)表格与表格管理 用于记录源程序的各种信息以及编译过程中的各种状况,以便后续阶段使用。 与编译前三阶段有关的表格有:符号表、常数表、标号表
10、、分程序入口表、中间代码表等。 注:在编译过程中,随着源程序的不断被改造,编译的各阶段常常需要不同的表格,编译过程的绝大多数时间是花在查表、造表和更新表格的事务上。在大多数的编译程序中,表格专门由表格管理程序来处理。293)出错处理 出错处理程序的任务包括检查错误、报告出错信息、排错、恢复编译工作。错误类型: 语法错误:在词法分析和语法分析阶段检测 出来。 语义错误:一般在语义分析阶段检测。 30编译程序的前端: 与源语言有关,而与目标机无关的编译程序编译程序的后端: 与目标机有关,而与源语言无关的编译程序遍(趟):是对源程序或源程序的中间结果从头到尾扫描一遍,并作有关加工处理,生成新的中间结
11、果或目标程序。宿主机:运行编译程序的计算机称为宿主机。目标机:运行编译程序所产生的目标代码的计算机成为目标机。4)相关概念311.4 编译程序与程序设计环境 编译程序无疑是实现高级语言的一个最重要的工具。但支持程序设计人员进行程序设计开发通常还需要其它一些工具:如编辑程序、连接程序、调试程序等。编译程序与这些程序设计工具一起构成所谓的程序设计环境。 在一个程序设计环境中,编译程序起着中心的作用。连接程序、调试程序、程序分析等工具直接依赖于编译程序所产生的结果,而其它工具的构造也常常要用到编译的原理、方法和技术。32图1.2 Ada程序设计环境 331.5 编译程序的生成1 常用的方法(根据语言来分)1)直接用机器语言编写编译程序2)用汇编语言编写编译程序注:编译程序核心部分常用汇编语言编写3)用高级语言编写编译程序注:这是普遍采用的方法2 常用的方法(根据实现途径来分)1)自编译2)编译工具:LEX(词法分析)与YACC(用于自动产生LALR分析表)3)移植(同种语言的编译程序在不同类型的机器之间移植
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗技术发展对教育政策的影响分析
- 全球教育技术发展现状与未来趋势分析
- 教育技术助力教师应对教学挑战
- 商业教育中的数据隐私保护实践
- 创新引领未来中医教育的变革之路
- 抖音商户直播样品质量抽检制度
- 质量培训课件事例
- 八大城市物流企业物流园区绿色物流解决方案研究报告
- 公交优先政策在2025年城市交通拥堵治理中的优化策略研究报告
- BI-1206-生命科学试剂-MCE
- 卫生监督协管员培训课件
- 销售劳动合同补充协议书(2篇)
- 国开(北京)2024年秋《财务案例分析》形考作业答案
- 厂区食堂二次供水水箱清洗协议
- DB52T 1512-2020 水利水电工程隧洞施工超前地质预报技术规程
- 单位综合评价评语
- 牲畜用饮水槽相关项目实施方案
- 《数学课程标准》义务教育2022年修订版(原版)
- 民政统计信息管理系统培训手册街乡镇
- 超声科晋升主任(副主任)医师超声诊断子宫癌肉瘤病例报告专题分析
- 教学楼加固工程施工组织
评论
0/150
提交评论