第03章 词法分析与有穷自动机(2).ppt
《第03章 词法分析与有穷自动机(2).ppt》由会员分享,可在线阅读,更多相关《第03章 词法分析与有穷自动机(2).ppt(59页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 3.4.5 DFA的化简 1.DFA的化简 所谓一个DFA M 的化简是指寻找一个状态数比 M 少的 DFA M,使得 L(M)=L(M)。(1)没有多余状态。化简了的DFA满足两个条件:(2)它的状态集中没有两个状态是 互相等价的。所谓有穷自动机的多余状态是指从该自动机的开始状态出发,任何输入串不能到达的状态。3.4.5 DFA的化简 2.多余状态3.等价状态 设 DFA M(Q,f,S0,Z),s,t Q,若对任何 *,f(s,)Z 当且仅当f(t,)Z,则称状态 s 和 t 是等价的。例如,终态与非终态是可区别的。因为终态有一条到达自身的道路,而非终态没有到达终态的道路。3.4.5 D
2、FA的化简 如果 s 和 t 不等价,则称 s 和 t 是可区别的。5.化简方法(1)一致性条件:状态s和t必须同时为 终态或非终态。4.两个状态等价的条件:(2)蔓延性条件:对于所有输入符号a,状态 s 和 t 必须转到等价的状态里。输入:一个DFA M。输出:接受与M相同语言的DFA M,且其状态数最少。3.4.5 DFA的化简 无多余状态下把M的状态集 Q划分成一些不相交的子集,使得每个子集中任何两个状态是等价的,而任何两个属于不同子集的状态都是可区别的。化简方法:然后在每个子集中任取一个状态作“代表”,而删去子集中其余状态,并把射向其余状态的箭弧都改作射向作“代表”的状态中。3.4.5
3、 DFA的化简 A,F,GI,L,MW,ZE,H,KO,R,T,XAMWHT下面给出化简算法的具体执行步骤:1.将DFA M的状态集Q分成两个子集:终态集F和非终态集F,形成初始分划。2.对使用如下方法建立新划分NEW:(1)把G划分成新的子集,使得G的两个状态s和t属于同一子集,当且仅当对任何输入符号a,状态s和t转换到的状态都属于的同一子集。对的每个状态子集G:3.4.5 DFA的化简(2)用G划分出的所有新子集替换G,形(3)成新的划分NEW;3.如果NEW,则执行第4步;否则令 NEW,重复第2步。4.划分结束后,对划分中的每个状态子集,选出一个状态作代表,而删去其它一切等价的状态,并
4、把指向其它状态的箭弧改为指向这个作为代表的状态。3.4.5 DFA的化简 例1.将右面的DFA最小化 初始分划=(A,B,C,DE)A,B,C,Da=B分析 由图可知,给定的DFA中无多余状态。A,B,C,Db=C,D,E=(A,B,CDE)A,B,Ca=BA,B,Cb=C,D=(A,CBDE)A,Ca=BA,Cb=C=(A,CBDE)aABCDEaaaabbbbbEDBAaaaabbbb例2.将右面的DFA M最小化 1,2l=2=(1,20)分析 由图可知,给定的DFA无多余状态。初始分划=(1,20)1,2d=2 ld02lld1d01ll 3.4.5 DFA的化简 3.4.6 有穷自动
5、机到正规式的转换有穷自动机到正规式的转换 1.在 M 的转换图上添加两个结点:X 结和Y结。从X结点用连线连结到M的所有初态结点,从 M 的所有终态结点用连线连结到 Y 结,从而构成一新的非确定有穷自动机 M,它只有一个初态结 X和一个终态结Y。显然,L(M)=L(M)。即,这两个NFA是等价的。3.4.6 有穷自动机到正规式的转换有穷自动机到正规式的转换 2.逐步消去M中的其它结点,直至只剩下X,Y结点。在消除结点过程中,逐步用正规式来标记相应的箭弧。消除结点的过程是很直观的,只需反复使用下图的替换规则即可。3.4.6 有穷自动机到正规式的转换有穷自动机到正规式的转换 对于代换为ABr1r2
6、ACBr1r2对于ABr1|r2代换为代换为ABr1r2*r3ABr1r2对于ACBr1r3r2 3.4.6 有穷自动机到正规式的转换有穷自动机到正规式的转换 例1.设有穷自动机的状态图如图所示 试求该自动机识别语言的正规式。R=(10|01)(10|01)*3.5 正规文法与有穷自动机正规文法与有穷自动机p前面提到程序设计语言的单词符号可用乔母斯基3型文法正规文法来描述p对于正规文法所描述的语言可用一种有穷自动机来识别p下面分别就左线性正规文法/右线性正规文法给出构造相应有穷自动机的方法 3.5 正规文法与有穷自动机正规文法与有穷自动机 右线性正规文法到有穷自动机的转换方法右线性正规文法到有
7、穷自动机的转换方法 则相应的有穷自穷自动机 M=(Q,f,q0,Z)1.令 Q=VND (D VN)Z=D =VT q0=S2.对G中每一形 AaB(A,BVN,aVT)的产生式,令 f(A,a)=B设给定了一个右线性正规文法 G=(VN,VT,P,S)/a=AB令f(A,)=B AaBAa3.5.1 右线性正规文法到有穷自动右线性正规文法到有穷自动 机的转换方法机的转换方法3.对G中每一形如Aa(AVN,aVT)的产生式,令 f(A,a)=D4.对G中每一形如A(AVN)的产生 式,令A为接受状态或令 f(A,)=D例1 构造下述文法GZ的有穷自动机。Z0AA0A|0BB1A|M=(Q,f,
8、q0,Z)G=(VN,VT,P,S)M=(VN D,VT ,f,Z,D)M=(Z,A,B,D,0,1),f,Z,D)f=?根据规则来确定f(Z,0)=A f(Z,1)=f(z,)=f(A,0)=A,B f(A,1)=f(A,)=f(B,0)=f(B,1)=A f(B,)=DZ0AA0A|0BB1A|AaB(A,BVN,aVT),令 f(A,a)=BAa(AVN,aVT),令 f(A,a)=DA(AVN),令A为接受状态 或令 f(A,)=DAZ0010DB3.5.2 左线性正规文法到有穷自动左线性正规文法到有穷自动 机的转换方法机的转换方法则相应的有穷自穷自动机 M=(Q,f,q0,Z)1.令
9、 Q=VNq0 (q0 VN)Z=S =VT 2.对G中每一形如 ABa(A,BVN,aVT)的产生式,令 f(B,a)=A设给定了一个左线性正规文法 G=(VN,VT,P,S)/a=AB令f(B,)=A ABaAa 3.5.2 左线性正规文法到有穷自动左线性正规文法到有穷自动 机的转换方法机的转换方法3.对G中每一形如 Aa(AVN,aVT)的产生式,令 f(q0,a)=A例1.构造下述文法GA的自动机。其状态图如下图所示。显然,该自动机是确定的。它识别的语言就是文法GA所描述的语言。即 L(GA)=L(M)=00*11*BB0|0AA1|B1ABS0101 3.5.3 有穷自动机到正规文法
10、的转换有穷自动机到正规文法的转换设给定有穷自动机M=(Q,f,q0,Z)则相应的正规文法 G=(VN,VT,P,S)1.令 VN=Q VT=S=q0 2.若f(A,a)=B 且B 时,则将产生式 AaB 加到P中。Z /3.若f(A,a)=B 且BZ时,则将产生式 AaB|a 或将产生式AaB、B 加到P中。3.5.3 有穷自动机到正规文法的转换有穷自动机到正规文法的转换4.若文法的开始符号S是一个终态,则 将产生式 S 加到P中。例1 设有穷自动机 M=(S,A,a,b,0,1,f,S,A)M的状态转换图如图所示。根据上述转换规则,与M等价的正规文法G为:其中P:自动机M所识别的语言L(M)
11、=L(G)=(a|b)(0|1|a|b)*。f(S,a)=A f(S,b)=Af(A,a)=A f(A,b)=Af(A,0)=A f(A,1)=A其中G=(S,A,a,b,0,1,P,S)SaA|bA|a|bAaA|bA|0A|1A|a|b|0|1例3 设DFA M=(A,B,C,D,0,1,A,B)该自动机相应的状态转换图如下图所示。构造一个右线性文法G,使得L(G)=L(M)。(A,0)=B (A,1)=D(B,0)=D (B,1)=C(C,0)=B (C,1)=D(D,0)=D (D,1)=DBCA001D0110,1其中:从状态转换图可以看出,状态D是多余的,可以去掉,于是得到与M等价
12、的DFA M的状态转换图如图所示。3.5.3 有穷自动机到正规文法的转换有穷自动机到正规文法的转换BCA001BCA001D0110,13.5.3 3.5.3 有穷自动机到正规文法的转换有穷自动机到正规文法的转换G=(A,B,C,0,1,P,A)其中P为或 该自动机所识别的语言为 0(10)*。A0B|0B1CC0B|0根据转换规则所求右线性文法为A0BB1C|C0B BCA001 3.6 词法分析程序的编写方法词法分析程序的编写方法 构造词法分析程序的方法:第二种方法是利用词法分析程序的自动生成工具LEX自动生成词法分析程序第一种方法是用手工方式,即根据识别语言单词的状态转换图,使用某种高级
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第03章 词法分析与有穷自动机2 03 词法 分析 有穷 自动机
限制150内