编译原理(6)-----3型文法和有限自动机

3型文法:

                3型文法也称正则文法

            如果文法G=(N,Σ,P,S)的规则集P中所有规则满足A->Bx,或A->x,其中,A,BN,x∈Σ,则称3型文法。

            如上所示,规则右部的非终结符号(如果有的话)出现在最左边,所以称为左线性正则文法,若为A->xB,则为右线性文法


有限自动机:

               有限自动机分为确定性有限自动机(DFA)和不确定性有限自动机

      DFA:

               M是一个五元组,M=(Σ,Q,δ,q0,F),其中Σ是输入符号的有穷集合;q0Q是初始状态;F是终止状态集合,FQ;

                                                                                           δ是Q与Σ直积到Q(下一个状态)的映射,也称状态转移函数

                                              

             DFA原理:处在状态qQ中的有限控制器从左到右依次从输入带上读入字符,开始时有限状态控制器处在状态q0,

                                 输入头指向Σ*中一个链的最左符号。映射δ(q,a)=q1(q,q1Q,aΣ)表示在状态q时,若输入符号为a,则

                                 自动机M进入状态q1并且将输入头向右移动一个字符。

             DFA接受的语言:如果一个句子x对于有限自动机M有δ(q0,x)=p,pF,那么称句子x被M接受。被M接受的句子的全集

                                             称为M定义的语言,或称M所接受的语言,记作T(M)。T(M)={x|δ(q0,x)F}

 

      NFA:

                   NFA和DFA的重要区别是:在NFA中δ(q,a)是一个状态集合,而在DFA中δ(q,a)是一个状态。

              对于NFA M的映射:δ(q,a)={q1,q2,,qk},k≥1,即M在状态q时接受输入字符a,可以选择状态集q1,q2,,qk

                                                  中的任何一个状态作为下一个状态。


正则文法与有限自动机的关系:

                  1、若G=(VN,VT,P,S)是一个正则文法,则存在一个FA  M=(Σ,Q,δ,q0,F),使得T(M)=L(G)。

             由给定正则文法G=(VN,VT,P,S)构造FA  M步骤:

             (1)、令Σ=VT,Q=VN∪{T},q0=S,其中T是一个新增的非终结符;

             (2)、如果在P中有产生式S->ε,则F={S,T},否则F={T};

             (3)、如果在P中有产生式B->a,BVN,aVT,则Tδ(B,a);

             (4)、如果在P中有产生式B->aC,B,CVN,aVT,则Cδ(B,a);

             (5)、对于每一个aVT,有δ(T,a)=

          例子:给定正则文法G=(VN,VT,P,S),构造与G等价的NFA,其中,

                                                                       VN={S,A},   VT={0,1}

                                                      P:S->0 A          A->1 S             A->0

                     (1)、设NFA M=(Σ,Q,δ,q0,F),根据上述构造步骤有:

                              Σ=VT={0,1},Q=VN∪{T}={S,A,T},q0=S,F={T}

                    (2)、映射δ为:

                                            δ(S,0)={A}                  (因为有规则S->0 A)

                                            δ(S,1)=

                                            δ(A,0)={T}                  (因为有规则A->0)

                                            δ(A,1)={S}                  (因为有规则A->1 S)

                                            δ(T,0)=

                                            δ(T,1)=


              2、若 M=(Σ,Q,δ,q0,F)是一个有限自动机,则存在一个正则文法G=(VN,VT,P,S),使得L(G)=T(M)

              由FA M构造G的一般步骤为:

                   (1)、令VN=Q,VT=Σ,S=q0;

              (2)、如果Cδ(B,a),B,CQ,aΣ,则在P中有产生式B->aC;

              (3)、如果Cδ(B,a),CF,则在P中有产生式B->a。


特此记录有限自动机与正则文法相互转化的规则,以防遗忘。




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值