A2013-9-CH01--编译概述.ppt

  1. 1、本文档共83页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第1章 编译概述 知识点:翻译、编译、解释的概念 编译的阶段、任务、及典型结构 编译程序的伙伴工具 编译概述 简介 1.1 翻译和解释 1.2 编译的阶段和任务 1.3 编译有关的其他概念 1.4 编译程序的伙伴工具 1.5 编译原理的应用 小结 简介 什么是编译? 把源程序转换成等价的目标程序的过程即是编译。 编译程序的设计涉及到的知识: 程序设计语言 形式语言与自动机理论 计算机体系结构 数据结构 算法分析与设计 操作系统 软件工程等 1.1 翻译和解释 一、程序设计语言 二、翻译程序 一、程序设计语言 低级语言 机器语言 符号语言 汇编语言 高级语言 过程性语言—面向用户的语言 如:C、Pascal 专用语言—面向问题的语言 如:SQL 面向对象的语言 如:Java、C++ 高级语言的优点 高级语言独立于机器。所编程序移植性比较好。 不必考虑存储单元的分配问题、数据的外部形式转换成机器的内部形式等细节。 用变量描述存储单元 具有丰富的数据结构和控制结构。 数据结构:数组、记录等 控制结构:循环、分支、过程调用等。 更接近于自然语言。 可读性好,便于维护。 编程效率高。 翻译程序扫描所输入的源程序,并将其转换为目标程序,或将源程序直接翻译成结果。 编译程序 源程序是用高级语言或汇编语言编写的,目标程序是用目标语言表示的。 编译和执行阶段 编译时间:实现源程序到目标程序的转换所占用的时间。 源程序和数据是在不同时间(即分别在编译阶段和运行阶段)进行处理的。 解释程序 解释程序解释执行源程序,不生成目标程序。 同时处理源程序和数据。 total:=total+rate*4 的解释过程 解释程序先将源程序转换成一棵树 另一种有效的方法:先将源程序转换为某种中间形式,然后对中间形式的程序解释执行。例如: JAVA语言 1.2 编译的阶段和任务 一、分析阶段 根据源语言的定义,分析源程序的结构 1.词法分析 2.语法分析 3.语义分析 二、综合阶段 根据分析结果构造出所要求的目标程序 4.中间代码生成 5.代码优化 6.目标代码生成 三、符号表的管理 四、错误诊断和处理 编译程序的典型结构 一、分析阶段 任务:根据源语言的定义,对源程序进行结构分析和语义分析,从而把源程序正文转换为某种内部表示。 分析阶段是对源程序结构的静态分析。 任务划分: 1.词法分析 2.语法分析 3.语义分析 1. 词法分析 扫描,线性分析 词法分析器: 依次读入源程序中的每个字符,对构成源程序的字符串进行分解,识别出每个具有独立意义的字符串作为记号(token)并组织成记号流。 把需要存放的单词放到符号表中,如变量名,标号,常量等。 形成记号的字符串叫做该记号的单词(lexeme)。 工作依据:源语言的构词规则(即词法),也称为模式(pattern)。 标识符的模式是:以字母开头的字母数字序列。 词法分析器从左到右扫描组成源程序的字符串,并将其转换成单词(记号—token)串;同时要:查词法错误,进行标识符登记——符号表管理。 输入:字符串 输出:(种别码,属性值)——序对 属性值——token的机内表示 对 total:=total+rate*4 的词法分析 (1) 标识符 total (内部名字为id1) (2) 赋值号 := (3) 标识符 total (内部名字为id1) (4) 加号 + (5) 标识符 rate (内部名字为id2) (6) 乘号 * (7) 整常数 4 空格、注释的处理及其他 分隔记号的空格:被删去 源程序中的注释:被跳过 识别出来的标识符要放入符号表。 对某些记号还要增加一个“属性值” 如发现标识符total时,词法分析器不仅产生一个记号如id,还把它的单词total填入符号表(如果total在表中不存在的话),记号id的属性值就是指向符号表中R条目的指针。 2. 语法分析 层次结构的分析 把记号流按语言的语法结构层次地分组,以形成语法短语或语法单位。 源程序的语法短语常用分析树表示。 工作依据:源语言的语法规则。 输入:token序列 输出:语法成分 程序的层次结构通常由递归的规则表示, 【例如】表达式的定义规则如下: (1) 任何一个标识符是一个表达式 (2) 任何一个数是一个表达式 如果expr1和expr2是表达式,expr1+expr2、 expr1*expr2、(expr1)也都是表达式。 【例如】使用如下规则递归地定义语句: (1) 如果id是一个标识符,expr是一个表达式,则 id:= expr是一个语句。 (2) 如果expr是一个表达式,stm

文档评论(0)

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

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

1亿VIP精品文档

相关文档