lr分析器第一章.doc_第1页
lr分析器第一章.doc_第2页
lr分析器第一章.doc_第3页
lr分析器第一章.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

编译原理课程信息 教学目的与要求: 编译程序是现代计算机系统的基本组成部分之一。本课程重点讲述编译程序的设计原理和常用实现技术。通过课程的学习和实验的完成,应该清楚的理解一个编译程序是如何工作的;如果在以后遇到了任何一个程序设计语言,应该知道如何实现这个语言的多数机制;应具有一定的使用编译构造工具开发编译程序的经验;会将所学的常用技术和算法应用于类似的软件的设计和实现中。 课程架构: 1 理论和实践并重的课程 2 理论部分的题目出现于书面练习,课堂小测和期末考试 3 实践题目(Project) Project1: 用高级语言(C或Pascal)实现扩充的PL/0编译程序 Project2: 使用编译构造工具实现面向对象语言Tool的编译程序 Project3: 使用编译构造工具实现扩充的PL0编译程序 Project4: 用GCC裁制一个编译器(任选) 4 各部分权重 书面练习抽查 课堂小测(两次) 10% 实践20%或35% (必做: Project1占10%; 选做: Project2占25%, Project3占10% ;任选:Project4待定) 期末考试 70%或55% 教材及主要参考书 教材:编译原理(第2版),张素琴、吕映芝、蒋维杜、戴桂兰,清华大学出版社 2004 参考书:Compilers: Principles, Technigues, and Tools Alfred V.Aho, Ravi Sethi, Jeffrey D.Ullman, Addison-Wesley,1986. 影印版:人民邮电出版社,2001 参考书:程序设计语言 编译原理(第3版),陈火旺、刘春林等,国防工业出版社 2000 教学内容 1 编译程序概述 编译程序是现代计算机系统的基本组成部分之一.编译程序一般由词法分析程序,语法分析程序,语义分析程序,中间代码生成程序,目标代码生成程序,代码优化程序,符号表管理程序和错误处理程序等成分构成。本章概要介绍编译成分的主要功能以及编译阶段的逻辑关系。 2 PL/0 编译程序剖析 给出一个简单的类Pascal语言,其编译程序用高级语言(C和Pascal)实现。通过剖析该高级语言程序以理解各编译成分的功能及手工实现方法。 教学内容 3 高级语言的认识 要学习和构造编译程序,理解和定义程序设计语言是必不可少的。每个程序设计语言都有一定的规则用以规定合适程序的语法结构,也需要有对一个程序的含义的描述。上下文无关文法给出程序设计语言的精确的,易于理解的语法说明。尚没有公认的形式系统描述程序含义,但也有流行的描述语义规则的方法属性文法。 4 词法分析程序的自动构造 词法分析程序是编译程序的一个构成部分,它的主要任务是扫描源程序,按构词规则识别单词,并报告发现的词法错误。正则表达式和有穷状态自动机分别作为单词的描述工具和识别机制,成为词法分析程序的自动构造原理,学习Lex(Flex)工具的使用方法。 教学内容 5 语法分析程序的构造 自顶向下的语法分析。可以看作是为一个输入串寻找一个最左推导的过程,也等价于从根开始,按前序生成结点,为输入串构造分析树的过程。讨论一种有效的无回溯的自顶向下分析程序,这种分析程序称为预测分析程序。介绍对于一个文法类:LL(1)文法, 如何自动的构造预测分析程序。 自底向上(自下而上)语法分析方法,也称移进-归约分析法。它的实现思想是对输入符号串自左向右进行扫描,并将输入符逐个移入一个后进先出栈中,边移进边分析,一旦栈顶符号串形成可归约串,就用相应非终结符代替可归约串,这称为一步归约,重复这一过程,直到归约到栈中只剩文法的开始符号时,则为分析成功,并确认输入串是文法的句子。本章介绍LR分析法,分析过程中归约的是当前句型的句柄,称为规范归约。重点讲解LR类(LR(0)、SLR(1)、LALR(1)、LR(1)文法的分析表的构造原理。 教学内容 6 语义分析和中间代码生成 在词法分析和语法分析之后,编译程序下一个逻辑阶段的任务是语义分析和生成中间代码。引入属性文法和语法制导的翻译的概念,介绍中间代码的形式,针对一些语法成分讨论相应语义处理工作的描述。 7 符号表 介绍符号表的一般组织和使用方法,讨论分程序结构语言的名字作用域分析及符号表设计方案。 教学内容 8 运行时的存储组织和管理 编译的最终目标是生成目标程序。在目标代码生成前,编译程序必须对目标程序运行时的数据空间进行组织和安排. 介绍目标程序运行时的数据空间的存储分配策略,说明程序设计语言本身关于名称的作用域和生存期的规则与存储分配策略的关系,重点讨论栈式动态存储方案. 教学内容 9 代码优化和目标代码生成 代码优化是对代码作一些等价变换,以使得最后生成的目标代码更为高效。介绍优化技术,优化分类以及优化工作的基础控制流和数据流分析问题。 编译的最后一个逻辑阶段是目标代码生成。目标代码生成程序的设计细节要考虑目标语言和操作系统的特点。讨论目标代码生成程序设计的一般问题,包括指令选择,寄存器分配和计算顺序选择。 教师联系信息 张素琴 电话62785601 办公室 东主楼10-207 董渊 电话62794240 办公室 东主楼10-209 王生原 电话62794240 办公室 东主楼10-209 课程相关资料 相关资料放在.86,帐号和密码都是compiler05。 第1章 概述 1.1 什么是编译程序 1.2 程序设计语言的实现 1.3 处理源程序的软件工具 1.4 编译技术的发展 1.1什么是编译程序(compiler) 编译程序是现代计算机系统的基本组成部分. 从功能上看,一个编译程序就是一个语言翻译程序,它把一种语言(称作源语言)书写的程序翻译成另一种语言(称作目标语言)的等价的程序. 什么是编译程序 功能 什么是编译程序 分类 软件 系统软件 语言处理系统 分类 软件:计算机系统中的程序及其文档 系统软件:居于计算机系统中最靠近硬件的一层,其他软件一般都通过系统软件发挥作用。他和具体的应用领域无关,如编译系统和操作系统等。 语言处理系统:把软件语言书写的各种程序处理成可在计算机上执行的程序。 软件语言:用于书写软件的语言。它主要包括需求定义语言,功能性语言,设计性语言,程序设计语言以及文档语言。 什么是编译程序 语言转(变)换系统 术语 编译程序(compiler) 编译程序的源语言(源程序) (source language)(source program) 编译程序的目标语言(目标程序) (object or target language)(object or target program) 编译程序的实现语言(implementation language) 语言处理程序(language processor) 语言转(变)换(language transformation) 编译逻辑过程 词法分析 语法分析 语义分析 中间代码生成 代码优化 目标代码生成 词法分析第一步识别单词 英文句子由单词构成 This line is a longer sentence. (字母组成的有集体含义的最小成分) 句子开头的单词第一个字母要大写 空格是单词分隔符 句点是句子结尾 ist his linealo gerse nte nce. 词法分析 从左至右扫描字符流的源程序、分解构成源程序的字符串,识别出(拼)一个个的单词(符号) 单词符号是语言中具有独立意义的最基本结构。多数程序语言中,单词符号一般包括 各类型的常数、保留字、标识符、运算符、界符等等。 例如 double f = sqrt(-1); 词法分析 double f = sqrt(-1); TDOUBLE (“double”)TIDENT (“f”)TOP (“=“)TIDENT (“sqrt”) TLPAREN (“(“) TOP (“-”)TINTCONSTANT (“1”)TRPAREN (“)”)TSEP (“;”) 词法分析 词法分析(lexical analysis or scanning) -The stream of characters making up a source program is read from left to right and grouped into tokens,which are sequences of characters that have a collective meaning. 单词-token 保留字-reserved word 标识符 -identifier(user-defined name) 例 程序文本If x = y then z := 1 else z := 2; 经词法分析,变成一个个单词 if, x, =, y, then, z, :=, 1, else, z, :=, 2, ; 语言的单词符号是由词法规则所确定的。词法规则规定了字母表中哪样的字符串是一个单词符号。 词法分析position := initial + rate * 60; 单词类型单词值 标识符1(id1) position 算符(赋值) := 标识符2(id2) initial 算符(加) + 标识符3(id3) rate 算符(乘) * 整数 60 分号 ; 语法分析 Syntax Analysis功能:层次分析.依据源程序的语法规则把源程序的单词序列组成语法短语(表示成语法树). 也称为 “parsing” 使用 context-free grammars 结构上的合法性Structural validation (可生成语法树或推导Creates parse tree or derivation) This line is a longer sentence 分析程序成分 double f = sqrt(-1); “sqrt(-1)”的推导 Expression ? FuncCall ? TIDENT TLPAREN Expression TRPAREN ? TIDENT TLPAREN UnaryExpression TRPAREN ? TIDENT TLPAREN TOP Expression TRPAREN ? TIDENT TLPAREN TOP TINTCONSTANT TRPAREN double f = sqrt(-1);的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论