《形式语言概述》PPT课件.ppt
《《形式语言概述》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《形式语言概述》PPT课件.ppt(81页珍藏版)》请在三一办公上搜索。
1、第二章形式语言概述,本章学习目标,形式语言由Chomsky于1956年提出,主要讨论语言和文法的数学机制以及语言和文法的分类。形式语言 的形成和发展,对编译原理和技术产生了重要的影响。本章主要内容是:文法和语言的形式定义文法的分类句型的分析和语法树,字母表,字母表是元素的非空有穷集合,字母表中的元素称为符号,因此字母表也称为符号表。高级语言如C语言的字母表是由字母、数字、特殊符号和一些专用符号构成。字母表可以用表示例:=a,b,=0,1,=0,1,2,3,4,5,6,7,8,9,=a,b,c,z,if,then,else,main,1,2,3,4,9,0,=,=,;(,),2.1.2 符号串,
2、(1)符号语言中最基本的不可再分的单位(2)符号串符号串是由字母表中的符号所组成的有穷序列。符号串由小写x,y,z表示例:某个字母表=a,b,c,z,if,then,else,main,1,2,3,4,9,0,=,=,;,则建立在上的符号串有:if(2+3=5)then a=6 else b=8;空串是不含任何符号的串,记作(3)符号串的长度符号串x中所包含的符号的个数称为符号串x的长度,记为|x|。例:字母表0,1,则|010110|=6。空串的长度为0。,(4)子字符串设有非空符号串u=xvy,其中x、v、y是符号串,且v,则称v为符号串u的子符号串。例:设字母表=a,b,c,d,+,-,
3、*,/,(,)上有符号串x=a+b*(c+d),则a、a+b*与(c+d)等都是x的子符号串,且其长度分别为a=1、a+b*=4与(c+d)=5(5)符号串的头和尾如果z=xy是一个符号串,则x是z的头,而y是z的尾。如果y非空,则x是z的固有头,又称为真前缀;若x非空,则y是z的固有尾,又称为真后缀。例 假设字母表=a,b,c上的符号串z=abc,则、a、ab、abc都是z的头,且除abc外都是z的固有头;、c、bc、abc都是z 的尾,且除abc外都是z的固有尾。,若只对符号串的头部感兴趣,记做z=x。若只对尾部感兴趣,则记为z=x。,符号串的运算,连接(乘积)运算设 x与y是同一个字母表
4、上的两个符号串,把y的各个符号相继写在x的符号后所得到的符号串称为x与y的连接,记为xy。例:设在字母表a,b,c上有符号串 x=ab与y=cba,则z=xy=abcba。这里x=2,y=3,z=5。对于字母表上的任何符号串x,都有x=x=x注:xy!=yx符号串的方幂设x是某个字母表上的符号串,把x自身连接n次,即z=xxx(n个x),称为符号串x的n次方幂,记为z=xn。例:x=ab x3=ababab,2.1.3 符号串集合,符号串集合集合A中一切元素都是某字母表上的符号串,则称A是该字母表上的符号串的集合。字母表上的符号串的集合通常用大写字母来A、B、C、表示。例:设某个字母表a,b,
5、c,d,符号串集合A,B A=a,bc,B=abc,cd,ab,乘积两个符号串集合A和B的乘积AB定义为AB=xyxA,且yB例:设A=a,b,B=c,d,e 则AB=ac,ad,ae,bc,bd,be对于任何空集合,都有A=A=A方幂类似于符号串的方幂,可以定义符号串集合的方幂,特别地定义字母表A的方幂为:A0=,A1=A,An=An-1A(n0),符号串集合的运算,字母表的闭包与正闭包的运算闭包设有字母表A,A的闭包定义如下:A*=A0A1 A2 An,其中,An(n=0,1,2,3,)中所有的符号串的长度为n,因此字母表A的闭包 A*为字母表上一切长度为n的符号串所组成的集合。注:闭包可
6、以看作由A上符号组成的所有串的集合(包括空串)正闭包如果不允许包含空串,则得到字母表A的正闭包。A的正闭包 A+=A1 A2 An 注:正闭包可以看作由A上符号组成的所有串的集合(不包括空串)语言字母表上按照某种规则形成的某个符号串的集合,所以,语言是该字母表上正闭包的子集,例:设字母表=a,b,c,依次写出长度为1、2、3的符号串,可得到 的正闭包+:+=a,b,c,aa,ab,ac,bb,bc,aaa,aab,aac,abb,abc,baa,在+上添入空串即得*。,2.2 文法的定义及其分类,什么是文法?描述语言的语法结构的形式规则,严格地定义句子的结构,用适当条数的规则把语言的全部句子描
7、述出来,是以有穷的集合刻划无穷的集合的工具。,:=:=|:=我|你|他:=:=是|学习:=|,我是大学生的推导过程:=我=我=我是=我是=我是大学生,2.2.2 文法的形式定义(1),非终结符出现在规则的左部,用括起来,表示一定语法概念的词,用VN表示终结符语言中不可再分割的字符串(包括单个字符组成的串)用VT表示V=VN U VT开始符号表示所定义的语法范畴的非终结符又称为识别符号开始符号用S表示,2.2.2 文法的形式定义(2),重写规则也叫产生式规则,或称为生成式,是形如或:=的(,)有序对,其中,是某个字母表V+中的一个元素,是V*中的一个元素。称为规则的左部,称为规则的右部。例:AB
8、读作“A定义为B”,也就是说它是一条关于A的规则(产生式)。文法文法G是一个四元组,G=(VN,VT,P,S),其中,VN、VT分别是非空有限的非终结符号集和终结符号集,VNVT=,P是产生式的集合,SVN 为文法的识别符号或开始符号。,例:在程序设计语言中,假设我们定义标识符的命名规则为字母a、b、c开头的,字母a、b、c和数字1、2、3的序列。命名规则为:abc123,我们一般用大写字母代表左边的非终结符,设N 代表,D代表,L代表,则定义标识符的文法是:G=(VN,VT,P,S)其中,VN=N,L,D,VT=a,b,c,1,2,3P为产生式的规则:NL,NNL,NND,La,Lb,Lc,
9、D1,D2,D3S 是开始符号,为N注:产生式的规则说明一点,即若A,A,A可写成A|。“|”读做“或者”。上面的产生式规则可以改写为:NL|NL|NDLa|b|cD1|2|3,2.2.3 文法的分类,乔姆斯基(Chomsky)于1956年建立形式语言的描述以来,把文法分成四种类型,即0型、1型、2型和3型文法。0型文法(短语文法)设G=(VN,VT,P,S),如果它的每个产生式是这样一种结构:(VNVT)+,且至少含有一个非终结符,而(VNVT)*,则称G是一个0型文法。0型文法又称短语文法,它的能力相当于一个图灵机。例如,A图灵机是识别0型文法的识别装置0型文法是对产生式限制最少的文法;对
10、0型文法产生式的形式作某些限制,可得到其他类型文法的定义。,1型文法(上下文有关文法)设G=(VN,VT,P,S)为一文法,若P中的每一个产生式均满足,仅仅S除外,则文法G是1型文法或上下文有关文法。所谓上下文有关文法即:=1A2,=1B2,符号串1 和2可以认为是上下文,A只有出现在上下文之间中,才可以被符号串B替代,成为=1A2=1B2因此,1型文法又称为上下文有关文法。能够识别上下文无关语言的自动机称为线性界限自动机。缩写为LBA注:1型文法意味着,对非终结符进行替换时务必考虑上下文,并且,一般不允许替换成,除非是开始符号产生,2型文法(上下文无关文法)设G=(VN,VT,P,S),若P
11、中的每个产生式满足:是一个非终结符,(VNVT)*,则此文法称为2 型文法或上下文无关文法。有时将2型文法的产生式表示为形如:A,其中AVN。也就是当用取代非终结符A时,与A所在的上下文无关。上下文无关文法有足够的能力描述现今的程序设计语言。识别上下文无关语言的自动机称为下推自动机。它是。缩写为PDA。例:2 型文法G=(VN,VT,P,N)其中,VN=N,DVT=0,1,2,3,4,5,6,7,8,9P=NNDD,D0123456789注:该文法描述的符号串的集合是整数。,3型文法(右线性文法或正规文法)对2型文法的产生式做进一步的限制,限制产生式右部是单一终结符或单一终结符跟着单一非终结符
12、,即:Aa,AaB则称该文法为3型文法,又称为右线性文法或正规文法,其中A、BVN,aVT.识别3型语言或正则语言的自动机称为有穷自动机。缩写为FA。例:3型文法 G=(VN,VT,P,S)其中,VN=S,A,BVT=0,1P=S011A0B,A1A0B,B010B注:该文法产生的是二进制整数。,2.2.4 文法举例,例:1型文法G=(VN,VT,P,A)VN=S,X,Y,Z VT=x,y,z P=S xSYZxYZxYxyyYyyyZ yzZY YZzZ zz,例:2型文法G=(VN,VT,P,E)VN=E,T,F,VT=+,*,(,),iP=EE+T|T,TT*F|T,F(E)|i 注:该
13、文法能推出具有乘和加运算的算术表达式。,例:正规文法G=(VN,VT,P,S)其中VN=S,A,B,G,H,VT=d,+,P=SdB|+A|A|.GAdB|.GBdB|.H|dGdHHdH|d其中,d代表十进制数字。根据以上我们对文法的定义我们不难发现3型文法类是2型文法类的特殊情况,2型文法类是1型文法类的特殊情况。每一类文法都是在前一类文法的基础上加上一些限定规则而产生的。因此,四类文法产生的语言就会有如下关系:3型语言2型语言1型语言0型语言,2.2.6 文法分类的意义,一个文法实际上是某种语言的一个简明、确切的描述,它表示了该语言中所允许的一类语法结构。从一个文法能推导出多个终结符的句
14、子。但是知道了如何去构造属于某一个语言的一个合法串只是问题的一个方面。同时我们还要有能力判定一个串是否合法。也就是说,我们需要确定这个给定串的推导序列。如果从文法出发找不到这个推导序列,则该串就是非法的。程序设计语言的词法分析属于正规文法,与局部语法相关的部分属于上下文无关文法,与全局语法和语义有关的部分属于上下文有关文法。,2.3 文法产生的语言和句型的语法树,推导推导是从开始符号开始,通过使用产生式的右部取代左部,最终能产生语言的一个句子的过程。最左(右)推导:每次使用一个规则,以其右部取代符号串的最左(右)非终结符。注:最左推导和最右推导称为规范推导:归约归约是推导的逆过程,即,从给定的
15、源语言的句子开始,通过规则的左部取代右部,最终达到开始符号的过程。最左(右)归约是最右(左)推导的逆过程。注:最左归约和最右归约称为规范归约。,文法产生的语言和句型的语法树(续),推导和规范推导推导分为三大类:直接推导、,长度为n(n1)的推导+和长度为n(n0)的推导*。直接推导如是文法G=(VN,VT,P,S)的规则(或说是P中的一产生式),,(VNVT)*,则称符号串为符号串应用产生式所得到的直接推导。记为。,推导长度大于0的推导如果对于符号串v 与w存在一个直接推导序列 u0 u1u2u3un(n0)其中u0=v与un=w,则称符号串v推导出w或称w归约到v,记作v+w,称这个直接推导
16、序列是长度为n的推导。推导长度大于等于0的推导如果对于符号串v和w,v=w或v=w,则记作v*w,称符号串v广义推导到符号串w,或称w广义归约到v。,例:根据文法,考虑以C语言中的无正负号整数作为识别符号的文法。|0|1|2|3|4|5|6|7|8|9VT=0,1,2,3,4,5,6,7,8,9 VN=,判断数据2634是否是C语言合法的数据?给出数据2634的推导。4434346342634由此可见,2634是C 语言的合法数据。每一步推导都是直接推导。可以表示为=2634,最左推导 如果在推导的任何一步,其中、是句型,都是对中的最左非终结符进行替换,则称这种推导为最左推导。最右推导 如果在
17、推导的任何一步,其中、是句型,都是对中的最右非终结符进行替换,则称这种推导为最右推导。规范推导在形式语言中,最右推导常称为规范推导,由规范推导所得的句型称为规范句型。,例:给出了下列文法G:|0|1|2|3|4|5|6|7|8|9VT=0,1,2,3,4,5,6,7,8,9 VN=,判断数据2634是否是C语言合法的数据?(1)用最右推导,每次用产生式的规则替换最右边的非终结符,推导过程如下:4434346342634,(2)用最左推导,每次直接推导都替换最左边的非终结符,推导过程如下:2262632634,2.3.2 句型、句子和语言,句型设GS是一个文法,如果符号串x是从开始符号S推导得到
18、的,即有S=*x,xV+,则称符号串x是该文法G的一个句型。句子GS是一个文法,如果符号串x是从开始符号S推导得到的,即有S=+x,并且xVT,则称该符号串为该文法的一个句子。注:实质上,句子是句型的特殊情况,句子是由终结符组成,而句型是有终结符和非终结符组成。语言:GS是一个文法,文法G产生的语言L(G)=x|S=*x,并且xVT,即文法的语言是文法所有句子的集合。,句型、句子和语言(续),文法规则的递归定义非终结符的定义中包含了非终结符自身。注:使用文法的递归定义要谨慎,要有递归出口,否则,可能永远产生不出句子。,例:字母表A=0,1文法:|0|1 再如:字母表A=0,1 0|1,2.3.
19、3 语法树,在自然语言中,句子结构可以借助一种树形表示进行分析。如下面的句子:They are students and teachers of the Physics Department。对该句子的结构进行分析,其树型结构如图2-3所示,由此可以看出,该句子是由主语、系词和表语组成,是一个语法正确的句子。,在自然语言中,可以通过树型表示直观地分析句子的结构;在形式语言中,我们提到了句型、推导的概念,在证明某个符号串是否是某个文法的句型时,采用从文法开始符号推导的方法,这个推导过程可以用语法树直观的表示出来。语法树也称为推导树,其定义如下:,给定文法G=(VN,VT,P,S),对于G的任何句
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 形式语言概述 形式语言 概述 PPT 课件
链接地址:https://www.31ppt.com/p-5583393.html