词法分析器语法分析器语义分析器源程序中间代码生成 - OSCAR Lab.PPT

词法分析器语法分析器语义分析器源程序中间代码生成 - OSCAR Lab.PPT

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

第一章 引 论 词法分析器 语法分析器 语义分析器 源程序 中间代码生成器 代码优化器 代码生成器 目标程序 出错管理器 符号表管理器 第一章 引 论 词法分析器 语法分析器 语义分析器 源程序 中间代码生成器 代码优化器 代码生成器 目标程序 出错管理器 符号表管理器 前端 后端 前端:依赖于源语言,独立于目标机器。 后端:依赖于目标机器,独立于源语言。 第一章 引 论 源程序 目标机器1 目标机器2 目标机器3 目标机器n 编译器 不区分前端和后端的编译器 源程序 目标机器1 目标机器2 目标机器3 目标机器n 编译器前端 编译器后端 区分前端和后端的编译器 第一章 引 论 词法分析器 语法分析器 语义分析器 源程序 中间代码生成器 代码优化器 代码生成器 目标程序 出错管理器 符号表管理器 遍 编译的几个阶段常用一遍(pass)扫描实现,一遍扫描包括读一个输入文件和写一个输出文件。 第一章 引 论 遍 类比:刷墙艺术中的“遍”的概念 网线 水泥 瓷砖 任务:在一面墙上布置网线,并粉刷水泥,然后贴上瓷砖 中国科大 * 1.本课程介绍编译器构造的一般原理和基本实现方法,主要介绍编译器的各个阶段:词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成。反映直至20世纪末的一些重要成果,如有关类型制导的编译思想。 2.本课程在介绍命令式程序设计语言实现技术的同时,强调一些相关的理论知识,如形式语言和自动机理论、语法制导的定义和属性文法、类型论等。它们是计算机专业理论知识的重要一部分,在本书中结合应用来介绍这些知识,有助于学生较快领会和掌握。 3.本课程强调形式化描述技术,并以语法制导定义作为翻译的主要描述工具。 4.本课程强调对编译原理和技术在宏观上的理解,而不把读者的注意力分散到一些枝节的算法上,如计算开始符号集合和后继符号集合的算法,回填技术等。作为原理性的教材,本书介绍基本的理论和方法,而不偏向于某种源语言或目标机器。 * 虽然只有少数人从事构造或维护程序设计语言的编译器,但是本课程对本科生来说是一门重要课程。 1.本课程能使学生对编程语言的设计和实现有深刻的理解,对和编程语言有关的理论(形式语言和自动机理论、类型论等)有所了解,对宏观上把握编程语言来说,起一个奠基的作用。 2.对软件工程来说,编译器是一个很好的实例(基本设计、模块划分等),也是本科期间能碰到的唯一的大型例子,学生从本课程的学习也能了解到软件工程中的一些技术(如基于事件驱动的编程)。本课程所介绍的概念和技术能应用到一般的软件设计之中。 3.大多数程序员同时是语言的设计者,虽然是一些简单的语言(如输入输出),本课程的学习有助于提高对这些语言的设计水平。 4.编译技术在软件逆向工程、程序理解和软件安全等方面有着广泛的应用 软件逆向工程:以另外一种形式创建系统同一层次的表示或者更高层次的抽象, 应用:技术仿造、软件维护。 程序理解:通过分析、抽象和一般化来获取软件知识的演绎过程。(1)基于机器代码和中间代码层的理解,需要借助于反汇编和反编译技术;(2)基于源代码的理解;(3)基于语法层的理解,程序分段、程序切片和程序分析等技术就是其中的最典型代表;(4)基于程序语义层的理解,模式匹配、格局识别(plan recognition)、概念赋值(concept assigned)和概念分析(concept analysis)等都是进行语义级的软件理解和分析技术。 软件安全:满足安全策略。基本安全策略:类性安全、控制流安全和内存安全。还有信息流安全。用到词法、语法和语义分析、类性系统和类性检查、控制流分析和数据流分析等。编译器将走向类型制导的编译器。 美国的名牌大学:都有编程语言和编译器方面的课程,80%有这方面的研究。国内对这方面的人才需求将增加。 * 虽然只有少数人从事构造或维护程序设计语言的编译器,但是本课程对本科生来说是一门重要课程。 1.本课程能使学生对编程语言的设计和实现有深刻的理解,对和编程语言有关的理论(形式语言和自动机理论、类型论等)有所了解,对宏观上把握编程语言来说,起一个奠基的作用。 2.对软件工程来说,编译器是一个很好的实例(基本设计、模块划分等),也是本科期间能碰到的唯一的大型例子,学生从本课程的学习也能了解到软件工程中的一些技术(如基于事件驱动的编程)。本课程所介绍的概念和技术能应用到一般的软件设计之中。 3.大多数程序员同时是语言的设计者,虽然是一些简单的语言(如输入输出),本课程的学习有助于提高对这些语言的设计水平。 4.编译技术在软件

文档评论(0)

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

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

1亿VIP精品文档

相关文档