乔姆斯基的文法分类

  终结符,通俗的说就是不能单独出现在推导式左边的符号,也就是说终结符不能再进行推导。不是终结符的都是非终结符。非终结符可理解为一个可拆分元素,而终结符是不可拆分的最小元素。如:有α → β ,则α 必然是个非终结符。一般书上把非终结符用大写字母表示,而终结符用小写字母表示。识别符号就是开始符。由文法产生语言句子的基本思想是:从识别符号开始,把当前产生的符号串中的非终结符号替换为相应规则右部的符号串,直到最终全由终结符号组成。这种替换过程称为推导或产生句子的过程,每一步成为直接推导或直接产生。

(非终结符:A,B,C,D,终结符:a,b,c,d)   
  0型文法,产生式左右部可以使用"非终结符"和"终结符"随意组合,但左部不能为空,如DAaBb->CcdD;   
  1型文法,在0型文法的基础上,要求右部的符号长度大于左部(空除外),如AaBb->CcddDd   
  2型文法,在1型文法的基础上,要求左部必须由非终结符号组成,如AB->CcdddDd   
  3型文法,在2型文法的基础上,产生式必须型如:A->Aa|a或A->aA|a,比如:A->AA,A->aa,这些都不是

下面给出4型文法的形式化描述:

 设G=(VN,VT,P,S),如果它的每个产生式α→β是这样一种结构:α∈( VN∪VT )*且至少含有一个非终结符,而β∈( VN∪VT )*, 
    则G是一个0型文法。 
  0型文法也称短语文法。 
    一个非常重要的理论结果是,0型文法的能力相当于图灵机(Turing)。 
    或者说,任何0型语言都是递归可枚举的; 
    反之,递归可枚举集必定是一个0型语言。[@more@]  对0型文法产生式的形式作某些限制,以给出1,2和3型文法的定义。 
  设G=(VN,VT,P,S)为一文法,若P中的每一个产生式α→β均满足|β|≥|α| , 
    仅仅S→ε除外,则文法G是1型或上下文有关的。 

  在有些文献给的定义中,将上下文有关文法的产生式的形式描述为 
    α1Aα2→α1βα2,其中α1、α2和β都在( VN∪VT )*中(即在V*中), 
    β≠ε,A在VN中。 

    这种定义与前边的定义等价。但它更能体现"上下文有关"这一术语, 
    因为只有A出现在α1和α2的上下文中,才允许用β取代A。 



  设G=(VN,VT,P,S),若P中的每一个产生式α→β满足: 
    α是一非终结符,β∈( VN∪VT )*则此文法称为2型的或上下文无关的。 

    有时将2型文法的产生式表示为形如:A→β其中A∈VN, 
    也就是说用β取代非终结符A时,与A所在的上下文无关, 
    因此取名为上下文无关文法。 

    设G=(VN,VT,P,S),若P中的每一个产生式的形式都是A→aB或A→a, 

    其中A和B都是非终结符,a是终结符,则G是3型文法或正则文法。 

 多数程序设计语言的单词的语法都能用正则文法或3型文法来描述。 
 3型文法G=(VN,VT,P,S)的P中的规则有两种形式: 

  一种是前面定义的形式,即:A→aB或A→a其中A,B∈VN ,a∈VT*, 

  另一种形式是:A→Ba或A→a,前者称为右线性文法,后者称为左线性文法。 

  正规文法所描述的是VT*上的正规集。 

 四个文法类的定义是逐渐增加限制的,因此每一种正规文法都是上下文无关的,每一种上下文无关文法都是上下文有关的,而每一种上下文有关文法都是0型文法。称0型文法产生的语言为0型语言。上下文有关文法、上下文无关文法和正规文法产生的语言分别称为上下文有关语言、上下 
文无关语言和正则语言。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值