




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本章内容 一 什么叫编译程序二 编译过程概述三 编译程序的结构四 编译程序生成五 课程学习指导 1引论 一 什么叫编译程序 编译程序是系统软件中资格最老的成员之一 编译理论和技术近30年来发展十分迅速 成熟 1 编译程序历史 现已形成一套较为系统化的编译理论和技术 一 什么叫编译程序 2 编译理论与其他课程关系 编译理论 自动机和形式语言 离散数学 数据结构 操作系统 素材 基础 控制对象 一 什么叫编译程序 编译理论的许多想法和技术可用于一般软件的设计 3 编译理论的应用 一 什么叫编译程序 翻译程序 Translator 是一种程序 其输入是某种语言的一系列语句 而其输出则是另一种语言的一系列语句 4 翻译程序 源语言程序 目标语言程序 Translator 输入 输出 一 什么叫编译程序 编译程序 Compiler 是一种程序 它把用高级语言写的源程序作为数据接收 经过翻译转换 产生面向机器的代码作为输出 这当中代码还可能要由汇编程序或装配程序作进一步加工 得出目标程序 交给计算机执行 5 编译程序 高级语言源程序 面向机器代码 Compiler 目标程序代码 汇编装配 一 什么叫编译程序 6 翻译与编译比较 源语言程序 目标语言程序 转变为 高级语言源程序 面向机器代码 编译为 这种变换程序称为翻译程序 编译程序有一些限制 针对输入 输出 这种变换程序称为编译程序 二 编译过程概述 1 编译过程的组成 编译过程 词法分析 语法分析 中间代码生成 代码优化 目标代码生成 源程序 单词符号 中间代码 语法单位 目标代码 中间代码 优化后 源程序 目标代码 二 编译过程概述 2 词法分析 任务 所做转换 依据 构词规则 主要理论基础 自动机理论 源程序字符串 单词符号 输入源程序 扫描 分解字符串 识别出一个个单词 定义符 标识符 运算符 界符 常数 二 编译过程概述 2 词法分析 示例 FORK 1TO100M I 10 KN J 10 KNEXTK TO NEXT FOR K N M I J K K K 100 1 10 10 定义符 标识符 分界符 运算符 常数 二 编译过程概述 3 语法分析 任务 所做转换 依据 语法规则 主要理论基础 上下文无关文法 单词符号 语法单位 语法范畴 在词法分析基础上 将单词符号串转化为语法单位 语法范畴 短语 子句 句子 程序段 程序 并确定整个输入串是否构成语法上正确的程序 二 编译过程概述 3 语法分析 示例 TO NEXT FOR K N M I J K K K 100 1 10 10 变量 常数及其运算结果均是表达式 表达式 表达式 表达式 表达式 表达式 表达式 赋值句的形式为 变量 表达式 赋值句 赋值句 多个赋值句可构成语句块 语句块 表达式可作为循环的初值和终值 初值 终值 简单数值变量可作为循环的控制变量 控制变量 控制变量 此时可以看出上述结果符合 循环语句的语法定义 故语法分析成功完成 二 编译过程概述 4 中间代码生成 任务 所做转换 依据 语义规则 主要理论基础 属性文法 语法范畴 中间代码 对语法分析所识别出的各类语法范畴 分析其含义 并进行初步翻译 产生中间代码 二 编译过程概述 4 中间代码生成 示例 TO NEXT FOR K N M I J K K K 100 1 10 10 1 1 K 2 j 100 K 3 10 K T1 8 j 2 7 K 1 K 4 I T1 M 9 9 5 10 K T2 6 J T2 N T1 T2 1 K 1 2 if100 Kgoto 9 3 T1 10 K 8 goto 2 7 K K 1 4 M I T1 9 5 T2 10 K 6 N J T2 循环语句 出口语句 循环块 STEP1 生成四元式 将四元式重写为另一种形式的中间代码 1 1 K 2 j 100 K 9 3 10 K T1 8 j 2 7 K 1 K 4 I T1 M 9 5 10 K T2 6 J T2 N 循环语句和出口语句彼此相连地被定义 包括循环语句开始到有同一控制变量的第一个出口语句的那些语句的自然序列称为一循环块 块嵌套不可交叉 嵌套块控制变量不可同名 不正确 正确嵌套 缺省的STEP STEP1 二 编译过程概述 5 代码优化 任务 所做转换 依据 程序等价变换规则 主要理论基础 数据流方程 中间代码 中间代码 优化后 对于代码 主要是中间代码 进行加工变换 以期能够产生更为高效 省时间和空间 的目标代码 二 编译过程概述 5 代码优化 示例 1 K 1 2 if100 Kgoto 9 3 T1 10 K 8 goto 2 7 K K 1 4 M I T1 9 5 T2 10 K 6 N J T2 3 K 1 4 if100 Kgoto 9 8 goto 4 7 K K 1 9 3 T1 10 K 4 M I T1 1 M I 5 M M 10 5 T2 10 K 6 N J T2 2 N J 6 N N 10 1 K 1 2 if100 Kgoto 9 8 goto 2 7 K K 1 9 二 编译过程概述 6 目标代码生成 任务 所做转换 依据 硬件体系结构 指令系统 中间代码 目标代码 将中间代码变换成特定机器上的低级语言代码 目标代码形式 绝对指令 可重定位指令 汇编指令 二 编译过程概述 6 目标代码生成 LDR1 I L2 STR1 M LDR2 J STR2 N LDR0 1 L1 CMP100 R0 J L2 ADDR1 10 ADDR2 10 ADDR0 1 JL1 示例 8 goto 4 7 K K 1 1 M I 9 6 N N 10 3 K 1 2 N J 5 M M 10 4 if100 Kgoto 9 9 8 goto 4 7 K K 1 1 M I 6 N N 10 3 K 1 2 N J 4 if100 Kgoto 9 5 M M 10 三 编译程序的结构 1 编译程序总框 表格管理 词法分析 语法分析 中间代码生成 代码优化 目标代码生成 源程序 单词符号 中间代码 语法单位 目标代码 中间代码 出错处理 三 编译程序的结构 2 表格与表格管理 编译各阶段均须维持表格并进行表格管理 建表的技术支持是数据结构 表格的分类 结构 处理方法决定于语言及机器 还有优化措施 三 编译程序的结构 2 表格与表格管理 编译程序涉及的表格有 符号名表 常量名 变量名 数组名 过程名 性质 引用 定义 常数表 标号表 入口名表 过程引用表 各种类型常数的值 标号的定义和引用情况 过程的入口名和入口位置 外部过程的名字 引用位置 循环表 等价名表 公用链表 格式表 中间代码表 三 编译程序的结构 3 出错处理 一个好的编译程序应该 全最大限度发现错误 准准确指出错误的性质和发生地点 局部化将错误的影响限制在尽可能小的范围内 若能自动校正错误则更好 但其代价非常高 三 编译程序的结构 3 出错处理 源程序中的错误通常分为 语法错误不符合语法 或词法 规则的错误 语义错误不符合语义规则的错误 单词拼写错误 括号不匹配 说明错误 作用域错误 类型不匹配 三 编译程序的结构 4 遍 遍是对源程序或源程序的中间结果从头到尾扫描一次 并作有关的加工处理 生成新的中间结果或目标程序 词法分析 语法分析 中间代码生成 代码优化 目标代码生成 一遍语法分析器处于核心地位 一遍局部优化 一遍 一遍全局优化 三 编译程序的结构 5 编译前端与后端 词法分析 语法分析 中间代码生成 代码优化 目标代码生成 编译前端主要由与源语言有关但与目标机无关的那些部分组成 编译后端包括编译程序中与目标机有关的那些部分 四 编译程序生成 以往编译程序的构造大多采用机器语言或汇编语言 现在编译程序的构造越来越多采用高级语言 1 编译程序的构造工具 有时为了充分发挥效率或满足不同需求 仍然采用机器语言或汇编语言构造编译程序 或其核心部分 四 编译程序生成 2 T型图 S表示源语言 T表示目标语言 I表示编译程序的实现语言 四 编译程序生成 3 用高级语言L1构造编译程序 已有用A机器代码实现的高级语言L1的编译程序 可用高级语言L1编写另一个高级语言L2的编译程序 将写好的语言L2的编译程序用L1的编译程序编译后就可得到用A机器代码实现的L2编译程序 四 编译程序生成 4 编译程序的移植 已有A机器上的高级语言L编译程序 1 用L编写能在B机器上运行的L的编译程序 2 将 2 用 1 编译 得到A机器上运行的产生B代码的L的编译程序 3 再将 2 用 3 编译 即可得到B机器上运行的产生B代码的L的编译程序 4 至此 将A机器上的L的编译程序 1 移植为B机器上的L的编译程序 4 四 编译程序生成 5 自编译方式 先对语言的核心部分构造一个小小的编译程序 可用低级语言实现 再以它为工具构造能编译更多语言成分的较大编译程序 如此不断扩展 最后形成整个编译程序 滚雪球 四 编译程序生成 6 构造工具 构造编译程序的工具称为编译程序 编译程序 编译程序产生器或翻译程序书写系统 自动产生扫描器LEXFLEX 自动产生语法分析器YACCBISON 五 课程学习指导 原理课程 基础性 科学性 普适性 优点 揭示科学本质 长期受用的知识 缺点 抽象 连贯性差 学时矛盾大 1 课程性质 五 课程学习指导 2 学习目的 加深理解计算概念 提高素质 为主流语言写编译器 写专业编译器机会很多 为应用提供思路 技术 五 课程学习指导 3 如何学好 学好 四大原理 课程 是计算机专业学生必要条件 上课 准时到 认真听 注意记 课后 认真完成作业 实验 方法 编译是个大系统 要反复琢磨进国家级精品课程网站 获取更多信息 程序设计语言编译原理 第二版 陈火旺等国防工业出版社第0章 编译原理
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024园艺师考试关键考点试题及答案
- 2024年花艺师项目管理试题及答案
- 2024年农艺师考试方法论分析试题及答案
- 各大学辅导员招聘考试趋势变化及试题及答案
- 蜻蜓眼考试题目及答案
- 小黑虎阅读测试题及答案
- 护士面试题型总结及答案
- 科技助力下的园艺新形态试题及答案
- 农业职业经理人的实践与研究挑战试题及答案
- 2024年高校辅导员对外沟通能力测评试题及答案
- 2025年河南轻工职业学院单招职业技能测试题库附答案
- 世界给予我的 课件-2024-2025学年高二下学期开学第一课主题班会
- 个体诊所申请书范文
- 《高速铁路系统》课件
- LNG加气站施工方案
- 互动式医学课堂教学设计
- 某大型三甲医院智能化设计方案
- 《新生儿沐浴和抚触》课件
- 2024年社会工作者之初级社会综合能力考试题库含答案
- 短视频运营(初级)营销师-巨量认证考试题(附答案)
- 事故调查规程
评论
0/150
提交评论