《形式语言与自动机》课件ch4.2.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《形式语言与自动机》课件ch4.2.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 形式语言与自动机 形式语言 自动机 课件 ch4
- 资源描述:
-
1、12023-5-22School of Computer Science,BUPT4.2 上下文无关文法的变换上下文无关文法的变换 nCFG 的简化的简化n消无用符号消无用符号n消消 产生式产生式n消单产生式消单产生式n对生成式形式进行标准化对生成式形式进行标准化22023-5-22School of Computer Science,BUPT生成式的标准形式生成式的标准形式n Chomsky范式(CNF-Chomsky Normal Form)生成式形式为ABC,Aa,A,B,CN,aT(后面将证明,每个上下文无关文法都有一个CNF文法)nGreibach范式(GNF)生成式形式为Aa,aT
2、,N*意义:对每个2型语言都可找到一个文法使产生式的右端都以终结符开始 中心思想:消除左递归.32023-5-22School of Computer Science,BUPT变换算法变换算法-消去无用符号消去无用符号 无用符号(无用符号(useless symbol)非生成非生成符号符号 不可达不可达符号符号 有用符号(有用符号(useful symbol)对于对于 CFG G=(N,T,P,S),称符号称符号 X N T 是是有用的有用的,当且仅当当且仅当 S X w,其中其中 w T*,,(N T)*.称符号称符号 X 是是生成生成符号符号(generating symbol),当且仅当
3、当且仅当 存在存在w T*,满足满足 X w.称符号称符号 X 是是可达可达符号符号(reachable symbol),当且仅当当且仅当 存在存在,(N T)*,满足满足 S X.42023-5-22School of Computer Science,BUPT 计算生成符号(计算生成符号(generating symbol)集集 计算可达符号(计算可达符号(reachable symbol)集集 消去非生成符号、不可达符号消去非生成符号、不可达符号消去无用符号消去无用符号 消去相关产生式消去相关产生式52023-5-22School of Computer Science,BUPT计算生成
4、符号集计算生成符号集思路思路 对于对于 CFG G=(N,T,P,S),可通过下列归纳可通过下列归纳步骤计算生成符号集合:步骤计算生成符号集合:基础基础 任何终结符任何终结符 a T 都是生成符号;都是生成符号;归纳归纳 如果有产生式如果有产生式 A ,其中其中 (N T)*的的每一个符号都是生成符号,则每一个符号都是生成符号,则 A 也是生成符号;也是生成符号;62023-5-22School of Computer Science,BUPT步骤步骤:(1)N 0=(赋为赋为)N 0为有用的非终结符集为有用的非终结符集(2)N=A|A且且T*N为非终结符集合为非终结符集合(3)如果如果N 0
5、N 则转则转(4),否则转否则转(6)(4)N 0=N(5)N=N 0 A|A且且(TN 0)*,转转(3)(6)N 1=N小结小结:算法算法1找出能推出终结符串的非终结符作为有找出能推出终结符串的非终结符作为有用符号用符号.算法算法1:找出有用非终结符找出有用非终结符 72023-5-22School of Computer Science,BUPT 一层层向外扩展,直至最外两层相等为止。所得集合一层层向外扩展,直至最外两层相等为止。所得集合即是算法即是算法1的有用符号。的有用符号。算法算法1:找出有用非终结符(图示)找出有用非终结符(图示)N N0 0=空=空 N=A|A 且 T*N=A|
6、A 且 T*A A1 1A A3 3A A2 2N=NN=N0 0B|B且(TN B|B且(TN)*B B2 2B B1 182023-5-22School of Computer Science,BUPT计算可达符号集计算可达符号集 思路思路 对于对于 CFG G=(N,T,P,S),可通过下列归可通过下列归纳步骤计算可达符号集合:纳步骤计算可达符号集合:基础基础 S 是可达符号;是可达符号;归纳归纳 如果如果 A 是可达符号,并且有产生式是可达符号,并且有产生式 A ,其中其中 (N T)*,则则 中的每一个符号都是可达中的每一个符号都是可达符号;符号;92023-5-22School o
7、f Computer Science,BUPT算法步骤算法步骤:(1)N 0=S(2)N=x|AN 0 且且Ax N 0 (N为有用符号集合为有用符号集合)(3)如果如果N 0N转转(4),否则转否则转(5)(4)N 0=N;转转(2)(继续迭代下去继续迭代下去)(5)N 0=N N T1=NT P1由由P内只含内只含N中符号的生成式组成中符号的生成式组成(即删去了从即删去了从S起不可达的符号起不可达的符号).算法算法2:找出有用符号找出有用符号(从从S可达的符号可达的符号)102023-5-22School of Computer Science,BUPT一层层外扩一层层外扩,找出从找出从S
8、可达的所有符号可达的所有符号(含非终结符和终结符含非终结符和终结符)算法算法2:找出从找出从S可达的符号可达的符号(图示)(图示)N N0 0=S=S N=x|AN 0 N=x|AN 0 且Ax N 0 且Ax N 0A A1 1A A3 3A A2 2NNC1C1C2C2112023-5-22School of Computer Science,BUPT消去非生成符号及不可达符号消去非生成符号及不可达符号 例例:(书书P102 例例1)已知已知2型文法型文法G=(S,A,B,a,P,S)P:SAB,Sa,Aa由算法由算法1:B推不出终结符串推不出终结符串,删除之删除之,并删并删SAB.N1=
9、S,A,P1:Sa,Aa由算法由算法2:A不出现在不出现在S能推导出的句型中能推导出的句型中,删除之删除之.并删并删Aa 结果为结果为G1=(S,a,Sa,S)应用算法应用算法1和算法和算法2,可删去文法中所有无用符号可删去文法中所有无用符号.122023-5-22School of Computer Science,BUPT消去非生成符号及不可达符号消去非生成符号及不可达符号注意注意:必须先执行算法必须先执行算法1,再执行算法再执行算法2,不能颠倒不能颠倒.否则否则,可能导致无用符号不会被完全删除可能导致无用符号不会被完全删除.例例:上例中上例中,若先用算法若先用算法2,得得 Sa,SAB,
10、Aa再用算法再用算法1,得得Sa,Aa。而而Aa是多余的是多余的.定理定理:任何非空的上下文无关语言任何非空的上下文无关语言,可由不存在无用符可由不存在无用符号的上下文无关语言产生号的上下文无关语言产生(证明略证明略)。132023-5-22School of Computer Science,BUPT消去消去 产生式产生式 目的目的 方便文法的设计方便文法的设计,利于文法规范化利于文法规范化.影响影响 消去消去 产生式产生式,除了文法不能产生字符串除了文法不能产生字符串 外,不会影响到原文法相应的语言中其它字符串外,不会影响到原文法相应的语言中其它字符串的产生的产生.可致空符号(可致空符号(
11、nullable symbol)对于对于 CFG G=(N,T,P,S),称符号称符号 A N 是是可致可致空空的的,当且仅当,当且仅当 A .消去消去 产生式及其影响,需要计算可致空符号的产生式及其影响,需要计算可致空符号的集合集合.142023-5-22School of Computer Science,BUPT算法算法3:生成无生成无 文法文法定义定义:若G的生成式中无任何产生式,或只有一个生成式S且S不出现在任何生成式的右边,则称G为无文法.思路思路 对于 CFG G=(N T,P,S),可通过下列归纳步骤计算可致空符号集合:基础基础 对于所有产生式对于所有产生式 A ,A 是一个可
12、致空符号是一个可致空符号 归纳归纳 如果有产生式如果有产生式 B C1C2Ck,其中每一个其中每一个 Ci N 是可致空符号,则是可致空符号,则 B 是一个可致空符号;是一个可致空符号;152023-5-22School of Computer Science,BUPT算法算法3:生成无生成无 文法文法算法步骤算法步骤:(1)利用算法1,找出N=A|AN且A=+(找出能推导出的所有非终结符A)(2)用以下两步组成P1 如果生成式A0 C11 C2CnnP n0 且每个Ck (1kn)均在N内 而对于0jn,没有j在N内 (i也可能是终结符)则P1应加入 A0Y11Y22Ynn 其中Yk或是Ck
13、或是 (即所有的可能组合)但A不加入P1162023-5-22School of Computer Science,BUPT算法算法3:生成无生成无 文法文法算法步骤(续)算法步骤(续):如果SN,则P1中应加入以下生成式 S1|S S1是新的起始符 N1=NS1 如果SN,则N1=N,S1=S 由此得出G1=(N1,T,P1,S1)172023-5-22School of Computer Science,BUPT消去消去 产生式产生式例例:(书书P103 例例2)G=(N,T,P,S)其中N=S,T=a,b P:SaSbS|bSaS|求其无文法 G1=(N1,T,P1,S1)解解:(1)S
14、=+N=S(2)P1的构造 由SaSbS;加入SaSbS|abS|aSb|ab 由SbSaS;加入SbSaS|baS|bSa|ba 但S不加入P1 由SN得出 S1 S N1=NS1=S,S1182023-5-22School of Computer Science,BUPT消去消去 产生式产生式 练习练习 以下产生式表示的文法中以下产生式表示的文法中,D 为可致空符号:为可致空符号:S A;A 0BD;B 0BC;B 1;C 1;D .通过通过上述步骤,上述步骤,消去消去 产生式产生式,得到如下产生式集合:,得到如下产生式集合:S A;A 0BD;A 0B;B 0BC;B 1;C 1.192
展开阅读全文