乔姆斯基文法分类

1、0型~3型文法

解:乔姆斯基文法分类把文法分为四类

0型文法 (短语文法)========》图灵机

设G=(VN,VT,P,S)其中VT是非空有限集,称为终端符集,VN也是非空有限集,称为变量集;P为产生式集;S为起始符,S∈VN。如果它的每个产生式α→β是这样一种结构:α∈(VN∪VT)且至少含有一个非终结符,而β∈(VN∪VT),则G是一个0型文法; 任何0型文语言都是递归可枚举的,反之,递归可枚举集必定是一个0型语言;

1型文法(上下文有关文法)========》线性有界自动机

在0型文法的基础上|a|<=|b|,|a|为a的长度;
式子左边可以有多个字符,但必须有一个非终结符;
式子右边可以有多个字符,可以是终结符,也可以是非终结符,但必须是有限个字符;
左边长度必须小于右边(\alpha \rightarrow \varepsilon例外);

2型文法(上下文无关文法)========》下推自动机

2型文法是在1型文法的基础上,再满足:每一个α→β都有α是非终结符。如A->Ba,符合2型文法要求;
如Ab->Bab虽然符合1型文法要求,但不符合2型文法要求,因为其α=Ab,而Ab不是一个非终结符。;

3型文法(正规文法)========》有限状态自动机

它是在2型文法的基础上满足:A→α|αB(右线性)或A→α|Bα(左线性)。

判断方法:

首先,应该明确,四种文法,从0型到3型,其规则和约定越来越多,限制条件也越来越多,
所以我们应该按照3->2->1->0的顺序去判断,一旦满足前面的规则,就不用去判断后面的了。

1.先来看看3型文法的判断规则
①:左边必须只有一个字符,且必须是非终结符;
②:其右边最多只能有两个字符,要么是一个非终结符+终结符(终结符+非终结符),要么是一个终结符。
③:对于3型文法中的所有产生式,若其右边有两个字符的产生式,这些产生式右边两个字符中终结符和非终结符的相对位置一定要固定,
也就是说如果一个产生式右边的两个字符的排列是:终结符+非终结符,那么所有产生式右边只要有两个字符的,都必须满足终结符+非终结符。
反之亦然。

2.再看看2型文法判断规则
①:与3型文法的第一点相同,即:左边必须有且仅有一个非终结符。
②:2型文法所有产生式的右边可以含有若干个终结符和非终结符(只要是有限的就行,没有个数限制)。

3.最后再看看1型文法判断规则
①:1型文法所有产生式左边可以含有一个、两个或两个以上的字符,但其中必须至少有一个非终结符。
②:与2型文法第二点相同,但需要满足|α|≤|β|.

0型文法不需要判断了,一般的文法都是0型文法。

参考原文:

;