编译原理第一章

上传人:kms****20 文档编号:57099081 上传时间:2018-10-18 格式:PPT 页数:99 大小:674.50KB
返回 下载 相关 举报
编译原理第一章_第1页
第1页 / 共99页
编译原理第一章_第2页
第2页 / 共99页
编译原理第一章_第3页
第3页 / 共99页
编译原理第一章_第4页
第4页 / 共99页
编译原理第一章_第5页
第5页 / 共99页
点击查看更多>>
资源描述

《编译原理第一章》由会员分享,可在线阅读,更多相关《编译原理第一章(99页珍藏版)》请在金锄头文库上搜索。

1、编译原理课程信息,教学目的与要求:编译程序是现代计算机系统的基本组成部分之一。本课程重点讲述编译程序的设计原理和常用实现技术。通过课程的学习和实验的完成,应该清楚的理解一个编译程序是如何工作的;如果在以后遇到了任何一个程序设计语言,应该知道如何实现这个语言的多数机制;应具有一定的使用编译构造工具开发编译程序的经验;会将所学的常用技术和算法应用于类似的软件的设计和实现中。,课程架构:,1 理论和实践并重的课程 2 理论部分的题目出现于书面练习,课堂小测和期末考试 3 实践题目(Project) Project1: 用高级语言(C或Pascal)实现扩充的PL/0编译程序 Project2: 使用

2、编译构造工具实现面向对象语言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 Al

3、fred V.Aho, Ravi Sethi, Jeffrey D.Ullman, Addison-Wesley,1986. 影印版:人民邮电出版社,2001 参考书:程序设计语言 编译原理(第3版),陈火旺、刘春林等,国防工业出版社 2000,教学内容,1 编译程序概述 编译程序是现代计算机系统的基本组成部分之一.编译程序一般由词法分析程序,语法分析程序,语义分析程序,中间代码生成程序,目标代码生成程序,代码优化程序,符号表管理程序和错误处理程序等成分构成。本章概要介绍编译成分的主要功能以及编译阶段的逻辑关系。 2 PL/0 编译程序剖析给出一个简单的类Pascal语言,其编译程序用高级语言

4、(C和Pascal)实现。通过剖析该高级语言程序以理解各编译成分的功能及手工实现方法。,教学内容,3 高级语言的认识 要学习和构造编译程序,理解和定义程序设计语言是必不可少的。每个程序设计语言都有一定的规则用以规定合适程序的语法结构,也需要有对一个程序的含义的描述。上下文无关文法给出程序设计语言的精确的,易于理解的语法说明。尚没有公认的形式系统描述程序含义,但也有流行的描述语义规则的方法属性文法。 4 词法分析程序的自动构造词法分析程序是编译程序的一个构成部分,它的主要任务是扫描源程序,按构词规则识别单词,并报告发现的词法错误。正则表达式和有穷状态自动机分别作为单词的描述工具和识别机制,成为词

5、法分析程序的自动构造原理,学习Lex(Flex)工具的使用方法。,教学内容,5 语法分析程序的构造 自顶向下的语法分析。可以看作是为一个输入串寻找一个最左推导的过程,也等价于从根开始,按前序生成结点,为输入串构造分析树的过程。讨论一种有效的无回溯的自顶向下分析程序,这种分析程序称为预测分析程序。介绍对于一个文法类:LL(1)文法, 如何自动的构造预测分析程序。 自底向上(自下而上)语法分析方法,也称移进-归约分析法。它的实现思想是对输入符号串自左向右进行扫描,并将输入符逐个移入一个后进先出栈中,边移进边分析,一旦栈顶符号串形成可归约串,就用相应非终结符代替可归约串,这称为一步归约,重复这一过程

6、,直到归约到栈中只剩文法的开始符号时,则为分析成功,并确认输入串是文法的句子。本章介绍LR分析法,分析过程中归约的是当前句型的句柄,称为规范归约。重点讲解LR类(LR(0)、SLR(1)、LALR(1)、LR(1)文法的分析表的构造原理。,教学内容,6 语义分析和中间代码生成在词法分析和语法分析之后,编译程序下一个逻辑阶段的任务是语义分析和生成中间代码。引入属性文法和语法制导的翻译的概念,介绍中间代码的形式,针对一些语法成分讨论相应语义处理工作的描述。7 符号表介绍符号表的一般组织和使用方法,讨论分程序结构语言的名字作用域分析及符号表设计方案。,教学内容,8 运行时的存储组织和管理编译的最终目

7、标是生成目标程序。在目标代码生成前,编译程序必须对目标程序运行时的数据空间进行组织和安排. 介绍目标程序运行时的数据空间的存储分配策略,说明程序设计语言本身关于名称的作用域和生存期的规则与存储分配策略的关系,重点讨论栈式动态存储方案.,教学内容,9 代码优化和目标代码生成代码优化是对代码作一些等价变换,以使得最后生成的目标代码更为高效。介绍优化技术,优化分类以及优化工作的基础控制流和数据流分析问题。编译的最后一个逻辑阶段是目标代码生成。目标代码生成程序的设计细节要考虑目标语言和操作系统的特点。讨论目标代码生成程序设计的一般问题,包括指令选择,寄存器分配和计算顺序选择。,教师联系信息,张素琴 电

8、话62785601办公室 东主楼10-207zsq- 董渊 电话62794240办公室 东主楼10- 王生原 电话62794240办公室 东主楼10-,课程相关资料,相关资料放在ftp:/166.111.68.86,帐号和密码都是compiler05。,第1章 概述,1.1 什么是编译程序 1.2 程序设计语言的实现 1.3 处理源程序的软件工具 1.4 编译技术的发展,1.1什么是编译程序(compiler),编译程序是现代计算机系统的基本组成部分.从功能上看,一个编译程序就是一个语言翻译程序,它把一种语言(称作源语言)书写的程序翻译成另一种语言(称作目标语言)的等价的程序.,什么是编译程序

9、,功能,术语 编译程序的源语言(源程序) 编译程序的目标语言(目标程序) 编译程序的实现语言,高级语言 书写的程序,编译程序,低级语言程序,什么是编译程序,分类 软件 系统软件 语言处理系统,分类,软件:计算机系统中的程序及其文档 系统软件:居于计算机系统中最靠近硬件的一层,其他软件一般都通过系统软件发挥作用。他和具体的应用领域无关,如编译系统和操作系统等。,语言处理系统:把软件语言书写的各种程序处理成可在计算机上执行的程序。 软件语言:用于书写软件的语言。它主要包括需求定义语言,功能性语言,设计性语言,程序设计语言以及文档语言。,什么是编译程序,语言转(变)换系统,C+编译器,C+,C,Ja

10、va,Bytecode,Java编译器,术语,编译程序(compiler) 编译程序的源语言(源程序) (source language)(source program) 编译程序的目标语言(目标程序) (object or target language)(object or target program) 编译程序的实现语言(implementation language) 语言处理程序(language processor) 语言转(变)换(language transformation),编译逻辑过程,词法分析 语法分析 语义分析 中间代码生成 代码优化 目标代码生成,词法分析第一步识

11、别单词,英文句子由单词构成 This line is a longer sentence. (字母组成的有集体含义的最小成分)句子开头的单词第一个字母要大写空格是单词分隔符句点是句子结尾 ist his linealo gerse nte nce.,词法分析,从左至右扫描字符流的源程序、分解构成源程序的字符串,识别出(拼)一个个的单词(符号)单词符号是语言中具有独立意义的最基本结构。多数程序语言中,单词符号一般包括 各类型的常数、保留字、标识符、运算符、界符等等。 例如 double f = sqrt(-1);,词法分析,double f = sqrt(-1);TDOUBLE (“double

12、”) 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 co

13、llective 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算符(赋值) :=标识

14、符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)”的推

15、导,Expression FuncCall TIDENT TLPAREN Expression TRPAREN TIDENT TLPAREN UnaryExpression TRPAREN TIDENT TLPAREN TOP Expression TRPAREN TIDENT TLPAREN TOP TINTCONSTANT TRPAREN,规则 Expression - UnaryExpression Expression - FuncCall Expression - TINTCONSTANT UnaryExpression - TOP Expression FuncCall - TIDENT TLPAREN Expression TRPAREN,double f = sqrt(-1); 的Parsing ?,语言的语法规则规定了如何从单词符号形成更大的结构(即语法单位),语法分析,又例: position := initial + rate * 60 ; (Pascal)规则:=“:=”:=“+”:=“*”:=“(”“)”:=:=:=,赋值语句,标识符,表达式,表达式,+,表达式,表达式,标识符,整数,标识符,:=,表达式,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号