【编译原理】文法的分类:四种文法、语言定义+示例+它们之间的关系

        Chomsky根据对产生式要求的不同,将文法分为4类,通常称为Chomsky体系。

        设文法G=(V,T,P,S),还有一种表示方法为:G=(V_{N}V_{T},P,S),两者是相同的,本文采用前者。文法定义和约定(比如下文中大小写字母,\alpha \beta为什么会出现在那个位置,为什么没有全部大写或者全部小写)可见博客: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中任一产生式都有一般形式\alpha \rightarrow \beta ,\alpha \in V^{+},\beta \in V^{*},且对\alpha \beta不加任何限制,则称G为0型文法,也叫短语结构文法,记为PSG(Phrase Structure Grammar)。

        由0型文法生成的语言L(G)称为0型语言,也叫短语结构语言(PSL Phrase Structure Language)递归可枚举集(recursively enumerable set)。它可由图灵机识别。

        示例:

二、1型文法、语言

        有两种定义。

        定义一:若0型文法中所有产生式具有形式\alpha _{1}A\alpha _{2}\rightarrow \alpha _{1}\beta A\alpha _{2},其中\alpha _{1}\alpha _{2}\in V^{*}\beta \in V^{+}A\in V,则称G为1型文法,也叫上下文有关文法,记为CSG(Context Sensitivie Grammar)。只有当非终结符A的前后分别为\alpha _{1}\alpha _{2}时,才能将A替换为\beta

        定义二(更好理解):对于\forall \alpha \rightarrow \beta\in P,均有\mid \alpha \mid \leqslant \mid \beta \mid(绝对值为字符串的长度)成立,\alpha \beta\in V^{+},则称G为1型文法上下文有关文法(CSG)

        ps:根据定义,含有\varepsilon的文法不是1型文法,但根据实际需求,将\varepsilon-产生式作为特例,它也是1型文法。

        由1型文法产生的语言L(G)称为1型语言上下文有关语言CSL(CSL Context Sensitivie Language)。它可由线性限界自动机识别。

        示例:

   三、2型文法、语言

        若1型文法G中所有的产生式具有形式\forall \alpha \rightarrow \beta\in P,均有\mid \alpha \mid \leqslant \mid \beta \mid,且A\in V(和1型文法的区别),\beta \in V^{+},则称G为2型文法,也叫上下文无关文法(CFG Context Free Grammar)。

        由2型文法产生的语言L(G)称为2型语言上下文无关语言CFL(CSL Context Free Language)。它可由下推自动机识别。

        ps:若允许\varepsilon-产生式存在,则CFG产生形式为A\rightarrow \betaA\in V\beta \in V^{*}

        示例:

四、3型文法、语言

        若2型文法G中仅含有形如:A\rightarrow aBA\rightarrow a的产生式,其中AB\in Va\in T,则称G为3型文法,也叫正则文法(RG Regular Grammar)或者正规文法

        由3型文法产生的语言L(G)称为3型语言正则语言(RL Regular Language)或者正规语言。它可由有限自动机识别。

        正规语言可由正规表达式表示。

        右线性文法:3型文法G中仅含形如A\rightarrow aBA\rightarrow a的产生式,则称G为右线性文法。

        左线性文法:3型文法G中仅含形如A\rightarrow BaA\rightarrow a的产生式,则称G为左线性文法。

        ps:若一个文法既含有左线性又含有右线性表达式,它不一定是3型文法。

        示例:定义已经比较直观了。

五、四者之间的关系

        四种文法之间的关系是将产生式作进一步限制而定义的,他们呈逐级包含关系。即如果是3型文法那么肯定是2型文法,是2型文法肯定是1型文法……以此类推。

        

  • 19
    点赞
  • 133
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值