什么是0型文法,1型文法,2型文法,3型文法?

转载自:心动音符(http://493420337.iteye.com/blog/593981)

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

乔姆斯基把方法分成四种类型,即0型、1型、2型和3型。这几种文法类型的概念一定要掌握,是一个非常重要的考点。对于这几种文法,一般书上都只有简单的概念介绍,比较抽象,所以很多学员都没有真正理解。下面我将把概念结合例题进行讲解。

0型文法

设G=(VN,VT,P,S),如果它的每个产生式α→β是这样一种结构:α∈(VN∪VT)*且至少含有一个非终结符,而
β∈(VN∪VT)*,则G是一个0型文法。0型文法也称短语文法。一个非常重要的理论结果是:0型文法的能力相当于图灵机(Turing)。或者说,任
何0型文语言都是递归可枚举的,反之,递归可枚举集必定是一个0型语言。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型文法。

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

时间: 2025-01-03 23:09:44

什么是0型文法,1型文法,2型文法,3型文法?的相关文章

关于3型文法

3型文法也叫正规文法,它对应于有限状态自动机.它是在2型文法的基础上满足:A→α|αB(右线性)或A→α|Bα(左线性). 上面的话是大多数教材中的解释,十分了抽象,其中最不理解的是下面一句话 它是在2型文法的基础上满足:A→α|αB(右线性)或A→α|Bα(左线性). 分析这句话,什么是左线性,什么是右线性 我觉得,左右线性其实说的就是在推导式的右边中,非终结符所位于的位置,例如aB,B(非终结符)位于a的右侧,所以是右线性 之后我在网上找到了这样的解释:如有:A->a,A->aB,B-&g

文法分类的python实现

#-*-coding:utf-8-*- G = raw_input("提示输入文法:"); #G为文法 S = G[2] #识别符号S Vn = raw_input("提示输入Vn:"); #Vn为非终结符号集 charactersVn = Vn.split(','); #记录每个非终结符号 VnString = ""; for var in charactersVn: VnString += var + ","; vAll

南瓜不说话(M01)-正则表达式原理

文法 一个文法可以用一个四元来定义,G = {Vt,Vn,S,P} Vt:一个非空有限的符号集合,它的每个元素称为终结符号; Vn:一个非空有限的符号集合,它的每个元素称为非终结符号,并且Vt∩Vn=Φ; S∈Vn,称为文法G的开始符号; P是一个非空有限集合,它的元素称为产生式; 产生式是指,其形式为α→β,α称为产生式的左部,β称为产生式的右部,符号"→"表示"定义为",并且α.β∈(Vt∪Vn)*,α≠ε,即α.β是由终结符和非终结符组成的符号串; 开始符S必

数据库-编译原理

昨天晚上米老师在三合班给我们讲了数据库的第二章和第三章的知识点,回头自己再看,做个总结来将知识系统一下. 对于米老师给出的第一个图--ER模型研究对象,印象很深刻,感觉这样理解起来更好. 然后老师说道主键.候选键和超键的概念,结合他们三个之间的关系,想到了其他两个知识点.看下图.   这三张图清晰的反映了数据库中主键.候选键.超键之间的关系,第一范式.第二范式.第三范式之间的关系,还有编译原理中0.1.2.3型文法之间的关系. 当然编译原理的文法知识大家了解的不是很多,其实他就是电脑内部进行操作

编译原理学习基本概念汇总

对于计算机专业的学生来说,肯定听说过或者上过一门课,叫做--编译原理,被称为计算机专业的天书,反正不管是学习这门课的时候,还是现在,我都是没搞懂其中的技术和知识.但就期末考试而言,提前做了几道题目,得到了90+的分数,也算是可喜可贺.各位ITer如果想检验自己的智商的话,大可以去学习编译原理,你会收获很多的.现在我把大学时整理的编译原理最基本的概念分享出来. 第一章-绪论 1. 翻译,是指在计算机中放置一个能由计算机直接执行的翻译程序,它以某一种程序设计语言(源语言)所编写的程序(源程序)作为翻

软考路上——编译原理

编译原理在软考中的考点大体上分为以下几点:文法.语法推倒树和算符优先 下面就从这三方面来总结一下. 文法 基本元素 首先要了解文法中最基本的两个元素:非终结符和终结符. 非终结符可以理解为还可以拆分的元素,一般用大写字母来表示:终结符当然就可以看做是不可以拆分的元素,终结符不能转换为其他状态,也不能用其他的量来代替,一般用小写字母来表示. 在图中可以看到,一个文法G是由VN,VT,P,S组成的四元组,其中:VN代表非终结符的集合:VT代表终结符的集合:P是一个规则[α→β,α∈(VN∪VT)且α

鬃嘴释怀说太多就成真不了。

子阻撞砖奏尊仔籽着 释怀说太多就成真不了. http://passport.baidu.com/?business&un=vip&un=%E5%A4%A9%E6%B0%B4%E4%B8%8A%E9%97%A8%E8%BF%99%E5%B0%8F%E5%A7%90#0 http://passport.baidu.com/?business&un=vip&un=%E7%99%BD%E9%93%B6%E4%B8%8A%E9%97%A8%E8%BF%99%E5%B0%8F%E5%A

澜星粘鼐贩逊耐盼系甭妊倏纪傲傲sdfghjk

http://passport.baidu.com/?business&un=R&un=%E5%A4%A7%E5%AE%81%E6%A1%91%E6%8B%BF%E9%80%9A%E5%B0%8F%E5%A7%90#0 http://passport.baidu.com/?business&un=R&un=%E4%B9%A1%E5%AE%81%E6%A1%91%E6%8B%BF%E9%80%9A%E5%B0%8F%E5%A7%90#0 http://passport.bai

在Ubuntu14.04上OpenStack Juno安装部署

在Ubuntu14.04上OpenStack Juno安装部署 0 安装方式 0.1 安装方式 安装方式 说明 目标 备注 单结点 一台服务器运行所有的nova-xxx组件,同时也驱动虚拟实例. 这种配置只为尝试Nova,或者为了开发目的进行安装.   1控制节点+N个计算节点 一个控制结点运行除nova-compute外的所有nova-services,然后其他compute结点运行nova-compute.所有的计算节点需要和控制节点进行镜像交互,网络交互,控制节点是整个架构的瓶颈. 这种配