形式语言自动机上下文无关文法与下推自动机(三).ppt
《形式语言自动机上下文无关文法与下推自动机(三).ppt》由会员分享,可在线阅读,更多相关《形式语言自动机上下文无关文法与下推自动机(三).ppt(25页珍藏版)》请在冰豆网上搜索。
4.3Chomsky范式和范式和Greibach范式范式nChomsky范式定义:
n2型文法型文法G(N,T,P,S),),若生成式形式都若生成式形式都是是ABC和和Aa,A、B、CN,aT,则则G是是Chomsky范式。
若范式。
若L(G),),则则S是是P的一的一个生成式,但个生成式,但S不能在任何其它生成式的右边。
不能在任何其它生成式的右边。
n每个上下文无关文法都具有等效的每个上下文无关文法都具有等效的CNF(定理定理4.3.1)1CollegeofComputerScience&Technology,BUPTCNF的构成步骤的构成步骤1.用算法用算法1、2、3、4消除消除生成式、无用符号、单生成式生成式、无用符号、单生成式2.对生成式对生成式AD1D2Dnn2若若DiT,则引入新生成式则引入新生成式BiDi,Bi是新非终结符是新非终结符若若DiN,则令则令BiDi,从而将原生成式变化为从而将原生成式变化为AB1B2Bnn2当当n2时,再将其变为时,再将其变为AB1C1,C1B2C2,C2B3C3,Cn1Bn1BnCi是新引入的非终结符。
是新引入的非终结符。
定理证明定理证明自学自学2CollegeofComputerScience&Technology,BUPTCNF的构成例的构成例例例:
(书书P148例例1)设设G(A,B,S,a,b,P,S)是无是无、无循环、无无循环、无无用符号、无单生成式的文法。
无用符号、无单生成式的文法。
P:
SaABBAABBBaBASb求等效的求等效的CNFG1解解:
SBASBA,AaAa,BAS,BbBAS,Bb已是已是CNFCNF加入到加入到PP11中中对对SSaABaAB,将其变换为将其变换为SCSCaaCC11,CCaaaa,CC11ABAB将将ABBBABBB变换为变换为ABCABC22,CC22BBBB.3CollegeofComputerScience&Technology,BUPTCNF的构成例的构成例例例:
22型文法型文法GG(AA,BB,SS,aa,bb,PP,SS)P:
SP:
SbAbAaBaBAAbAAbAAaSaSaBaBaBBaBBbSbSbb求等效的求等效的CNFCNF解解:
SSCCbbAACCaaBB,增加增加CCbbbb,CC22aaAACCbbDDCCaaSSaa,增加增加DAADAABBCCaaEECCbbSSbb,增加增加EBBEBB4CollegeofComputerScience&Technology,BUPTGreibachGreibach范式范式nGreibach范式(GNF)定义:
n2型文法G(N,T,P,S),若生成式的形式都是Aa,AN,aT,N*,且G不含生成式,则称G为Greibach范式,记为GNF。
n任何2型文法都具有等效的GNF(定理4.3.2)5CollegeofComputerScience&Technology,BUPTGNF的构成步骤的构成步骤1.将将22型文法变换为型文法变换为CNFCNF。
(。
(AaAa,ABCABC形式)形式)2.2.将非终结符排序将非终结符排序,再进行代换。
再进行代换。
对形如对形如AAiiAAjj(jijili)。
)。
3.3.消左递归。
消左递归。
对最高的对最高的AAnnAAnn进行变换,使进行变换,使AAnn生成式变为终结符开头。
生成式变为终结符开头。
4.4.回代。
回代。
将将AAnn生成式回代入生成式回代入AAnn11生成式,使其右部首符为终结符,生成式,使其右部首符为终结符,将将AAnn11生成式回代入生成式回代入AAnn22生成式,使其右部首符为终结符生成式,使其右部首符为终结符5.5.最最后后将将消消直直接接左左递递归归时时引引入入的的AA11、AA22、AAnn生生成成式式右右部部进进行行代换。
使其首符变为终结符。
代换。
使其首符变为终结符。
6CollegeofComputerScience&Technology,BUPTGNF的构成例的构成例例例:
(书书P149例例2)设已有设已有CNF:
ABCABC,BCAbBCAb,CABaCABa,将其变换为将其变换为GNF。
解解:
按其非终结符排列为按其非终结符排列为AA、BB、CC,AA是低位,是低位,CC是高位。
是高位。
、中,右部首符序号高于左部的非终结符中,右部首符序号高于左部的非终结符无需变换。
无需变换。
对对,需要变换,需要变换,将将代入代入得得CBCBaCBCBa,仍需变换,仍需变换,将将代入代入得得CCACBCCACBbCBbCBaa7CollegeofComputerScience&Technology,BUPTGNF的构成例的构成例对上述变换后所得结果消直接左递归对上述变换后所得结果消直接左递归对对CCCCACBACBbCBbCBaa变换为变换为111122CC112211CC22CCCC1111CC即即CCbCBbCBaabCBCbCBCaCaCCCACBACBCACBACBC8CollegeofComputerScience&Technology,BUPTGNF的构成例的构成例回代回代将将CC的生成式的生成式回代入回代入BB的生成式的生成式BBCCAbAb被变换为被变换为BBbCBAbCBAaAaAbCBCbCBCAAaCaCAbAb将新的将新的BB生成式生成式回代入回代入AA的生成式的生成式AABBCC被变换为被变换为AAbCBACbCBACaACaACbCBCbCBCACACaCaCACACbCbC再将新的再将新的AA生成式生成式代入新引入的代入新引入的CC生成式生成式CCAACBCBAACBCCBC被变换为被变换为(略)略)注意:
新引入的注意:
新引入的AAii相当于排在最低位。
相当于排在最低位。
9CollegeofComputerScience&Technology,BUPT4.4下推自动机(下推自动机(PDA)n主要内容nPDA的基本概念。
nPDA的构造举例。
n用终态接受语言和用空栈接受语言的等价性。
nPDA是上下文无关语言的接收器。
n重点nPDA的基本定义及其构造nPDA与上下文无关语言等价n难点n根据PDA构造上下文无关文法。
10CollegeofComputerScience&Technology,BUPT问题的引出问题的引出类似于anbn的语言无法由一般的有限自动机识别。
有限有限状态识别器中必须有无限个无限个状态(不允许不允许!
)!
)需要需要扩充机器的能力。
充机器的能力。
aaaaabbbbbb识别anbn的无限状态自动机11CollegeofComputerScience&Technology,BUPT下推自动机的结构下推自动机的结构n扩充办法:
引入一个下推栈足够简单可解决许多有意义的问题,如识别有效的程序n下推自动机PDA(PushDownAutomaton)由一条输入带,一个有限状态控制器和一个下推栈组成nPDA的动作在有限状态控制器的控制下根据它的当前状态、栈顶符号、以及输入符号作出相应的动作。
有时,不需要考虑输入符号(空转移)。
n栈:
后进先出表对栈的操作(压入、弹出)均在栈顶进行。
12CollegeofComputerScience&Technology,BUPT下推自动机的定义下推自动机的定义nNPDA的形式定义:
七元组M(Q,T,q0,z0,F)其中:
Q:
有限控制器的状态集合T:
有限输入字母表:
有限下推栈字母表:
Q(T)Q*当前状态当前输入当前栈顶符号有限子集q0:
初始状态,q0Qz0:
下推栈的起始符号,z0F:
终态集合,FQ13CollegeofComputerScience&Technology,BUPT下推自动机的下推自动机的转换函数转换函数n转换函数(q,a,Z)(p,)q、pQ,aT,Z,*表示在状态q,输入字符a,且栈顶符Z时,转入状态p,栈顶符Z由代替,同时读头右移一格。
n约定:
的最左符号放在栈顶。
表示下推栈的顶符被弹出如(q,a,Z)(p,)(q,Z)(p,)称为转换。
即不考虑当前输入字符,读头不移动,但控制器状态可以改变且栈顶符可以调整。
14CollegeofComputerScience&Technology,BUPT下推自动机的下推自动机的格局格局n格局:
用于描述PDA的瞬时工作状况PDA格局(q,)其中*,*q当前状态待输入串(时,表示输入字符已读完)下推栈中的内容(时表示栈已弹空)n(q,a,Z)(p,r)用格局可表示为(q,a,Z)(p,r)对PDA而言,初始格局为(q0,z0)终止格局为(q,)qF,*15CollegeofComputerScience&Technology,BUPT下推自动机接受的下推自动机接受的语言语言n两种接受方式n终态接受:
L(M)=(q0,z0)*(q,),qF,*n空栈接受:
L(M)=(q0,z0)*(q,),qQ(当空栈接受时,终止状态可为Q中任意状态,换言之,终止状态集是与状态无关的。
此时,取F)16CollegeofComputerScience&Technology,BUPT下推自动机例下推自动机例n例:
构造PDAM,接受语言L(M)=anbnn1n思路:
把输入的字符a入栈,当开始输入b时,从栈中弹出a,若a、b个数相同,则到达终态,且栈中空。
n解:
设PDAM(Q,T,q0,z0,F),Qq0,q1,q2q0初态;接受aq1状态;接受bq2状态;输入回到q0Ta,b,=z0,a,F=q0定义为:
(q0,a,z0)=(q1,az0)(q1,a,a)=(q1,aa)(q1,b,a)=(q2,)(q2,z0)=(q0,)(q2,b,a)=(q2,)17CollegeofComputerScience&Technology,BUPT下推自动机的图形表示下推自动机的图形表示n上例的图形表示:
qa,Z/p表示(p,)(q,a,Z)注:
栈空就不能再移动了a,z0/az0b,a/a,a/aab,a/,z0/q0q2q1用格局表示aabb的识别过程:
(q0,aabb,z0)(q1,abb,az0)(q1,bb,aaz0)(q2,b,az0)(q2,z0)(q0,)终态接受终态接受18CollegeofComputerScience&Technology,BUPT若对于每个输入字符,其后续状态都是确定的,就是DPDA(如前例)。
nDPDA必须满足下述二个条件之一:
对qQ,z,aT有(q,a,z)最多含一个后续选择且(q,Z)或者(q,a,z)且(q,z)最多含一个元素。
这两个限制防止了在动作和包含一个输入符号的动作之间做选择的可能性(即在同样状态,同样栈顶符号下最多只能有一个选择。
)确定的下推自动机(确定的下推自动机(DPDADPDA)19CollegeofComputerScience&Technology,BUPT例:
例:
构造PDAM,接受语言L(M)=cTa,b*.解题思路:
解题思路:
从状态q0接受句子,将输入存到栈中,状态不变,直到看到中心标记c。
当达到c时,将状态变为q1,栈不变。
将输入与下推栈匹配,状态不变,退栈,直至栈空。
确定的下推自动机(确定的下推自动机(DPDADPDA)q0c,Z/Zq1,z0/qfa,z/aza,a/b,z/bzb,b/该自动机的形式定义:
见书P15720CollegeofComputerScience&Technology,BUPT例:
例:
构造PDAM,接受语言L(M)=Ta,b*.(