编译原理清华大学第编译程序概论ppt.ppt

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

* * * * * * * * 编译原理 本课程的地位 计算机科学与技术最重的专业课之一,掌握编译方法和技术是每一个优秀计算机软件专业人员的必备素质。 很多被称为程序设计大师的人都是编译领域的高手.写出第一个微型机上运行的Basic语言的比尔盖茨,设计出Delphi的Borland的“世界上最厉害的程序员”, Sun的JAVA之父, 贝尔实验室的C++之父等等。 学习编译程序的构造原理和实现技术,在软件工程、程序理解和软件安全方面有着广泛的应用。 学习任务 通过本课程学习,使学生掌握编译程序的一般构造原理,包括语言基础知识、词法分析程序设计原理和构造方法,各种语法分析技术和中间代码生成、代码优化、运行时存储空间的组织等基本方法和主要实现技术。。 相关知识:离散数学、高级程序设计语言、计算机组成原理、数据结构、汇编语言、操作系统等。 教材 教材: 《编译原理》,张素琴 等编著,清华大学出版社 参考书目: 《编译程序设计原理》,杜淑敏 等编著,北京大学出版社 《程序设计语言编译原理》,陈火旺等编著,国防工业出版社 第1章 编译程序概论 教学要求:本章讲解编译程序、 解释程序的基本概念,概述编译过程,介绍编译程序的逻辑结构和编译程序的组织形式。要求理解编译程序、解释程序和遍的基本概念;掌握编译过程各阶段的基本任务。 教学重点:编译程序工作的基本过程及其各阶段的基本任务。 基本概念 机器语言:计算机唯一能够识别和执行 的语言。 汇编语言:用助记符代替机器语言二进制编码的语言。如ADD表示加法操作,SUB表示减法操作等等 高级语言:使用便于理解的自然语言。 语言处理程序 解释程序(器):接受某种语言源程序,然后直接解释执行源程序。 解释程序解释执行过程的示意图 编译程序(器):接受某种语言的源语言程序后,将它改造成另一种逻辑上等价的目标语言程序。 图1编译程序的功能 图2源程序的编译和运行阶段 图3源程序的编译、汇编和运行阶段 编译程序vs解释程序 编译 解释 把英文I am a university student翻译为中文 识别出句子中的一个个单词; 分析句子的语法结构; 根据句子的含义进行初步翻译; 对译文进行修饰; 写出最后的译文。 词法分析 语法分析 语义分析和中间代码产生成 优化 目标代码产生 表 格 管 理 词法分析 语法分析 语义分析 中间代码生成 代码优化 目标代码生成 出 错 处 理 源程序 目标程序 编译的各个阶段 词法分析 词法分析的功能是从左到右读入源程序的每个字符,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词(也叫单词符号或符号)。 依据:语言的构词规则。 描述工具:有限自动机。 如:标识符、保留字(关键字或基本字)、算符、界符等。 例: A:=B+x*60; 单词类型 单词值 标识符1(id1) A 运算符(赋值) := 标识符2(id2) B 运算符(加) + 标识符3(id3) x 运算符(乘) * 常数(整数) 60 界符(分号) ; 语法分析 语法分析的功给是将单词序列分解成各类语法短语(也叫语法单位,句子),确定整个输入串是否构成一个语法上正确的程序。 依据:语言的语法规则。 描述工具:上下文无关文法。 语句的表示: 标识符:=表达式 是语句。 while (表达式) do 语句 if (表达式) then 语句 else 语句 语义分析的功能是审查源程序有无语义错误,为代码生成阶段收集类型信息。 语义分析主要能识别的语义错误有:变量没有声明就使用,变量重复声明,运算对象类型是否匹配等等。 依据:语义规则。 语义分析 中间代码生成 中间代码:一种结构简单、含义明确的记号系统。 原则: 容易生成; 容易将它翻译成目标代码。 如四元式: (运算符,运算对象1,运算对象2,结果) 将源程序生成一种内部表示形式,这种内部表示形式叫中间代码。 如:源程序 A:= x + y * 10 生成的四元式可以是: ( inttoreal, 10, -, t1 ) ( *, y, t1, t2 ) ( +, x, t2, t3 ) ( :=, t3, -, A ) 代码优化 ( inttoreal, 10, -, t1 ) ( *, y, t1, t2 ) ( +, x, t2, t3 ) ( :=, t3, -, A ) ( *, y, 10.0, t2 ) ( +

文档评论(0)

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

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

1亿VIP精品文档

相关文档