- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
孙丽云 F103 liyunsunlight@ *信息学院 孙丽云 第1章 编译概述 * 编译原理 1、该课程共56学时(3.5学分),其中上课48学时,上机8学时; 2、最终成绩包括期末成绩、上机成绩、平时成绩(上课及作业情况)、期中成绩; 3、公共邮箱: 用户名:bianyi2007@126.com 密码:xinxi2008 课时安排与成绩组成 编译原理 吕映芝 清华大学出版社 编译程序设计原理 杜淑敏等 北京大学出版社 编译原理 李赣生等 清华大学出版社 编译程序构造原理 和实现技术 金成植 高等教育出版社 程序设计语言编译程序 陈火旺等 国防工业出版社 编译原理 郑洪 中国铁道出版社 参 考 书 籍 参 考 书 籍 参考书籍 高级语言 低级语言 过程式语言 Fortran,Pascal,C 函数式语言 Lisp 逻辑式语言 Prolog 对象式语言 C++ 汇编语言:将硬件指令用一些助记符表示。 机器语言 程序设 计语言 引言 人们现在一般用高级语言进行编程,但每种计算机只懂得自己独特的指令系统,只能直接执行用机器语言。 1.1翻译程序与编译程序 ■ 自然语言的交流 英语 翻译 汉语 ■ 人与机器的交流 高级程序设计语言 编译 低级语言 机器语言 或汇编语言 接近自然语言,人容易理解和记忆,但机器无法识别 机器能够识别,但依赖于特定的机器且可调试性、可读性、结构性都较差 编译程序是一种翻译程序,它将高级语言所写的源程序翻译成等价的机器语言或者汇编语言的目标程序。 1.1翻译程序与编译程序 操作系统 编译系统 裸机 编译程序是计算机系统中重要的系统软件! 目标程序 源程序 翻译程序 汇编语言或机器语言 高级语言 编译程序 一个编译程序涉及到三个方面的语言,即源语言、目标语言和编译程序的书写语言。 T型图的左上角表示源语言,右上角表示目标语言,底部表示书写语言(实现语言) S T I ■ T型图 1.1翻译程序与编译程序 (补充) C语言程序的编译和执行: 编辑程序 C源程序 目标程序 C编译程序 连接编辑程序 执行可执行程序 可执行程序 C函数库 编辑:建立C 语言程序的源程序。生成源文件,即“ *.c ”(符合语法规则)。 编译:把源程序编译成机器码,生成目标文件,即“ *.obj”(二进制指令),同时进行语法语义的检查,指出所发现的错误,以便程序员进行修改。 连接编辑:把目标文件及系统提供的库函数进行连接,生成可执行文件,即: *.exe ”。 执行:执行文件生成后,就可以运行程序。 P2 图1.3、1.4 ■ 程序的执行阶段 口译 笔译 类比 源程序的 执行结果 源程序的一个执行系统 解释 程序 源程序的 目标代码 工作结果 源程序的一个转换系统 编译 程序 功能 ■ 解释程序与编译程序的区别 不产生目标代码 其他人用时需再翻译 口译 产生目标代码 其他人可继续使用 笔译 翻译结果 自然语言翻译 解释程序与编译程序的主要区别是解释程序在执行过程中不产生目标程序。 解释程序优点:交互方便,节省空间; 缺点:效率低。 解释程序、编译程序、翻译程序 目标代码生成 写出译文 代码优化 修辞加工 语义分析及中间代码生成 初步翻译 语法分析 分析句子 输入扫描源程序,进行词法分析 阅读原文、识别单词 编译源程序 翻译外文资料 翻译外文资料与编译源程序进行类比 1.2 编译过程和编译程序的基本结构 ■ 词法分析 任务:读字符流的源程序、根据词法规则,识别单词。 例:a[index] = 4 + 2 单词符号:a , [ , index , ], = , 4, + , 2 输入:源程序; 输出:单词符号。 1.2 编译过程和编译程序的基本结构 ■ 语法分析 任务:层次分析,把源程序的单词依据源程序的语法规则组成语法短语(表示成分析树或语法树) 输入:单词符号; 输出:语法树。 1.2 编译过程和编译程序的基本结构 ■ 语义分析及中间代码生成 任务:语义审查(静态语义):上下文相关性;类型匹配;类型转换 程序运行前进行语义检查——静态检查 程序运行中进行语义检查——动态检查 ■ 代码优化 任务:对中间代码进行等价变换或改造,以期获得更为高效的的目标代码。 优化主要包括局部优化和循环优化等。 ■ 目标代码生成 任务:将中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。 1.2 编译过程和编译程序的基本结构 ■ 表格管理程序 符号表几乎与编译器的所有阶段交互。 ■ 出错处理程序 编译的每一阶段都可能发现源程序中的错误。 编译器要能生成有意义的出错信息并在每一个错误后恢复
原创力文档


文档评论(0)