Chomsky根据对产生式要求的不同,将文法分为4类,通常称为Chomsky体系。
设文法G=(V,T,P,S),还有一种表示方法为:G=(,
,P,S),两者是相同的,本文采用前者。文法定义和约定(比如下文中大小写字母,
为什么会出现在那个位置,为什么没有全部大写或者全部小写)可见博客:https://innocence.blog.csdn.net/article/details/105498053
快速查阅:0型文法也叫短语结构文法,PSG。0型语言PSL也叫短语结构语言或递归可枚举集。
1型文法也叫上下文有关文法,CSG。1型语言CSL也叫上下文有关语言。
2型文法也叫上下文无关文法,CFG。2型语言CFL也叫上下文无关语言。
3型文法也叫正则文法或正规文法,RG。3型语言RL也叫正则语言或正规语言。分左线性文法和右线性文法。
一、0型文法、语言
若P中任一产生式都有一般形式,且对
不加任何限制,则称G为0型文法,也叫短语结构文法,记为PSG(Phrase Structure Grammar)。
由0型文法生成的语言L(G)称为0型语言,也叫短语结构语言(PSL Phrase Structure Language)或递归可枚举集(recursively enumerable set)。它可由图灵机识别。
示例:
二、1型文法、语言
有两种定义。
定义一:若0型文法中所有产生式具有形式,其中
,
,
,
,则称G为1型文法,也叫上下文有关文法,记为CSG(Context Sensitivie Grammar)。只有当非终结符A的前后分别为
,
时,才能将A替换为
。
定义二(更好理解):对于,均有
(绝对值为字符串的长度)成立,
,则称G为1型文法或上下文有关文法(CSG)。
ps:根据定义,含有的文法不是1型文法,但根据实际需求,将
-产生式作为特例,它也是1型文法。
由1型文法产生的语言L(G)称为1型语言或上下文有关语言CSL(CSL Context Sensitivie Language)。它可由线性限界自动机识别。
示例:
三、2型文法、语言
若1型文法G中所有的产生式具有形式,均有
,且
(和1型文法的区别),
,则称G为2型文法,也叫上下文无关文法(CFG Context Free Grammar)。
由2型文法产生的语言L(G)称为2型语言或上下文无关语言CFL(CSL Context Free Language)。它可由下推自动机识别。
ps:若允许-产生式存在,则CFG产生形式为
,
,
。
示例:
四、3型文法、语言
若2型文法G中仅含有形如:,
的产生式,其中
,
,则称G为3型文法,也叫正则文法(RG Regular Grammar)或者正规文法。
由3型文法产生的语言L(G)称为3型语言或正则语言(RL Regular Language)或者正规语言。它可由有限自动机识别。
正规语言可由正规表达式表示。
右线性文法:3型文法G中仅含形如,
的产生式,则称G为右线性文法。
左线性文法:3型文法G中仅含形如,
的产生式,则称G为左线性文法。
ps:若一个文法既含有左线性又含有右线性表达式,它不一定是3型文法。
示例:定义已经比较直观了。
五、四者之间的关系
四种文法之间的关系是将产生式作进一步限制而定义的,他们呈逐级包含关系。即如果是3型文法那么肯定是2型文法,是2型文法肯定是1型文法……以此类推。