Part1编译原理课程概述.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Part1编译原理课程概述

编译原理课程概述 课程教材及教学内容介绍 教材名称:编译原理(Compilers Principles, Techniques, and Tools) 主编:Alfred V.Aho, Ravi Sethi, Jeffrey D.Ullman,李建中,姜守旭译 出版社:机械工业出版社 出版时间:2003年8月 主要参考资料: 《编译原理》,清华大学出版社,吕映芝、张素琴、蒋维杜编著 《程序设计语言编译原理(第3版)》,国防工业出版社,陈火旺等编著 《编译器工程》——《Design a Compiler》,机械工业出版社,Keith D.Cooper、Linda Torczon著;冯速译 教学内容及其相应的课时数: 编译原理概论——1.5 高级语言和文法——2.5 词法分析——6 自顶向下语法分析方法——4 自底向上语法分析法——8 语法制导翻译——6 中间代码生成——4 类型检查——4 符号表——2 运行时环境——4 代码优化——3 并行编译基础——3 从讲授的课时来看,其中第4、5部分讲述的语法分析方法是本课程的重点。其余的各章重点我们会在各章的讲述中依次提到。 Part1编译原理概论 编译器构造法的研究目的 什么是编译程序 我们用一种T形图来表示源语言S,目标语言T和编译程序实现语言之间的关系,如图: 思考,如果A机器上已有一个用A机器代码实现的某高级语言L1的编译程序,则我们可以用L1语言编写另一种高级语言L2的编译程序,把写好的L2编译程序经过L1编译程序编译后就可以得到A及其代码实现的L2编译程序。 思考,如何使用“移植”的方法利用A机器上已有的高级语言L编写一个能在B机器上运行的高级语言L的编译程序。 好的编译器是计算机科学的缩影 包含大量的技术:贪婪算法(寄存器分配)、启发式搜索技术(列表调度)、图形算法(死码消除)、动态规划(指令筛选)、有穷自动机和下推自动机(扫描和语法分析)、不动点算法(数据流分析) 处理复杂的问题:动态分配、同步、命名、局部化、存储器分层管理、管道调度 提供完整的解决方案:有机的结合算法、软件体系结构和软件工程的各种理论,对棘手问题给出综合性的解答方案。 一个语言处理系统(编译系统)举例 预处理器—产生编译器的输入 宏处理:宏的定义和引用 文件包含:把头文件包含到程序的正文中。 “理性”预处理器:把现代控制流和数据结构化机制添加到比较老式的语言中。 语言扩充:通过大量的内部宏定义来增强语言的能力 汇编器—对编译器的输出进行后期加工 装配连接编辑器—完成程序的装入和连接编辑两项功能 装入过程包括读入可重定位及其代码,修改可重定位地址,并将修改后的指令和数据放到内存中适当的位置 连接编辑器允许我们将多个可重定位代码的文件组成一个程序。 编译器的基本原则 编译器是工程对象,是具有独特目标的大型软件系统,两个设计原则必须遵守 不违背原义:编译器必须保持被编译程序的含义不变、这一原则是编译器设计者与编译器用户之间的契约的核心 实用性原则:编译器必须用某种明确的方式改进输入程序、例如代码优化等对输入程序的改进 编译器应有的性质 速度(Speed) 空间(Space) 反馈(Feedback) 调试(Debugging) 编译时效率(Compile-Time Efficiency) 编译器的应用模型 分析-综合模型 分析部分将源程序切分成一些基本块并形成源程序的中间表示 词法分析 语法分析 语义分析 综合部分把源程序的中间表示转化为所需的目标程序,需要一些特定的技术 符号表管理 错误检测与报告 中间代码生成 代码优化 代码生成 编译器的应用模型 内容提要 编译器构造法的研究目的 编译器的结构 编译的基本原则 编译器应有的性质 编译器的应用模型 编译过程综述 概括和展望 词法分析 词法分析也叫线性分析和扫描。 从左到右的读构成源程序的字符流,分组为多个记号。 语法分析 词法分析也叫层次分析,把源程序的记号进一步分组,产生被编译器用于生成代码的语法短语。 程序的语法结构常常需要递归 上下文无关文法是递归规则的一种形式化,可以指导语法分析 由于词法分析不要求递归,因此我们通常不明确的界定词法分析和语法分析的界限。也就是说,我们将词法分析程序当成语法分析程序调用的一个子程序。 语法分析(续) 语义分析 语义分析阶段检测程序的语义错误,收集代码生成阶段要用到的类型信息 利用语法分析阶段确定的层次结构来识别表达式和语句中的操作符和操作数 语义分析的一个重要组成部分是类型检查 语义分析只是一些简单的,可以用一定规则描述的语义信息,而无法判断程序表达的含义是否符合要求的 语义分析(续) 内容提要 编译器构造法的研究目的 编译器的结构 编译的基本原则 编译器应有的性质 编译器的应用模型 编译过程综述 概括和展望 I S

文档评论(0)

skvdnd51 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档