- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译程序 构造理和实现技术
编译程序构造原理和实现技术 授课教师:吕江花 第一章 编译程序概述 主要内容: 几个基本概念 编译器的工作过程概述 编译器各个阶段的功能描述 编译程序的实现途径 基本概念 机器语言:能够被计算机的硬件系统直 接执行的指令程序。 汇编语言:将硬件指令用一些助记符表 示。如ADD表示加法操作, SUB表示减法操作等等 高级语言:使用便于理解的自然语言。 语言处理程序 解释程序(器):接受所输入的用程序 语言(源语言)编写的程序(源程 序),然后直接解释执行源程序。 相当于源程序的抽象执行机,是语 言的实现系统。 高级语言源程序 ? ? 计算结果 数据 ? 语言处理程序 翻译程序(器):接受某种语言的源语 言程序后,将它改造成另一种逻辑 上等价的目标语言程序。 翻译程序 汇编程序:源语言为汇编语言,目标语言为机器语言的翻译程序。 编译程序(器):源语言为高级语言,目标语言是低级语言(汇编或机器语言)的翻译程序。 解释器和编译器特点 概念上的不同 基于解释执行的程序可以动态修改自身, 而基于编译执行的程序则需要动态编译技 术,难度较大。 基于解释方式有利于人机交互。 执行速度。解释器执行速度要慢。 空间开销。 解释器需要保存的信息较多, 空间开销大 利用解释器可自动生成编译器 二者实现技术相似。 词法分析(Lexical Analysis) 依循语言的词法规则,扫描源程序的字符串,识别每一个单词,并将其表示成所谓的机内表示TOKEN形式。 语法分析(Syntax Analysis) 依据语言的语法规则,将单词的Token序 列分解成各类语法短语,确定整个输入 串是否构成一个语法上正确的程序。 语义分析(Semantic Analysis) 审查源程序有无语义错误,为代码生成 阶段收集类型信息。 中间代码生成 (Intermediate Code Generate) 将源程序转换成一种称为中间代码的内 部表示形式。中间代码是一种简单的含义 明确的记号系统。 中间代码优化(Code Optimization) 变换或改造中间代码,生成的目标代码 更为高效,即节省时间和空间。 目标代码生成(Code Generation) 中间代码变换为特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。 表格管理(Symbol-Table Management) 为了合理的管理表格(构造、查找、更新),设立一些专门子程序称为表格管理程序负责管理表格。 错误处理(Error Detection and Reporting) 各个阶段还存在着错误处理模块,当有错误出现时,由相应的错误处理模块给出解决方案,使得编译器能够继续进行下去。 编译程序的实现途径 预处理方法 用于语言的扩充。设已有L语言的编译器,其扩充语言L1的编译器可通过语言转换程序将L1程序转换为L程序,利用L的编译器,从而实现L1的编译器。 移植法 同一语言的编译器在不同机器间的移植。方法: a 目标代码的转换 b 修改中间代码到目标代码的转换 自展法 自我扩展,自己编写自己的编译器。 工具法 利用编译阶段各个部分的自动生成工具自动生成。 理论法 利用形式化描述理论,实现自动化。 编译程序的作用 理解语言,编写出高效的代码 灵活设计实现自定义语言 提高软件设计技术 应用于涉及元级操作的实现 其它领域 第二章 一个微小语言Micro的编译器 * * 解释程序 (器) 高级语言程序 (源程序) 低级语言程序 (目标程序) 编译程序 (器) 需预处理的源程序 预处理器 源程序 编译程序 目标汇编程序 汇编程序 可重定位的目标代码 连接/装配程序 绝对目标代码 高级语言程序到可执行代码的转换过程 编译器的功能结构图 表 处 理 错 误 处 理 目 标 代 码 生 成 中 间 代 码 优 化 中 间 代 码 生 成 语 义 分 析 语 法 分 析 词 法 分 析 目 标 程 序 源 程 序 *
文档评论(0)