- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
为什么要学习编译原理 加深对程序语言的内部机制的理解, 更好地运用程序设计语言。 包括软件概念和技术,可用于一般的软件设计。 词法分析器的匹配技术:文本编辑器、信息检索系统 蕴涵着抽象问题和解决问题的方法,对引导科学思维,提高解决问题的能力有重要作用。 介绍编译系统的一般构造原理、基本实现技术 形式语言基础知识、词法分析、语法分析、中间代码生成、代码优化、目标代码生成、符号表的构造和运行时存储空间的组织等。 引入一个小型编译程序的教学模型——“PL/0语言的编译程序”,建立起编译程序实现的整体概念。 理论和实践要求很高 掌握有关编译的经典基础理论 能够运用先进的软件开发技术构造小型编译系统 第一章 编译程序概述 第一章 编译程序概述 低级语言(Low level Language) 机器语言、汇编语言 特点:与特定的机器有关,功效高,但使用复杂、繁琐、费时、易出错 高级语言 特点:不依赖具体机器,移植性好、对用户要求低、易使用、易维护等。 Fortran、Pascal、C 语言等 源程序的编译和运行 编译或汇编阶段 运行阶段 编译和解释程序 “编译-解释执行”系统 源语言(源程序) (Source language)(Source program) 目标语言(目标程序) (Object or Target language)(Object or Target program) 实现语言(Implementation language) 1.2 编译过程和编译程序的结构 翻译和编译工作的比较 编译程序的逻辑结构 1、词法分析 由词法分析器(扫描器)(Scanner)完成 任务:识别单词 依据:构词规则 1 保留字 begin 2 保留字 var 3 标识符 sum 4 逗号 , 5 标识符 first 6 逗号 , …… 2、语法分析 由语法分析器(Syntax Analyzer)完成,又称Parser。 任务:实现“组词成句”,构造分析树,指出语法错误,指导翻译 依据:语法规则 输入:Token序列 输出:语法树(语法成分) 2. 语法分析 语句 表达式 ; 函数调用 标识符 ( 表达式 ) 常数 字符串 2. 语法分析 3. 语义分析 任务:分析语法单位的语义 获取标识符的属性:类型、作用域等 语义检查:运算的合法性、取值范围等 子程序的静态绑定:代码的相对地址 变量的静态绑定:数据的相对地址 语义分析任务举例 表达式 4.中间代码生成 (Intermediate Code) 定义:从语法树生成的更接近目标代码的中间表示形式,由此生成目标代码。 形式:逆波兰表示(Anti- Polish Notation) 、三元式、三元组、四元组(三地址码)、语法树 特点:简单规范、机器无关、易于优化与转换 5. 代码优化 对代码进行等价变换以提高执行效率 ——速度、存储空间 两种优化 与机器无关的优化 与机器有关的优化 与机器无关的优化 局部优化 常数运算在编译期间完成:8+9*4 公共子表达式的提取:基本块内 循环优化 强度削减 代码外提 6. 目标代码生成 将中间代码转换成目标机上的机器指令代码或汇编代码 7、表格管理 管理各种符号表(常数、标号、变量、过程、结构……),查、填(登记、查找)源程序中出现的符号和编译程序生成的符号,为编译的各个阶段提供信息。 辅助语法检查、语义检查 完成静态绑定、管理编译过程 Hash表、链表等各种查、填表技术 8、错误处理 进行各种错误的检查、报告、纠正,以及相应的出错处理 词法:拼写…… 语法:语句结构、表达式结构…… 语义:类型不匹配…… 1.3 编译阶段的组合 1.3 编译阶段的组合 一趟扫描程序与多趟扫描程序 多趟 功能块清晰 占用内存少(重叠使用内存) 1.4 编译技术的发展和应用 第一个编译程序:20世纪50年代早期 很难讲出确切的时间,大量的实验和实现是由不同的小组独立完成的 早期的编译工作:将算术公式翻译成机器代码。 20世纪50年代中期出现了FORTRAN等一批高级语言,相应的一批编译系统开发成功。 20世纪50年代末:编译程序的自动生成工具,编译程序的编译程序 。 以任一语言的词法规则、语法规则和语义解释出发,自动产生该语言的编译程序 自动生成工具 词法分析程序的生成系统LEX,语法分析程序的生成系统YACC等 20世纪60年代起:自展技术 用被编译的语言来书写该语言自身的编译程序 1971年,PASCAL的编译程序用自展技术生成后,其影响就越
文档评论(0)