程序设计知识_第1页
程序设计知识_第2页
程序设计知识_第3页
程序设计知识_第4页
程序设计知识_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计知识 5 4编译原理 编译程序概述词法分析语法分析中间代码生成中间代码优化目标代码生成编译程序的开发 5 4 1编译程序概述 编译程序 编译器compiler 把高级语言源程序翻译成等价的机器语言程序的翻译程序称为编译程序 源程序 sourceprogram 安装C语言编译程序是在安装C语言编译程序 编译器 或叫编译环境 在这个环境下编写的程序就叫源程序 高级语言源程序的执行 方式一 通过编译程序把源程序翻译成机器语言程序 也叫目标出现 objectprogram 执行目标程序方式二 边翻译边执行的解释执行方式 这种方式下的翻译程序称为解释程序 也叫解释器 interpreter 5 4 2词法分析 词法分析 lexicalanalysis 是整个编译过程中的第一项工作 其任务就是从左至右逐个字符地对源程序进行扫描 进行词法检查并识别出一个个单词 即通过词法分析把字符序列转换成单词序列 并以机内符的形式表示单词是为了便于后续工作的完成 高级语言中的单词分类 基本字 也称关键字 如C语言中的for do if等 标识符 用来表示各种名字的字符串 如变量名 函数名等 常数 各种类型的常数 如整数 实数 字符串等 运算符 各种算术运算符 关系运算符 如 等 界限符 如逗号 分号 等 5 4 3语法分析 语法分析 syntaxanalysis 的任务是确认作为词法分析的单词序列是否为给定语言的一个正确程序 编译中的语义处理主要实现的功能是审查每个语法结构的静态语义 即验证语法结构合法的程序是否真正有意义 有时把这个工作成为静态语义分析或静态审查 自顶向下分析法 定义 也称为面向目标的分析方法 也就是从文法开始符出发试图推导出给定的单词串 分类 确定的 对文法有一定的限制 使得推导过程没有回溯 因而实现方法简单 直观 便于手工构造或自动生成语法分析器 不确定的 即带回溯的分析方法 这种方法实际上是一种穷举的试探方法 效率低 代价高 用途 自顶向下语法分析要解决的问题是如何快速 确定的找到合适的推导过程 用于自顶向下分析的方法有递归子程序法 预测分析法等 自底向上分析法 定义 从定义的单词串开始 试图归约 推导的逆操作 为文法的开始符 如果能归约到文法开始符 则确认单词串是正确的程序 用途 自底向上语法分析要解决的问题是如何快速 确定的找到合适的归约过程 如果存在 用于自底向上分析的方法有简单优先法 算符优先法 LR分析法等 5 4 4中间代码生成 中间代码 middlecode 也称为中间语言 是复杂性介于源语言程序语言和机器语言之间的一种表现形式 常用的中间代码 逆波兰式三元式四元式 逆波兰式 使用逆波兰式形式表达式 可简化表达式的计算 例 对于表达式x1 y2 6 先变换成a b c的形式 a b c的逆波兰式形式为 abc 对于表达式 x1 y2 6 先变换成 a b c的形式 a b c的逆波兰式形式为ab c 5 4 5中间代码优化 中间代码优化 middlecodeoptimization 的任务是对中间代码进行等价变换 使得变换后的代码运行结果与变换前代码运行结果相同 而效率提高 运行速度提高或存储空间减少 常用的优化技术有 删除多余运算代码外提强弱削弱变换循环控制条件合并已知量复写传播删除无用赋值 5 4 6目标代码生成 目标代码生成 objectcodegeneration 是把经过优化后的中间代码作为输入 将其转换成机器的机器语言程序或汇编语言程序作为输出 这样的转换程序称为代码生成器 目标代码的质量衡量主要从占用空间和执行时间来年各个方面综合考虑 生成怎样的目标代码取决于具体的机器结构 指令格式 字长

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论