乔姆斯基文法分类【0型1型2型3型文法】

乔姆斯基把方法分成四种类型,即0型、1型、2型和3型,源于《编译原理》,但《软件设计师》教程对于该分类的介绍很简略,也很抽象,根据网上各类博客对其的解释和教程的说法,大致总结如下:

首先要阐明的是,一般的文法至少都是0型文法,也就是说0型文法限制最少,二1,2,3型文法都是在0型文法基础上加以限制形成。

若将0型文法比作基类的话,1,2,3,4就是不断继承并加以限制得到的子类。

①0型文法 

设G=(VN,VT,P,S),如果它的每个产生式α→β是这样一种结构:α∈(VN∪VT)*且至少含有一个非终结符,而β∈(VN∪VT)*,则G是一个0型文法。0型文法也称短语文法。0型文法的能力相当于图灵机(Turing)。

我们发现0型文法是限制最少的一种文法,平时见到的文法几乎都属于0型文法。


②1型文法 

1型文法也叫上下文有关文法,此文法对应于线性有界自动机。它是在0型文法的基础上每一个α→β,都有|β|>=|α|。这里的|β|表示的是β的长度。 

注意:虽然要求|β|>=|α|,但有一特例:α→ε也满足1型文法。 

如有A->Ba则|β|=2,|α|=1符合1型文法要求。反之,如aA->a,则不符合1型文法。 

③2型文法 

2型文法也叫上下文无关文法,它对应于下推自动机。2型文法是在1型文法的基础上,再满足:每一个α→β都有α是非终结符。如A->Ba,符合2型文法要求。 

如Ab->Bab虽然符合1型文法要求,但不符合2型文法要求,因为其α=Ab,而Ab不是一个非终结符。 

④3型文法 

3型文法也叫正规文法它对应于有限状态自动机。它是在2型文法的基础上满足:A→α|αB(右线性)或A→α|Bα(左线性)。 

如有:A->a,A->aB,B->a,B->cB,则符合3型文法的要求。但如果推导为:A->ab,A->aB,B->a,B->cB或推导为:A->a,A->Ba,B->a,B->cB则不符合3型方法的要求了。具体的说,例子A->ab,A->aB,B->a,B->cB中的A->ab不符合3型文法的定义,如果把后面的ab,改成“一个非终结符+一个终结符”的形式(即为aB)就对了。例子A->a,A->Ba,B->a,B->cB中如果把B->cB改为B->Bc的形式就对了,因为A→α|αB(右线性)和A→α|Bα(左线性)两套规则不能同时出现在一个语法中,只能完全满足其中的一个,才能算3型文法。 

那么这四类文法如何判断呢?

其实四种文法就是规定产生式的左和右边的字符的组成规则不同而已,于是我们便可以严格根据左边和右边规则的不同来加以判断。

首先,应该明确,四种文法,从0型到3型,其规则和约定越来越多,限制条件也越来越多,

所以我们应该按照3->2->1->0的顺序去判断,一旦满足前面的规则,就不用去判断后面的了。


1.先来看看3型文法的判断规则
①:左边必须只有一个字符,且必须是非终结符; 
②:其右边最多只能有两个字符,要么是一个非终结符+终结符(终结符+非终结符),要么是一个终结符。
③:对于3型文法中的所有产生式,若其右边有两个字符的产生式,这些产生式右边两个字符中终结符和非终结符的相对位置一定要固定,也就是说如果一个产生式右边的两个字符的排列是:终结符+非终结符,那么所有产生式右边只要有两个字符的,都必须满足终结符+非终结符。反之亦然。

2.再看看2型文法判断规则
①:与3型文法的第一点相同,即:左边必须有且仅有一个非终结符。 
②:2型文法所有产生式的右边可以含有若干个终结符和非终结符(只要是有限的就行,没有个数限制)。 

3.最后再看看1型文法判断规则
①:1型文法所有产生式左边可以含有一个、两个或两个以上的字符,但其中必须至少有一个非终结符。 
②:与2型文法第二点相同,但需要满足|α|≤|β|.

0型文法不需要判断了,一般的文法都是0型文法。 O(∩_∩)O

  • 42
    点赞
  • 114
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值