有关编译原理中的4种文法

一.文法

Chomsky于1956年建立形式语言体系,他把文法分成四种类型:0、1、2、3型。
与上下文无关文法一样,它们都由四部分组成,但对产生式的限制有所不同。
文法G定义为四元组(VN ,VT ,P,S)

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

看一下这4种类型文法的描述能力比较
有关编译原理中的4种文法_第1张图片

二.0型(短语文法,图灵机):
设G=(VN,VT,P,S),
产生式形如:α→β,
其中,α∈(VN∪VT)*且至少含有一个非终结符
而β∈(VN∪VT)*,则G是一个0型文法。
0型文法是这几类文法中,限制最少的一个,所以我们在试题中见到的,至少是0型文法

重要的理论结果:0型文法的能力相当于图灵机。或者说,任何0型文法都是递归可枚举的;反之,递归可枚举集必定是一个0型语言。

三.1型(上下文有关文法,线性界限自动机)
它是在0型文法的基础上每一个α→β,都有|β|>=|α|。这里的|β|表示的是β的长度。仅 S→ε 例外。

这种文法意味着,对非终结符进行替换时务必考虑上下文,并且,一般不允许替换成空串ε 。

例如:如有A→Ba则|β|=2,|α|=1符合1型文法要求。反之,如aA→a,则不符合1型文法。
例如:假若αAβ→ αγβ是1型文法G的一个产生式,α和β都不空,则非终结符A只有在α和β 这样一个上下文环境中才可以把它替换成γ。

四.2型(上下文无关文法,非确定下推自动机)
2型文法是在1型文法的基础上,再满足:每一个α→β都有α是一个非终结符。
产生式形如: A →β(注:箭头左边的部分必须为且仅为一个非终结符)。
例如:A→Ba,符合2型文法要求。
例如:Ab→Bab虽然符合1型文法要求,但不符合2型文法要求,因为其α=Ab,而Ab不是一个非终结符。A→Bab就对啦。

五.3型(正规文法,有限自动机)
3型是在2型文法的基础上满足:
A→α|αB(右线性)或A→α|Bα(左线性)。
注意: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型方法的要求了。

你可能感兴趣的:(编译原理)