编译原理第八-章语法制导翻译
- 格式:ppt
- 大小:2.78 MB
- 文档页数:23


《编译原理》课程教学大纲
课程编号:(先不填)
英文名称:Compiler Construction Principles
课程类型:专业基础课
学时/学分:40+16/3.5
授课对象:本科生
先修课程:高等数学,数据结构,C程序设计
课程简介:
本课程是计算机专业学生的一门重要专业基础课,本课程属于计算机科学与技术专业的一门重要的专业必修课。通过本课程学习,使学生掌握编译程序的一般构造原理,包括语言基础知识、词法分析程序设计原理和构造方法。各种语法分析技术和中间代码生成符号表的构造、代码优化、并行编译技术常识及运行时存储空间的组织等基本方法和主要实现技术。它有一定的理论性,又有一定的实践性, 尤其是本课程的知识与计算机应用中很多领域有紧密联系与广泛应用。了解与掌握本课程的基本内容将有利于学生提高专业素质和适应社会多方面需要的能力。
教学目的和要求:
教学目的:培养学生掌握构造编译程序的基本原理与设计方法,为培养计算机语言与大型应用程序的开发人才打下良好的基础。本课程坚持理论与实践教学并重的原则,理论上主要叙述语言和文法的形式定义、自动机理论、词法分析、语法和语义分析、优化和代码生成等环节的基本理论和方法,与此同时,通过上机实习构造简单语言的编译程序等编辑器使学生掌握开发应用程序的基本方法。
教学要求:通过本课程的学习, 学生应掌握形式语言理论与编译实现相关的基础概念, 了解与掌握编译程序构造的基本原理与技术, 从形式语言理论的角度, 进一步认识与理解程序设计语言及其与编译程序的联系。做习题是理解课程中基本概念、培养思考能力和解题能力的重要方面, 要求学生认真做好习题, 并注意解题规范化。学生也应重视配合教学, 做好上机实习。
教学内容:
第1章 编译程序概述(2学时)
1、教学内容:
1) 什么是编译程序
2) 编译过程概述
3) 编译程序的结构
4) 编译阶段的组合
5) 编译技术和软件工具
编译原理名词解释
2.二义性文法:如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义性文法。
3.DISPLAY表:过程的嵌套层次显示表,记录该过程的各外层过程的最新活动记录的起始地址。由于过程嵌套允许内层过程引用外层过程定义的数据,因此,当一个过程运行时必须跟踪它的所有外层过程的最新活动记录起始地址,
display表就是用于登记每个外层过程的最新活动记录起始地址。
9.语法制导翻译:在语法分析过程中,根据每个产生式所对应的语义子程序进行翻译的办法叫做语法制导翻译。
10.短语:令G是一个文法,S划文法的开始符号,假定αβδ是文法G的一个句型,如果有SαAδ且Aβ,则称β是句型αβδ相对非终结符A的短语。
14.超前搜索:在词法分析过程中,有时为了确定词性,需超前扫描若干个字符。
15.句柄:一个句型的最左直接短语。
16.语法制导翻译:在语法分析过程中,根据每个产生式所对应的语义程序进行翻译的方法 叫做语法制导翻译。
17.规范句型:由规范推导所得到的句型。
18.素短语:素短语是指这样一个短语,至少含有一个终结符,并且,除它自身外不再含任何更小的素短语。
19.语法:是组规则,用它可形成和产生一个合式的程序。
20.语义:定义程序的意义的一组规则。
21.优化:对程序进行各种等价变换,使得从变换后的程序出发,能产生更有效的目标代码。
三种级别:局部优化、循环优化、全局优化
21.词法分析 词法分析的主要任务是从左向右扫描每行源程序的符号,按照词法规则从构成源程序的字符串中识别出一个个具有独立意义的最小语法单位,并转换成统一的内部表示(token),送给语法分析程序。
22.LL(1)文法
若文法的任何两个产生式A | 都满足下面两个条件:(1)FIRST( ) FIRST( ) = ;(2)若 * ,那么FIRST( )
FOLLOW( A ) = 。我们把满足这两个条件的文法叫做LL(1)文法,其中的第一个L代表从左向右扫描输入,第二个L表示产生最左推导,1代表在决定分析器的每步动作时向前看一个输入符号。除了没有公共左因子外,LL(1)文法还有一些明显的性质,它不是二义的,也不含左递归。
第一章:
编译过程的六个阶段:词法分析,语法分析,语义分析,中间代码生成,
代码优化,目标代码生成
解释程序:把某种语言的源程序转换成等价的另一种语言程序——目标语言程序,然后再执行目标程序。解释方式是接受某高级语言的一个语句输入,进行解释并控制计算机执行,马上得到这句的执行结果,然后再接受下一句。
编译程序:就是指这样一种程序,通过它能够将用高级语言编写的源程序转换成与之在逻辑上等价的低级语言形式的目标程序(机器语言程序或汇编语言程序)。
解释程序和编译程序的根本区别:是否生成目标代码
第三章:
Chomsky对文法中的规则施加不同限制,将文法和语言分为四大类:
0型文法(PSG) 0型语言或短语结构语言
文法 G的每个产生式α→β中:若α∈V*VNV*, β∈(VN∪VT)* ,
则 G是0型文法,即短语结构文法。
1型文法(CSG) 1型语言或上下文有关语言
在0型文法的基础上:若产生式集合中所有|α|≤|β|,除S→ε(空串)外,
则G是1型文法,即:上下文有关文法
另一种定义:
文法G的每一个产生式具有下列形式:αAδ→αβδ,其中α、δ∈V*,A∈VN,β∈V+;
2型文法(CFG) 2型语言或上下文无关语言
文法G的每个产生式A→α,若A∈VN ,α∈(VN∪VT)*,则G是2型法,即:上下文无关文法。
3型文法(RG) 3型语言或正则(正规)语言
若A、B∈VN,a∈VT或 ,
右线性文法:若产生式为A→aB或A→a
左线性文法:若产生式为 A→Ba或A→a
都是3型文法(即:正规文法)
最左(最右)推导
在推导的任何一步α β,其中α、β是句型,都是对α中的最左(右)非终结符
进行替换
规范推导:即最右推导。
规范句型:由规范推导所得的句型。
句子的二义性(这里的二义性是指语法结构上的。)
文法G[S]的一个句子如果能找到两种不同的最左推导(或最右推导),或者存在两棵不同的语法树,则称这个句子是二义性的。
《编译原理》总复习-07级
第一章编译程序的概述
(一)内容
本章介绍编译程序在计算机科学中的地位和作用,介绍编译技术的发展历史,讲解编译程序、解释程序的基本概念,概述编译过程,介绍编译程序的逻辑结构和编译程序的组织形式等。
(二)本章重点
编译(程序),解释(程序),编译程序的逻辑结构。
(三)本章难点
编译程序的生成。
(四)本章考点
全部基本概念。
编译程序的逻辑结构。
(五)学习指导
引论部分主要是解释什么是编译程序以及编译的总体过程。因此学习时要对以下几个点进行重点学习:翻译、编译、目标语言和源语言这几个概念的理解;编译的总体过程:词法分析,语法分析、语义分析与中间代码的生成、代码优化、目标代码的生成,以及伴随着整个过程的表格管理与出错处理。
第三章文法和语言课外训练
(一)内容
本章是编译原理课程的理论基础,主要介绍与课程相关的形式语言的基本概念,包括符号串的基本概念和术语、文法和语言的形式定义、推导与归约、句子和句型、语法分析树和二义性文法等定义、文法和语言的Chomsky分类。
(二)本章重点
上下文无关文法,推导,句子和句型,文法生成的语言,语法分析树和二义性文法。
(三)本章难点
上下文无关文法,语法分析树,文法的分类。
(四)本章考点
上下文无关文法的定义。
符号串的推导。
语法分析树的构造。
(五)学习指导
要构造编译程序,就要把源语言用某种方式进行定义和描述。学习高级语言的语法描述是学习编译原理的基础。上下文无关文法及语法树是本章学习的重点。语法与语义的概念;程序的在逻辑上的层次结构;文法的定义,文法是一个四元组:终结符号集,非终结符号集,开始符号、产生式集;与文法相关的概念,字符,正则闭包,积(连接),或,空集,产生式,推导,直接推导,句子,句型,语言,最左推导,最右推导(规范推导);学会用文法来描述语言及通过文法能分析该文法所描述的语言;语法树及二义性的概念、能通过画语法树来分析一个文法描述的语言是否具有二义性;上下文无关文法的定义和正规文法的定义,能判断一个语言的文法是哪一类文法。