编译原理-王生原(第一章).pptVIP

  1. 1、本文档共64页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理-王生原(第一章)

什么是编译程序 从基本功能来看,编译程序(Compiler) 是一种翻译程序(Translator) 将语言A的程序翻译为语言B的程序 称语言A为源语言 (Source Language) 称语言B为目标语言 (Target Language) source program target program compiler feedback messages 什么是编译程序 编译程序是较为复杂的翻译程序 需要对源程序进行分析(Analysis),识别源 程序的结构信息,理解源程序的语义信息, 反馈出错的语法、语义信息 根据分析结果进行综合(Synthesis),生成 语义上等价于源程序的目标程序 较为简单的翻译程序如: 预处理程序(Preprocessor),一般只基于简 单的模式匹配来实现翻译 什么是编译程序 编译程序通常是从较高级语言的程序翻译 至较低级语言的程序,如 C 代码 汇编代码 a C compiler C++ 代码 汇编代码 a C++ compiler C++ 代码 C代码 another C++ compiler Java 代码 Bytecode代码 a Java compiler 什么是编译程序 经编译程序生成的目标语言程序可以 在支持该目标语言的虚拟机上执行 汇编代码 可执行的目标代码 汇编程序 目标代码 连接程序 库代码 汇编语言虚拟机 C代码 C语言虚拟机 C compiler …… Java虚拟机 Bytecode 代码 字节码解释程序 …… 编译程序的逻辑结构 编译程序的工作逻辑上可分为两个阶段 分析(Analysis)阶段 理解源程序,挖掘源程序的语义 综合(Synthesis)阶段 生成与源程序语义上等价的目标程序 编译程序的逻辑结构 典型编译程序的逻辑过程 词法分析 语法分析 语义分析和中间代码生成 中间代码优化 目标代码优化 目标代码生成 字符流 单词流 语法分析树 中间表示 优化的中间表示 目标代码 优化的目标代码 后端 前端 编译程序的逻辑结构 编译程序的前端和后端 前端(Front End) 实现分析阶段的任务(含中间代码生成和优化) 传统上,前端不涉及目标程序及其虚拟机的任何信息 后端(Back End) 实现综合阶段的任务(目标代码生成和优化) 后端的设计与目标程序及其虚拟机密切相关 编译程序的逻辑结构 典型编译程序的主要逻辑模块 词法分析模块 语法分析模块 语义分析模块 中间代码优化模块 目标代码优化模块 目标代码生成模块 符 号 表 管 理 模 块 中间代码生成模块 出 错 处 理 模 块 词法分析 扫描源程序字符流, 识别出有词法意义 的单词,返回单词 的类别和单词的值, 或词法错误信息 编译程序的逻辑结构 单词类别 单词值 保留字 class 标识符 Main 分隔符 { 保留字 static 保留字 void 标识符 main 分隔符 ( 分隔符 ) 分隔符 { 保留字 Print 分隔符 ( 字符串长量 “hello world” 分隔符 ) 分隔符 ; 分隔符 } 分隔符 } 语法分析 从左至右扫描构成源程序的单词流,返回语法分析结 果(语法分析树,推导或归约过程)或语法错误信息 编译程序的逻辑结构 语义分析 对语法分析后的程序进行语义分析,不符合语义规则 时给出语义错误信息 编译程序的逻辑结构 符号表 收集每个名字的各种属性用于语义分析及后续各阶段 编译程序的逻辑结构 出错处理 检查错误 报告出错信息(error reporting) 排错 恢复编译工作(error recovery) 编译程序的逻辑结构 中间表示形式举例 抽象语法树(Abstract syntax tree,AST) 三地址码(Three-address code,TAC) P-code Bytecode 编译程序的逻辑结构 中间代码生成 等价于源程序的各类中间表示形式,其作用主要是建 立源语言和目标语言之间的桥梁,避开二者之间较大 的语义跨度,利于相关分析和综合过程中各遍的实现 《编译原理》 第一讲 课程概述 编译原理 Principles

文档评论(0)

baoyue + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档