zoukankan      html  css  js  c++  java
  • 编译原理4种文法类型

    • 1956年,Chomsky建立形式语言的描述。
    • 通过对产生式的施加不同的限制,Chomsky把文法分为4种类型

      首先定义一个产生式

      α→β
    • 0型文法定义:

    0型文法(PSG): α∈(VN∪VT)* ,且至少含一个VN

    β∈(VN∪VT)*

    对产生式没有任何限制

    例如:A0→A0 ,  A1→B

    0型文法说明:

    0型文法也称为短语文法
          一个非常重要的理论结果是,0型文法的能力相当于图灵机(Turing)。或者说,任何0型语言都是递归可枚举的;反之,递归可枚举集必定是一个0型语言。
          对0型文法产生式的形式作某些限制,以给出1,2和3型文法的定义。
    (注意)
    文法G 定义为四元组(VN ,VT ,P,S)
    ¨VN :非终结符集
    ¨VT :终结符集
    ¨P :产生式集合(规则集合)
    ¨S :开始符号(识别符号)
     
    • 1型文法(上下文有关文法context-sensitive):
      对任一产生式α→β,都有|β|>=|α|, 仅仅 S→ε除外
      产生式的形式描述:α1Aα2→α1βα2 
      (其中,α1、α2、β∈(VN∪VT)*,β≠ε,A∈VN)
      即:A只有出现在α1α2的上下文中,才允许用β替换。
      产生的语言称“上下文有关语言”
     
      例如:0A0→011000 1A1→101011
     
    • 2型文法(CFG):对任一产生式α→β,都有α∈VN,β∈(VN∪VT)*
      产生式的形式描述:A→β(A∈VN)
      即β取代A时,与A所处的上下文无关。
      产生的语言称“上下文无关语言”
      例如:G[S]:S→01  S→0S1
     
    • 3型文法(RG):也称正规文法
      每个产生式均为 “A→aB”或“A→a” —— 右线性
        “A→Ba”或“A→a” —— 左线性
      其中,A、B∈VN,a∈VT*
      产生的语言称“正规语言”
      例如:G[S]: S→0A | 0
      A→1B | B
      B→1 | 0
     
          4个文法类的定义是逐渐增加限制的,因此每一种正规文法都是上下文无关的,每一种上下文无关文法都是上下文有关的,而每一种上下文有关文法都是0型文法。    
     
      四种文法之间的关系是:包含关系.(原因:将产生式做进一步限制而定义的。
     

     
     
  • 相关阅读:
    Android 编程代码手机定位
    Android 编程下快捷图标的创建
    Android 编程技巧设置 ADB 连接超时时间
    Android 编程下获得应用程序的签名
    Android 编程下如何获取有 Internet 访问权限的应用
    Android 编程下通知的发送
    Androidpn 消息推送总结
    Json 和 Jsonlib 的使用
    asp.net 控件不显示,提示无法找到
    做一课永远成长的苹果树!
  • 原文地址:https://www.cnblogs.com/hexiaochun/p/2480993.html
Copyright © 2011-2022 走看看