编译原理(0002.pptVIP

  • 5
  • 0
  • 约8.17千字
  • 约 80页
  • 2017-02-04 发布于江苏
  • 举报
新课引入 例:文法G[E]: (1) E→E+T (2) E→T (3) T→T*F (4) T→F (5) F→(E) (6) F→I 能不能采用简单优先分析法进行 分析? 算符优先分析法 教学目的与要求 教学重点 教学目的与要求 教学重点 1.算符文法 算符文法定义: 如果文法G中没有形如U?…VW…的产生式,其中V,W∈VN,则称G为算符文法(OG)。   3.算符优先关系表的构造   引入两个概念: 3.算符优先文法    设有一算符文法G,如果对任意两个终结符对a,b之间至多只有?、?和?三种关系的一种成立,则称G一个算符优先文法。    主讲教师:徐艳群 §1.2 编译过程概述(6个阶段) 翻译程序的工作,从输入源程序开始到输出目标程序为止的整个过程,是非常复杂的。但就其过程而言,他与人们进行自然语言的翻译有许多相近之出。 翻译外文书刊 编译源程序 分析 阅读原文 识别单词 分析句子 进行初步翻译 输入并扫视源程序 词法分析 语法分析 语义分析 及中间代码的生成 综合 修辞加工 写出译文 代码优化 目标代码生成 1.编译程序结构 编译程序从输入源程序到输出目标程序,可由五部分来组成: 源程序 词法分析器 语法分析器 语义分析器 中间代码生成 优化 目标代码生成器 目标代码 表格管理 出错处理 分析 综合 2.编译过程 编译过程可分为两个阶段或三个阶段: 源 程 序 编 译 程 序 目 标 代 码 编译时 初 始 数 据 运行子程序 目标代码 计 算 结 果 运行时 源 程 序 编 译 程 序 汇 编 语 言 汇 编 程 序 目 标 代 码 初 始 数 据 运行子程序 目标代码 计 算 结 果   编译程序完成从源程序到目标程序的翻译工作,是一个复杂的整体的过程。从概念上来说,一个编译程序的整个工作过程是划分成阶段进行的,每个阶段将源程序的一种表示形式转换成另一种表示形式,各个阶段进行的操作在逻辑上是紧密连接在一起的,下面给出了一个编译过程的各个阶段,这是一种典型的划分方法。 §1.3 编译程序的逻辑结构 1.编译逻辑过程   词法分析   语法分析   语义分析   中间代码生成   代码优化   目标代码生成   另外两个重要的工作:表格管理和出错处理与上述六个阶段都有联系。编译过程中源程序的各种信息被保留在种种不同的表格里,编译各阶段的工作都涉及到构造、查找或更新有关的表格,因此需要有表格管理的工作。如果编译过程中发现源程序有错误,编译程序应报告错误的性质和错误发生的地点,并且将错误所造成的影响限制在尽可能小的范围内,使得源程序的其余部分能继续被编译下去,有些编译程序还能自动校正错误,这些工作称之为出错处理。 词法分析器 语法分析器 语义分析及中间代码生成器 优化器 目标代码生成器 出 错 处 理 程 序 表 格 管 理 程 序 源程序 单词符号 语法单位 中间代码 中间代码 目标代码 编译程序总框图 词法分析(第一个阶段)   从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描并分解为具有独立意义的最小语法单位—单词(也称单词符号或符号)。这里所谓的单词是指逻辑上紧密相连的一组字符,这些字符具有具体含义。比如标识符是由字母字符开头,后跟字母、数字字符的字符序列组成的一种单词。保留字(关键字或基本字)是一种单词,此外还有算符,界符等等。 2.编译程序各阶段任务   id1:= id2 + id3 * 60   二元式(单词类别,单词值) 词法分析(线性分析) 输入源程序,对构成源程序的字符串进行扫描和分解,依据词法规则(或构词规则)识别出一个个的单词(单词符号或符号),转换成机器容易识别的内码形式。 内码用二元式(类号,内码)表示。 int x,a,b; x=a+b*50; 基本字 int 标识符 x,a,b 整常数 60 运算符 +,*,= 界限符 , ,; 读字符流的源程序、识别单词   例:   position:=initial+rate*60  单词类型 单词值  标识符1(id1)   position  算符(赋值) := 标识符2(id2) initial 算符(加)   + 标识符3(id3) rate 算符(乘)      * 整数          60 分号      ; 词法分析   是编译过程的第二个阶段。语法分析的任务是在词法分析的基础上根据语言的语法规则(文法规则),把单词符号串组成各类语法单位(语法范畴),如“程序”,“语句”,“表达式”等等。 2.语法分析(parsing或syntax

文档评论(0)

1亿VIP精品文档

相关文档