编译原理与实现02第2章文法和语言.ppt
《编译原理与实现02第2章文法和语言.ppt》由会员分享,可在线阅读,更多相关《编译原理与实现02第2章文法和语言.ppt(48页珍藏版)》请在三一办公上搜索。
1、第二章 文法和语言,编译过程的核心就是翻译,这是一个十分复杂的信息加工过程,其加工的对象是用某种高级语言编写的程序。对于一个英文翻译来说,首先必须对英文有很深的了解,掌握英文的语法和词汇,才能进行翻译。而编译程序的任务就是将高级语言编写的程序翻译成机器语言程序,因此,在学习和掌握编译技术之前,就需要对高级语言有深刻的了解。首先要了解如何确切地描述或定义一种程序设计语言,其次才能识别和分析这种语言。20世纪50年代,语言学家Noam Chomsky(乔姆斯基)提出了一个用来描述语言的数学系统,把用一组数学符号和规则来描述语言的方式叫做形式描述,而把能用数学符号和规则描述的语言称为形式语言。这种理
2、论对程序设计语言的设计和编译程序的构造有着重大的作用。程序设计语言就是形式语言,2.1 字母表和符号串,介绍文法和语言之前,首先介绍符号、符号串等基本概念。任何一种语言都是由该语言的基本符号所组成的符号串集合的子集。例如,英语的基本符号有26个字母和一些标点符号,由这些基本符号所组成的各种可能序列的符号串构成一个无穷的集合,而英语就是这个集合的子集。同理,C语言的基本符号有if,while,for,字母、数字和+、-、(、)、=等分界符,由这些符号组成的各种可能序列的符号串构成一个无穷的集合,而C语言就是这个集合的子集。任何一个C语言程序都是定义在这个集合上的符号串,即任何一个C语言程序都是由
3、这些基本符号所组成的序列。,字母表,“字母表”是元素的非空有穷集合。字母表中的每个元素称为“符号”,因此“字母表”也可称为“符号集”。典型的符号有字母、数字、各种标点符号和各种运算符。例如,集合a,b,c,+,*是一个含有5个符号的字母表,而字母表0,1只有两个符号。,符号串,“符号串”是由字母表上0个或多个符号所组成的任何有穷序列。例如有字母表a,b,c,+,*,则a,b,c,+,*,aa,ab,ac,a+,a*,ba,bb,bc,b+,b*,aaa,bbb等等都是该字母表上的符号串,而所有二进制数都是定义在字母表0,1上的符号串。要注意也是字母表上的符号串,它由0个符号组成。显然,一个字母
4、表上的全部符号串所组成的集合是无穷的。,2.1.3 符号串及其集合的运算1,1.符号串的长度:指符号串x中所含符号的个数,记为|x|。如|abc|=3,|abc+*abc|=8,而|=02.符号串相等:若x、y是字母表上的两个符号串,那么当且仅当组成x的各符号与组成y的各符号依次相等时,则符号串x与符号串y相等,记作x=y。如:当x=abbc,y=abbc 时,则x=y;而当x=ab,y=ba 时,则xy3.符号串的前缀:指从符号串x的末尾删除0或多个符号后得到的符号串,如u、uni、university都是university的前缀。4.符号串的后缀:指从符号串x的开头删除0或多个符号后得到
5、的符号串,如ty、sity、university都是university的后缀。,2.1.3 符号串及其集合的运算2,5.符号串的子串:指从符号串x的开头和末尾删除0或多个符号后得到的符号串,如ver是university的子串,符号串的前缀、后缀都是它的子串。6.符号串的连接:若x、y是两个符号串,则xy表示连接,是将符号串y连接在符号串x的后面。若x、y是字母表上的两个符号串,则xy也是字母表上的符号串。例如:x=ab,y=ba,那么 xy=abba注意:连接没有交换率,即 xy yx 而对于空串有 x=x=x,2.1.3 符号串及其集合的运算3,7.集合的乘积运算:令A、B为两个符号串集
6、合,A和B的乘积AB定义为:AB=xy|x A,y B例如:A=a,b B=c,d,则AB=ac,ad,bc,bd 对于空集合有有:A=A=A8.符号串的幂运算:若x是符号串,则x的幂运算定义为:X0=,x1=x,x2=xx,,xn=xxx=xx n-1=x n-1 x,其中 n0例如:x=abc,x0=,x1=abc,x2=abcabc,2.1.3 符号串及其集合的运算4,9.集合的幂运算:设A为符号串集合,则A的幂运算定义为:A0=A1=A A2=AA An=AAA=AA n-1=A n-1 A,其中 n0,例如:A=a,b,则 A0=A1=a,bA2=aa,ab,ba,bb,2.1.3
7、符号串及其集合的运算4,10.集合的正闭包和集合的闭包:设A为一个集合,则集合A的正闭包用A+表示,定义为:A+=A1 A2.A n 集合A的闭包用A*表示,定义为:A*=A 0 A+例如:A=a,b,则A+=a,b,aa,ab,ba,bb,aaa,aab,A*=,a,b,aa,ab,ba,bb,aaa,aab,一个集合的闭包比正闭包多个。,2.2 文法,在学习英语时,我们知道句子由主语、谓语组成,主语由冠词、形容词及名词组成等等,这就是说明句子组成的规则。而在形式语言里,这种规则可采用“:=”、“:=”这种形式来表示。分析一个句子是否正确,就是根据这些规则进行的。文法实际上就是描述语言语法结
8、构的形式规则。,2.2.1 文法形式定义1,在表示文法时,要说明语言的语法成分,句子中的符号以及语法结构。例如,能够描述句子“the monkey ate the banana”的文法如下:,这些规则说明句子由主语和谓语组成,主语由冠词和名词等等,而冠词由the构成,名词由banana或monkey构成。在这个文法里,一共有8条规则,每条规则中在:=左边的符号其着语法成分的作用,它们可用:=右边的符号代替。而像the、ate、banana这样的符号只在规则中:=的右边出现,这些符号不能用其它符号代替。,:=:=:=:=:=:=:=:=,2.2.1 文法形式定义2,文法的形式定义:文法可表示为一
9、个四元组 G=(Vn,Vt,P,Z)Vn是一个非空有穷集合,该集合中的每个元素称为非终结符号。如上例中的符号、等等。Vt是一个非空有穷集合,该集合中的每个元素称为终结符号。如上例中的符号the、ate、banana等等都是终结符号。并且VtVn=,即Vt集合与Vn集合的交集为空。而Vt和Vn并集VtVn就是该文法的字汇表(即字汇表字母表)。P是一个非空的有穷集合,它的每个元素叫做产生式或规则。产生式的形式为:或:=是产生式的左部且不能为空,是产生式的右部,并且、(VtVn)*,“”或”“:=”含义相同,表示“定义为”或“由组成”。Z是Vn集合的一个特殊的非终结符号,称为文法的识别符号或开始符号
10、。它至少必须在某个产生式的左部出现一次。就是上例文法的识别符号。,2.1 文法形式定义3,文法分4种类型(见2.13小节),程序设计语言文法主要为2型文法,这种文法也叫上下文无关文法,本书后面说的文法都是指这种文法。在上下文无关文法中,产生式的左部是一个非终结符号,而右部是由终结符号和非终结符号组成的有穷符号串。这样只要给出产生式集合,所有产生式的左部符号就构成了非终结符号集合Vn,而只出现在产生式右部的那些符号构成终结符号集合Vt,因此,在表示文法时只需给出规则集合并指定识别符号即可。为了进一步简化,在给出规则集时,可约定将左部符号为识别符号的规则作为规则集合的第一条规则,这样表示文法时只需
11、给出规则的集合即可。显然,上例就是一个简化的文法表示。,2.1 文法形式定义4,例2.1,按文法形式定义表示上例文法。解:根据文法的形式定义,文法 G1=(Vn,Vt,P,Z)非终结符号集合:Vn=句子,主语,谓语,冠词,名词,动词,直接宾语终结符号集合:Vt=the,ate,banana,monkey 产生式集合P由下面8条规则组成:识别符号Z:,the ate banana monkey,2.1 文法形式定义5,例2.2,有如下简化表示文法,只给出规则集,写出该文法的终结符号集合、非终结符号集合和识别符号。,1.2.3.4.05.16.27.38.49.510.611.712.813.9,
12、解:根据简化约定,可确定:非终结符号集合:Vn=,终结符号集合:Vt=0,1,2,3,4,5,6,7,8,9识别符号Z:,文法的EBNF表示,所谓文法的EBNF表示,就是在书写文法的规则时,可采用一些特殊的符号“|”、“”和“”、“”、“(”和“)”、“”和“”来表示文法,这些符号叫做元符号。其中“”和“”、“”、“(”和“)”、“”和“”这些元符号总是成对出现。下面介绍各种元符号的含义。,1.元符号“|”:表示“或”.对于具有相同左部的那些规则 如 1、n,可以缩写为:1|2|n例2.3,对例2.2文法的13条规则可缩写成::=:=|:=0|1|2|3|4|5|6|7|8|9,文法的EBNF
13、表示,2.元符号“”:用于括起由中文字组成的非终结符号或由多个字母组成的符号。如、等等。3.元符号“”和“”:表示可重复连接,tnm表示符号串t可重复连接n到m次,而t表示符号串t可重复连接0到无穷次。例如,13 与|相同 EE+T|T 与 ET+T 相同而字母打头、后面可跟数字或字母的不超过8个字符的标识符文法则为:|07,文法的EBNF表示,4.元符号“”和“”:表示括起的内容可有可无。如t表示符号串t可有可无。例如:IF THEN IF THEN ELSE 可写成:IF THEN ELSE 5.元符号“(”和“)”:表示括号内的成分优先。常用于在规则中提取公因子。例如,Uxy|xw|xz
14、 可写成:Ux(y|w|z)从上述有关元符号的定义和例子可看出,这些元符号为表示文法提供了很大方便。,2.3 推导,给定了文法,就可以从文法的开始符号并根据文法规则进行推导。通过推导可产生文法定义的句子。例如,根据例2.1文法的规则,可从开始符号推出,又根据规则,可从推出,这个推导过程可表示成如下:=其中“=”表示一步推导,上述推导过程表示经过两步推导,从可推导出。,直接推导,假定G是一文法,是该文法的一个产生式,现有一含非终结符号的符号串xy,其中x和y是该文法的任意符号串(可为空),推导就是利用产生式将符号串xy中的非终结符号用替换,从而得到符号串xy。表示为:xy=xy其中“=”表示一步
15、推导。我们称xy直接推导出xy,或xy直接产生xy。若从反方向看,则称xy直接归约到xy。,直接推导,例如有文法 1):=2):=|3):=0|1|2|3|4|5|6|7|8|9对符号串利用规则1可直接推导出:=对符号串利用规则2可直接推导出:=对符号串利用规则3可直接推导出2:=2 将上述三个推导连接起来,可得如下推导过程:=2在这个推导过程中,直接推导出,直接推导出,直接推导出2。,推导,如果存在一直接推导序列0=2=n,其中n0,那么我们说 0产生n或n归约到 1,并记作0=+n,推导长度为n。如果有0=+n 或0=n,即n 0,则记作0=*n。例如,从开始,分别利用规则1、2、2、3、
16、3,可产生如下推导过程:=2=23这个推导过程可记作:=+23,其推导长度n=5,表示产生23,或23归约到。而从到的推导,无须使用任何规则,可记作:=*,其推导长度n=0。,规范推导,规范推导也叫最右推导,即每步推导只变换最右边的非终结符号。其形式定义为:对于直接推导xy=xy来说,如果y只包含终结符号或为空符号串,那么就把这种推导称为规范推导或最右推导(如果只包含终结符号或为空符号串,则为最左推导),且记作:xUy=|=xuy,其中y Vt*。如果推导0=+n的每一步都是规范的,那么推导0=+n称为规范的,且记作:0=|=+n例如,有如下推导序列:=3=3=23该推导序列就是规范推导,且可
17、记作:=|=+23,2.4 句型和句子,推导产生的结果可能是句型,也可能是句子。假设文法G的识别符号为Z,记为GZ,其字汇表VtVn,则句型、句子的定义如下:1.如果Z=*x,且xV*,则称x是文法GZ的一个句型。2.如果Z=+x,且xVt*,则称x是文法GZ的一个句子。,句型是从识别符号开始经过0步或多步推导出的可由终结符号和非终结符号组成的符号串。而句子是从文法的识别符号推导出来的完全由终结符号组成的符号串。句子是特殊的句型,是完全由终结符号组成的句型。从文法的开始符号利用规则进行推导,一旦推导出句子,推导过程就不能再继续进行,因为句子中没有非终结符号。假设符号串是某一推导的结果,那么,是
18、句子的充分必要条件是从到的推导长度大于等于,即 Z=+x,而不可能是Z=*x。这是因为识别符号Z是非终结符号,而是终结符号串,显然,不可能与相等,所以不可能经过步推导就等于。,2.4 句型和句子,在句型中,有一类句型叫做规范句型,它是能用规范推导产生的句型。每一个句子都有一个规范推导,但并非每一个句型都有规范推导,只有那些能用规范推导产生的句型才是规范句型。例如,对于例2.3中的文法,有句型“2”,其推导过程如下:=2其中第步推导变换的不是最右边的非终结符号,不满足规范推导的要求,所以句型“2”不是规范句型。而对于句型“3”,其推导过程如下:=3=3其中的每一步推导都变换的是最右边的非终结符号
19、,所以,句型“3”是规范句型。,2.5 语言,一个文法GZ所产生的所有句子的集合L(GZ),称为文法GZ所定义的语言,即:L(GZ)=x|x Vt*,且Z=+x 一个文法所定义的语言是该文法的终结符号集合Vt上的所有符号串组成的集合的一个子集,该子集中的每个符号串都可从识别符号开始经过至少一步推导出来,即:L(GZ)Vt*例如,对例2.1的文法G,其语言只有下面4个句子:the monkey ate the banana the banana ate the monkey the monkey ate the monkey the banana ate the banana而例2.3中的文法,
20、其语言是所有无符号整数,句子是无穷的。文法和语言有如下关系:1)给定一个文法,就能从结构上唯一的确定其语言,即:GL(G)2)给定一种语言,能确定其文法,但不唯一,即:LG1 或G2 或。,2.5 语言,例例如,对例2.3的文法G,其语言为所有无符号整数组成的集合,即:L(G)=Vt+它是包括允许以“0”开头的所有正整数。例2.4,已知文法GZ为:1)ZaZb2)Zab 或写成 Z aZb|ab求该文法确定的语言。解:从识别符号开始推导,反复用规则1可得:Z=aZb=a2Zb2=an-1 Zbn-1最后用规则2可得:Z=aZb=a2Zb2=an-11 Zbn-1=anbn所以该文法确定的语言为
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 实现 02 文法 语言

链接地址:https://www.31ppt.com/p-4993779.html