第二章词法分析非确定有限自动机精选文档.ppt

上传人:石*** 文档编号:78727077 上传时间:2023-03-19 格式:PPT 页数:29 大小:2.25MB
返回 下载 相关 举报
第二章词法分析非确定有限自动机精选文档.ppt_第1页
第1页 / 共29页
第二章词法分析非确定有限自动机精选文档.ppt_第2页
第2页 / 共29页
点击查看更多>>
资源描述

《第二章词法分析非确定有限自动机精选文档.ppt》由会员分享,可在线阅读,更多相关《第二章词法分析非确定有限自动机精选文档.ppt(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第二章词法分析非确定有限自动机本讲稿第一页,共二十九页第2章 outlinep一、词法分析概述一、词法分析概述1 1,词法分析程序的功能,词法分析程序的功能2 2,词法分析相关的一些问题,词法分析相关的一些问题p二、正则表达式二、正则表达式p三、有限自动机三、有限自动机1 1,确定有限自动机,确定有限自动机DFADFA2 2,非确定有限自动机,非确定有限自动机NFANFA,NFANFA到到DFADFA的转换的转换3 3,DFADFA的化简的化简4 4,正则表达式到,正则表达式到NFANFA的转换的转换p四、词法分析程序构造四、词法分析程序构造 本讲稿第二页,共二十九页2、非确定有限自动机确定有

2、限自动机是五元组确定有限自动机是五元组(SS,SS,S0,TS,S0,TS)确定性体现:初始状态唯一、转换函数是单值函数确定性体现:初始状态唯一、转换函数是单值函数非确定有限自动机:也是五元组非确定有限自动机:也是五元组(SS,SS,S0,TS,S0,TS)其中 SS=S0,S1,SnSS=S0,S1,Sn是状态集是状态集 是字母表是字母表 S0S0 SSSS是初始状态集是初始状态集,不能为空不能为空 是转换函数,但不要求是单值的是转换函数,但不要求是单值的 :SS:SS ()2 2SSSS TS TS SSSS是终止状态集,可为空。是终止状态集,可为空。本讲稿第三页,共二十九页非确定有限自动

3、机的例子 =a,a,b b SS:SS:S0,S0,S1,S1,S2,S2,S3S3 初始状初始状态态集集:S0S0 ,S1S1 终终止状止状态态集集:S3S3 :(S0,a)(S0,a)S1,S1,S3S3,(S0,(S0,)S2,S2,(S1,b)(S1,b)S1,S1,(S1,(S1,)S2,S2,(S2,(S2,)S3,S3,(S3,(S3,b)b)S3S3NFANFA也可以用状也可以用状态转换图态转换图或状或状态转换态转换矩矩阵阵表示表示本讲稿第四页,共二十九页非确定有限自动机的例子S0S0a aS2S2S3S3 a a b bb bS1S1abS+S1,S3S2S1+S1S2S2S

4、3S3-S3状态集合状态集合本讲稿第五页,共二十九页NFA接受的字符串NFANFA接受的字符串接受的字符串如果M是一个NFA,a a1 1 a a2 2 anan 是一个字符串,如果存在一个状态序列(S0,S1,Sn),满足 S0 S1 ,S1 S2 ,Sn-1 Sn其中 S0 是开始状态之一,Sn 是接受状态之一,则串a1 a2 an 被NFA M接受.NFANFA定定义义的串的集合的串的集合(NFA(NFA接受的接受的语语言言)NFA M接受的所有串的集合,称为M定义的语言,记为 L(M)L(M)a1a1a2a2anan本讲稿第六页,共二十九页NFA与DFA的比较DFADFANFANFA初

5、始状初始状态态一个初始状一个初始状态态初始状初始状态态集合集合 边边不允不允许许允允许许 (S,(S,a)a)S S or or S1,S1,SnSn or or 实现实现容易容易有不确定性有不确定性对于确定的输入串,DFA只有一条路径接受它NFA则可能需要在多条路径中进行选择!本讲稿第七页,共二十九页NFA到DFA的转换例如输入串:100NFANFA需要在多条路径中选择,因此的效率低!但NFA描述问题方便。NFA和DFA都识别正则语言。NFA可转换成DFA。SPQ010101本讲稿第八页,共二十九页NFA到DFA的转换对任意对任意NFANFA,都存在一个,都存在一个DFADFA与之等价。与之

6、等价。转换的思想:消除不确定性转换的思想:消除不确定性合并初始状态集成一个状态合并初始状态集成一个状态消除消除 边边消除多重定义的边。消除多重定义的边。1 12 23 3a aa a1 12,32,3a a4 45 5 4 4,5 5本讲稿第九页,共二十九页-closure(-closure(空空闭闭包包)对对于于给给定的定的 NFANFA A A,和它的一个状和它的一个状态态集合集合 SSSS,SSSS的空的空闭闭包包计计算如下:算如下:第一步:令第一步:令-closure(-closure(SSSS)=SSSS;第二步:如果在状第二步:如果在状态态集集SSSS中存在状中存在状态态s s,s

7、 s到状到状态态s s 存在一条存在一条 边边,并且并且s s -closure(-closure(SSSS ),),则则将将s s 加入加入SSSS的空的空闭闭包包-closure(-closure(SSSS););重复第二步重复第二步,直到再没有状直到再没有状态态可加入可加入-closure(-closure(SSSS).本讲稿第十页,共二十九页-closure-closure的例子的例子S0S0a aS1S1S2S2S3S3 a a b bc c -closure(S0,S1)=S0,S1 S0,S1,S2 S0,S1,S2 S0,S1,S2,S3 本讲稿第十一页,共二十九页转转向状向状

8、态态对对于于NFANFA A A中的中的给给定状定状态态集合集合SSSS 和符号和符号 a a,NextStates(NextStates(SSSS,a a)=s s|对对于状于状态态集集SSSS中的一个状中的一个状态态s1,s1,如果如果A A中存中存在一条从在一条从s1s1到到s s的的a a转换边转换边 SSS2S3S1S1S SSSa aa a(S1,S2,S3,a)=S,S本讲稿第十二页,共二十九页转向状态的例子S0S0a aS1S1S2S2S3S3 a a b bc c NextStates(S0,S1,a)=S1,S3 NextStates(S0,S1,b)=S1 本讲稿第十三页

9、,共二十九页NFANFA到到DFADFA的的转换转换算法算法(子集法子集法)给给定一个定一个 NFANFA A A =,SS,SS,SSSS0 0,TSTS 生成等价的生成等价的 DFADFA A A =,SS,SSS,S0 0,TSTS 步步骤骤(1)(1)令令S S0 0 =-closure(-closure(SSSS0 0),),将将S S0 0 加入加入 SSSS;(2)(2)从从SSSS中中选择选择一个状一个状态态s,s,对对于任意于任意 a a,若有若有 s s =-closure(-closure(NextStates(NextStates(s,s,a a),),令令 (s,(s

10、,a)a)s s。若。若s s SS,SS,将将s s加入加入SS;SS;(3)(3)重复第二步,直到重复第二步,直到SSSS 中的所有状态都被处理过中的所有状态都被处理过;(4)(4)对对于于SSSS中的一个状中的一个状态态s,s,如如s s =S1,S1,.,.,Sn,Sn,如果有状如果有状态态 Si Si TS,TS,则则s s是是 A A 的一个接受状态的一个接受状态,将将s s加入加入 TS;TS;本讲稿第十四页,共二十九页NFA到DFA转换的例子例1:=a,b,c,=a,b,c,S0=S0=-closure(S-closure(S0 0,S1,S10 0)=S S0 0,S1,S1

11、0 0,S2,S,S2,S*,abc S S0,S1,S1,S2,SS2,S3 +-S1,S1,S S3,S2,S2 S1,S1,S S3,S2,S2 S S3 S1,S1,S S3,S2,S2-S1,S1,S S3,S2,S2 S S3 S S3-S S3 S0S0a aS1S1S2S2S3S3 a a b bc c本讲稿第十五页,共二十九页NFA到DFA转换的例子例2:01S0+S0,S1S0S0,S1-S0,S1,S2S0S0,S1,S2-S0,S1,S2S0S0S0S1S1S2S2SPQ010101本讲稿第十六页,共二十九页NFA到DFA转换的例子例3:q q0 0q q1 1q q4

12、 4q q6 6q q2 2q q3 3q q5 5a aa aa ab bb bb b a,ba,babq0+q1,q3q1,q3q1,q3q2,q4,q6,q5q2,q4,q6,q5-q4,q6,q5q6,q5,q4q4,q6,q5-q6,q5,q4q6,q5,q4本讲稿第十七页,共二十九页DFA的化简NFANFA转换成的转换成的DFADFA,有时候会有一些,有时候会有一些等价状态等价状态,这,这些等价状态会使分析效率降低,因此应合并。些等价状态会使分析效率降低,因此应合并。合并了所有等价状态后的合并了所有等价状态后的DFADFA称为最简自动机。称为最简自动机。q q0 0a aq qA

13、Aq qc cq qB Ba aa,ba,bb ba ab bDFA M1DFA M1本讲稿第十八页,共二十九页等价等价DFADFA和最简和最简DFADFA的定义的定义等价等价 DFAsDFAs如果两个如果两个DFADFA接受的字符串的集合是相同的接受的字符串的集合是相同的;在接受相同字符串集的在接受相同字符串集的DFADFA中,最小中,最小DFADFA指的是状指的是状态态数数最少的最少的DFADFAq q0 0a aq qA Aq qc ca,ba,bb bDFA M2DFA M2a a本讲稿第十九页,共二十九页等价的等价的DFAsDFAsS S0 0a aS1S1S4S4*b bd dS3

14、S3*S2S2d dS S0 0a aS1S1b bd dS S*两个两个DFADFA等价,是因为在这两个等价,是因为在这两个DFADFA中存在接受中存在接受相同字符串的状态相同字符串的状态!本讲稿第二十页,共二十九页主要思想主要思想等价状等价状态态对对于于DFADFA中的任意两个状中的任意两个状态态 s1s1和和 s2s2,如果分,如果分别别将将 s1s1和和s2s2当作开当作开始状始状态态,它,它们们接受的字符串集合相同,接受的字符串集合相同,则则称称 s1s1 和和 s2s2 是是等价状等价状态态;DFADFA化化简简的两种方式的两种方式合并等价状合并等价状态态;(状状态态合并法合并法)

15、分离不等价状分离不等价状态态;(;(状状态态分离法分离法)本讲稿第二十一页,共二十九页状状态态分离法化分离法化简简DFADFA给给定一个定一个DFADFA A A =,SS,SS,S S0 0,TSTS:要生成与其等价的要生成与其等价的 DFADFA A A =,SS,SSS,S0 0,TSTS 分离步分离步骤骤:(1)(1)将将A A的所有状的所有状态态分成两分成两组组:非非终终止状止状态态 ,终终止状止状态态 ;(2)(2)选择选择一一组组状状态态 SSSSi i =Si1,Si1,Sin,Sin,用用splitsplit(SS(SSi i)替替换换SSSSi i ;(3)(3)重复第重复

16、第(2)(2)步,直到步,直到所有组都被处理过所有组都被处理过;(4)(4)令令SSSS =组组的集合的集合;(5)(5)S S0 0 :包含包含S S0 0 的组作为的组作为S S0 0 ;(6)(6)TSTS :包含包含A A的的终终止状止状态态的的组组,作作为为A A 的的终终止状止状态态;(7)(7):(SSSSi i,a a)=SSSSj j,若在若在A A中有中有S Si i S Sj j,且且 si si SSSSi i,sj sj SSSSj ja a本讲稿第二十二页,共二十九页分离状分离状态态 给给定一个定一个DFADFA A A =,SS,SS,S S0 0,TSTS:假定

17、状假定状态态集合集合SSSS分成了分成了m m组组:SSSS1 1,SSSSm m,SSSS1 1 SSSSm m =SS,SS,SSSS1 1 SSSSm m =;任取一个状任取一个状态组态组SSSSi i =S Si1 i1,S Sin in,考察考察SSSSi i是否可是否可继续继续分离分离splitsplit(SS(SSi i):判断:判断SSiSSi是否需要分裂,是是否需要分裂,是则则将将SSiSSi分裂成两分裂成两组组G1G1和和G2,G2,过过程如下:程如下:初始初始 G1G1 =S Sip ip ,1 1 p p n n ,即任取即任取SSSSi i中的一个状中的一个状态态放入

18、放入G1,G1,G2G2 =.forfor j j =1 1 to to n n (假假设设 SSSSi i 有有n n个状个状态态)对对于所有于所有 a a ,任意的任意的S Sij ij SSSSi i,若有若有 (S(Sip ip,a,a )=SkSk ,(S(Sij ij,a)a)=SqSq ,如果如果 SkSk和和SqSq属于同一个组属于同一个组 SSSSt t ,则将则将 SijSij 加入组加入组 G1;G1;否则将否则将 SijSij 加入组加入组 G2;G2;本讲稿第二十三页,共二十九页简单简单例子例子S S0 0a aS1S1S4S4*b bd dS3S3*S2S2d dS

19、S0 0,S1,S2,S3,S1,S2,S3*,S4,S4*SS0 0,S1,S2,S1,S2,S3 S3*,S4,S4*本讲稿第二十四页,共二十九页DFA化简的例子例1:0,1,2,3和40,1,3,2和40,3,1,2和401234aabbabbb0124aabbbb本讲稿第二十五页,共二十九页DFA化简的例子例2:0,1,2,3,40,2、1,3,40,2,1,3,4a a 4 4 0 01 12 2a aa ab ba ab bb bb b3 3a a,b b 4 4 0 01 12 2a aa ab ba ab bb ba a,b b本讲稿第二十六页,共二十九页DFA化简的例子例3:A,D,E,B,CA,E,D和B,C本讲稿第二十七页,共二十九页课后练习NFA到DFA的转化0123aaba,ba,ba,b0123abba本讲稿第二十八页,共二十九页课后练习DFA的化简 :1,3,2,4,5,61 12 24 46 65 53 3a ab ba ab bb bb bb bb ba a本讲稿第二十九页,共二十九页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁