zoukankan      html  css  js  c++  java
  • 软件构造的四种文法的简单区分

    文法

    文法G定义为四元组(VN ,VT ,P,S)

    VN :非终结符集,通常用大写字母表示
    VT : 终结符集,通常用小写字母表示
    P :产生式集合(规则集合)
    S :开始符号(识别符号)

    提示:下面例子中的大写字母表示的是非终结符,而小写字母表示的是终结符。
    1.      0型文法(短语)
    设G=(VN,VT,P,S),如果它的每个产生式α→β是这样一种结构:α∈(VN∪VT)*且至少含有一个非终结符,而β∈(VN∪VT)*,则G是一个0型文法。0型文法是这几类文法中,限制最少的一个,所以我们在试题中见到的,至少是0型文法。
    0型文法相当于图灵机。
    2.    1型文法(上下文有关文法)

    它是在0型文法的基础上每一个α→β,都有|β|>=|α|。这里的|β|表示的是β的长度。
    1型文法相当于线性有界自动机。
    例子:如有A->Ba则|β|=2,|α|=1符合1型文法要求。反之,如aA->a,则不符合1型文法。
    特例:α→ε也满足1型文法。
    3.    2型文法(上下文无关文法)
    2型文法是在1型文法的基础上,再满足:每一个α→β都有α是一个非终结符。如A->Ba,符合2型文法要求。
    2型文法相当于下推自动机。
    例子:Ab->Bab虽然符合1型文法要求,但不符合2型文法要求,因为其α=Ab,而Ab不是一个非终结符。A->Bab就对啦
    4.    3型文法(正规文法)
    它是在2型文法的基础上满足:A→α|αB(右线性)或A→α|Bα(左线性)。
    3型文法相当于有限状态自动机。
    注意:3型文法中只能满足右线性,或只能满足左线性,不能两种同时都有
    例子: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型方法的要求了。
    https://blog.csdn.net/songsong189/article/details/48768819

  • 相关阅读:
    〖Linux〗Kubuntu设置打开应用时就只在打开时的工作区显示
    〖Linux〗Kubuntu, the application 'Google Chrome' has requested to open the wallet 'kdewallet'解决方法
    unity, dll is not allowed to be included or could not be found
    android check box 自定义图片
    unity, ios skin crash
    unity, Collider2D.bounds的一个坑
    unity, ContentSizeFitter立即生效
    类里的通用成员函数应声明为static
    unity, Gizmos.DrawMesh一个坑
    直线切割凹多边形
  • 原文地址:https://www.cnblogs.com/xuange1/p/11919196.html
Copyright © 2011-2022 走看看