zoukankan      html  css  js  c++  java
  • 用例子来区分4种文法

            编译原理中文法这部分内容很重要,软考中也涉及到了,刚开始这部分内容挺乱的,我连定义都看不懂就别说区分它们了,这是经过做题,从题中分析,再联系定义,再与同学们一起讨论终于把它们分清楚了,它们的关系用下面的图表示一下

                                                              

    1.文法

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

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

    提示:下面例子中的大写字母表示的是非终结符,而小写字母表示的是终结符。

    2.0型文法(短语)

             设G=(VN,VT,P,S),如果它的每个产生式α→β是这样一种结构:α∈(VN∪VT)*且至少含有一个非终结符,而β∈(VN∪VT)*,则G是一个0型文法。0型文法是这几类文法中,限制最少的一个,所以我们在试题中见到的,至少是0型文法。

             0型文法相当于图灵机。

    3.1型文法(上下文有关文法)

           它是在0型文法的基础上每一个α→β,都有|β|>=|α|。这里的|β|表示的是β的长度。

           1型文法相当于线性有界自动机。

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

    特例:α→ε也满足1型文法。

    4.2型文法(上下文无关文法)

           2型文法是在1型文法的基础上,再满足:每一个α→β都有α是一个非终结符。如A->Ba,符合2型文法要求。

           2型文法相当于下推自动机。

    例子:Ab->Bab虽然符合1型文法要求,但不符合2型文法要求,因为其α=Ab,而Ab不是一个非终结符。A->Bab就对啦

    5.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型方法的要求了。

     相信大家通过我举得例子一定能理解这部分,能非常清楚的它们之间的区别

  • 相关阅读:
    查找文件内容
    jquery click 与原生 click 的区别
    js 模糊搜索
    node 报错 env: node : No such file or directory
    简单的 js 模版引擎
    一个兼容 node 与浏览器的模块写法
    java.io.IOException: No FileSystem for scheme: hdfs
    使用Maven Assembly plugin将依赖打包进jar
    使用maven生成可执行的jar包
    tomcat 8.0 进程没有全部杀死
  • 原文地址:https://www.cnblogs.com/zhangruiping/p/4485486.html
Copyright © 2011-2022 走看看