【教学课件】第2章形式语言概述.ppt
《【教学课件】第2章形式语言概述.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第2章形式语言概述.ppt(97页珍藏版)》请在三一办公上搜索。
1、第二章形式语言概述,本章学习目标,形式语言由Chomsky于1956年提出,主要讨论语言和文法的数学机制以及语言和文法的分类。形式语言 的形成和发展,对编译原理和技术产生了重要的影响。本章主要内容是:文法和语言的形式定义文法的分类句型的分析和语法树,2.1字母表和符号串,任何一种语言都是由基本符号构成的。计算机高级语言作为计算机的语言,程序有语句构成,语句有一些基本符号构成,这些基本符号是保留字如main,if,then等、字母、数字和专用符号等。每个程序可以看成基本符号串。将所有的基本符号定义成一个基本符号集合,则语言可以看成是在这个基本符号集合上定义的,按一定的规则构成的一切基本符号串组成
2、的集合,给出如下的一些基本概念。,字母表,定义2.1 字母表是元素的非空有穷集合,字母表中的元素称为符号,因此字母表也称为符号表。高级语言如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,=,=,;(,),符号串,1符号串定义2.2 符号串是由字母表中的符号所组成的有穷序列。例2.1 某个字母表=a,b,c,z,if,then,else,main,1,2,3,4,9,0,=,=,;,则建立在上的符号串有:if(2+3=5)then a=6 el
3、se b=8;2符号串的长度符号串x中所包含的符号的个数称为符号串x的长度,记为|x|。例如字母表0,1,则|010110|=6。记为空串,长度为0。,3子字符串定义2.3 设有非空符号串u=xvy,其中x、v、y是符号串,且v,则称v为符号串u的子符号串。例题2.2设字母表=a,b,c,d,+,-,*,/,(,)上有符号串x=a+b*(c+d),则a、a+b*与(c+d)等都是x的子符号串,且其长度分别为a=1、a+b*=4与(c+d)=54符号串的头和尾定义2.4 如果z=xy是一个符号串,则x是z的头,而y是z的尾。如果y非空,则x是z的固有头,又称为真前缀;若x非空,则y是z的固有尾,
4、又称为真后缀。,例题2.3 假设字母表=a,b,c上的符号串z=abc,则、a、ab、abc都是z的头,且除abc外都是x的固有头;、c、bc、abc都是z 的尾,且除abc外都是z的固有尾。若只对符号串的头部感兴趣,记做z=x。若只对尾部感兴趣,则记为z=x。5符号串的运算定义2.5 符号串的连接运算:设 x与y是同一个字母表上的两个符号串,把y的各个符号相继写在x的符号后所得到的符号串称为x与y的连接,记为xy。,例题2.4设在字母表a,b,c上有符号串 x=ab与y=cba,则z=xy=abcba。这里x=2,y=3,z=5。对于字母表上的任何符号串x,都有x=x=x定义2.6 符号串的
5、方幂:设x是某个字母表上的符号串,把x自身连接n次,即z=xxx(n个x),称为符号串x的n次方幂,记为z=xn。例如,x=ab则x3=ababab,符号串集合,1符号串集合的定义定义2.6 若集合A中一切元素都是某字母表上的符号串,则称A是该字母表上的符号串的集合。字母表上的符号串的集合通常用大写字母来表示A、B、C、表示。例题2.5 设某个字母表a,b,c,d上有两个符号串的集合记为A=a,bc,B=abc,cd,ab,2符号串集合的运算定义2.7 两个符号串集合A和B的乘积AB定义为:AB=xyxA,且yB例题2.6 设A=a,b,B=c,d,e 则AB=ac,ad,ae,bc,bd,b
6、e对于任何空集合,都有A=A=A类似于符号串的方幂,可以定义符号串集合的方幂,特别地定义字母表A的方幂为:A0=,A1=A,An=An-1A(n0),3字母表的闭包与正闭包的运算设有字母表A,由它做方幂A0,A1,A2,An,。A的闭包定义如下:定义 2.8 A的闭包A*=A0A1 A2 An,其中,An(n=0,1,2,3,)中所有的符号串的长度为n,因此字母表A的闭包 A*为字母表上一切长度为n的符号串所组成的集合。如果不允许包含空串,则得到字母表A的正闭包。定义2.9 A的正闭包 A+=A1 A2 An显然,A*=A0 A+,且A+=AA*=A*A。,例题2.7 设字母表=a,b,c,依
7、次写出长度为1、2的符号串,可得到 的正闭包+:+=a,b,c,aa,ab,ac,bb,bc,在+上添入空串即得*。说明:根据闭包和正闭包的定义,则有+=*=*由于一个字母表的正闭包包含了该字母表中的符号所能组成的一切符号串,而语言是该字母表上某个符号串的集合,因此,在某个字母表上的语言是该字母表上正闭包的子集,且是真子集。对于C语言,可以说,C语言是基本符号集合的正闭包的真子集。,2.2 文法的定义及其分类,什么是文法,文法的直观概念是,文法作为一种工具,不仅严格地定义句子的结构,也是为了用适当条数的规则把语言的全部句子描述出来,是以有穷的集合刻划无穷的集合的工具。,文法的形式定义,1重写规
8、则定义2.10重写规则,也叫产生式规则,或称为生成式,是形如或:的(,)有序对,其中,是某个字母表V+中的一个元素,是V*中的一个元素。称为规则的左部,称为规则的右部。例如 AB读作“A定义为B”,也就是说它是一条关于A的规则(产生式)。2文法定义2.11 文法G是一个四元组,G=(VN,VT,P,S),其中,VN、VT分别是非空有限的非终结符号集和终结符号集,VNVT=,P是产生式的集合,SVN 称为文法的识别符号或开始符号。例题2.8在程序设计语言中,假设我们定义标识符的命名规则为字母a、b、c开头的,字母a、b、c和数字1、2、3的序列。命名规则为:,abc123,我们一般用大写字母代表
9、左边的非终结符,设N 代表,D代表,L代表,则定义标识符的文法是:G=(VN,VT,P,N)其中,VN=N,L,DVT=a,b,c,1,2,3P为产生式的规则:NL,NNL,NND,La,Lb,Lc,D1,D2,D3S 是开始符号,为N.关于产生式的规则说明一点,即若A,A,A可写成A|。“|”读做“或者”。上面的产生式规则可以改写为:,P为产生式的规则:NL|NL|NDLa|b|cD1|2|3,文法的分类,自从乔姆斯基(Chomsky)于1956年建立形式语言的描述以来,把文法分成四种类型,即0型、1型、2型和3型文法。0型文法(短语文法)设G=(VN,VT,P,S),如果它的每个产生式是这
10、样一种结构:(VNVT)+,且至少含有一个非终结符,而(VNVT)*,则称G是一个0型文法。0型文法又称短语文法,它的能力相当于一个图灵机。例如,A,1型文法(上下文有关文法)设G=(VN,VT,P,S)为一文法,若P中的每一个产生式均满足,仅仅S除外,则文法G是1型文法或上下文有关文法。所谓上下文有关文法即:=1A2,=12,符号串1 和2可以认为是上下文,A只有出现在上下文之间中,才可以被符号串替代,成为=1A2=12因此,1型文法又称为上下文有关文法。,32型文法(上下文无关文法)设G=(VN,VT,P,S),若P中的每个产生式满足:是一个非终结符,(VNVT)*,则此文法称为2 型文法
11、或上下文无关文法。有时将2型文法的产生式表示为形如:A,其中AVN。也就是当用取代非终结符A时,与A所在的上下文无关。上下文无关文法有足够的能力描述现今的程序设计语言。,例题2.102 型文法G=(VN,VT,P,N)其中,VN=N,DVT=0,1,2,3,4,5,6,7,8,9P=NNDD,D0123456789该文法描述的符号串的集合是整数。,3型文法(右线性文法或正规文法)对2型文法的产生式做进一步的限制,限制产生式右部是单一终结符或单一终结符跟着单一非终结符,即:Aa AaB则称该文法为3型文法,又称为右线性文法或正规文法,其中A、BVN,aVT.例题2.113型文法 G=(VN,VT
12、,P,S)其中,VN=S,A,BVT=0,1P=S011A0B,A1A0B,B010B该文法产生的是二进制整数。,文法举例,例题2.15正规文法G=(VN,VT,P,A)其中,VN=A,B,C,DVT=x,y,z P=AxByCBzB yyC CxDD yDx例题2.162型文法G=(VN,VT,P,E)其中,VN=E,T,FVT=+,*,(,),iP=EE+T|T,TT*F|T,F(E)|i该文法能推出具有乘和加运算的算术表达式。,例题2.17正规文法G=(VN,VT,P,S)其中VN=S,A,B,G,H,VT=d,+,P=SdB|+A|A|.GAdB|.GBdB|.H|dGdHHdH|d其
13、中,d代表十进制数字。根据以上我们对文法的定义我们不难发现3型文法类是2型文法类的特殊情况,2型文法类是1型文法类的特殊情况。每一类文法都是在前一类文法的基础上加上一些限定规则而产生的。因此,四类文法产生的语言就会有如下关系:3型语言2型语言1型语言0型语言,各类文法与自动机的关系,语言是句子的集合,而句子又是由字母表上的符号串组成的。对于程序设计语言来讲,程序由语句构成,语句则有数字、标识符、保留字、数字等单词构成。因此对程序的编译事实上就是对句子进行检查。方法就是编写一个检查过程,运行该过程来判断编写的程序是否合法。合法就回答“正确”,不合法就回答“不正确”,并且将错误报出。,编写该过程的
14、算法,抽象成一个数学模型,该数学模型称为自动机。将算法对程序的合法与否的检查转化为数学模型对程序中的句子的识别过程。自动机给出了用有穷方式来描述潜在的无穷的语言的另一种手段。自动机能够识别的句子的集合称为语言。对于每一类Chomsky语言类,正好有一类自动机与它相对应。,10型语言与图灵机,图灵机是识别0型文法的识别装置。图灵机被引进作为描述过程的数学模型,过程的直观概念被看成是能机械实现的有穷指令的序列。图灵机的基本模型如图2-1所示。它有一个有限控制器、一个被分成若干单元的输入带和一个一次读入一个单元的读头组成,21型文法与线性界限自动机相对应,。上下文有关文法所对应的自动机称为线性界限自
15、动机。其功能是能够识别上下文无关语言,缩写为LBA。,32型语言与下推自动机,2型语言或上下文无关语言对应的自动机称为下推自动机。它是识别上下文无关语言的数学模型。缩写为PDA。,3型语言与有穷状态自动机,3型语言或正则语言所对应的自动机称为有穷自动机。缩写为FA。无论那种自动机都分为确定性和非确定性之分,文法分类的意义,一个文法实际上是某种语言的一个简明、确切的描述,它表示了该语言中所允许的一类语法结构。从一个文法能推导出多个终结符的句子。但是知道了如何去构造属于某一个语言的一个合法串只是问题的一个方面。同时我们还要有能力判定一个串是否合法。也就是说,我们需要确定这个给定串的推导序列。如果从
16、文法出发找不到这个推导序列,则该串就是非法的。以上四类文法都分别与一个相当简单但功能很强的自动机相关。右线性文法可由一种有穷状态自动机识别。,2.3文法产生的语言和句型的语法树,推导和规范推导为了定义文法产生的语言,我们必须给出推导的概念。推导分为三大类:直接推导、,长度为n(n1)的推导和长度为n(n0)的推导。定义2.12如是文法G=(VN,VT,P,S)的规则(或说是P中的一产生式),,(VNVT)*,则称符号串为符号串应用产生式所得到的直接推导。记为。,定义2.13推导长度大于0的推导:如果 对于符号串v 与w存在一个直接推导序列u0 u1u2u3un(n0)其中u0=v与un=w,则
17、称符号串v推导出w或称w归约到v,记作v*w,称这个直接推导序列是长度为n的推导,且称符号串w是相对于符号串v的一个字。定义2.14推导长度大于等于0的推导:如果对于符号串v和w,v=w或v=w,则记作v*w,称符号串v广义推导到符号串w,或称w广义归约到v。,例2.18根据文法,考虑以C语言中的无正负号整数作为识别符号的文法。(1)(2)|(3)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 语言的合法数据。每一步推导都是直接推导。可以
18、表示为2634,定义2.15如果在推导的任何一步,其中、是句型,都是对中的最左非终结符进行替换,则称这种推导为最左推导。定义2.16如果在推导的任何一步,其中、是句型,都是对中的最右非终结符进行替换,则称这种推导为最右推导。定义2.17在形式语言中,最右推导常称为规范推导,由规范推导所得的句型称为规范句型。,定义2.15如果在推导的任何一步,其中、是句型,都是对中的最左非终结符进行替换,则称这种推导为最左推导。定义2.16如果在推导的任何一步,其中、是句型,都是对中的最右非终结符进行替换,则称这种推导为最右推导。定义2.17在形式语言中,最右推导常称为规范推导,由规范推导所得的句型称为规范句型
19、。,例2.19给出了下列文法G(1)(2)|(3)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.18句型:设GS是一个文法,如果符号串x是从开始符号S推导得到的,即有S=+x,xV+,则称符号串x是该文法G的一个句型。定义2.19句子:GS是一个文法,如果符号串x是从开始符号S推导得到的,即
20、有S=+x,并且xVT,则称该符号串为该文法的一个句子。实质上,句子是句型的特殊情况,句子是由终结符组成,而句型是有终结符和非终结符组成。定义2.20语言GS是一个文法,文法G产生的语言L(G)=x|S=x,并且xVT,即文法的语言是文法所有句子的集合。,例2.20 2型文法G=(VN,VT,P,S)其中,VN=SVT=0,1P=S0S1,S01该文法产生的语言是L(G)=0n1n,其中n1,例2.21 文法GS定义如下Sif E then S|if E then S else S|while E do S|begin L end|A该文法产生的语言就是程序设计语言中的单分支、双分支、循环语句
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 形式语言 概述

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