【编译原理】文法及文法的类型(0型、1型、2型、3型文法)

您所在的位置:网站首页 汇编语言分为哪三类型 【编译原理】文法及文法的类型(0型、1型、2型、3型文法)

【编译原理】文法及文法的类型(0型、1型、2型、3型文法)

2024-06-02 06:08| 来源: 网络整理| 查看: 265

一、文法

文法: 描述语言的语法结构的形式规则

学习文法主要是认识终结符和非终结符:其实这个特别简单,示例: S->Ap S->Bq A->a A->cA B->b B->dB 其中大写字母为非终结符,小写字母为终结符。两者组合可以构成一个式子。  

二、文法的类型

文法定义的形式-四元组(Vn,Vt,P,S): Vn为非终结符集,Vt 为终结符集,P为规则集,S为识别符|开始符,至少要在一个规则中作为左部出现,Vn ∩ Vt = ∅。根据对文法施加不同的限制,分成4种类型。

0型或短语文法:

产生式形如:α->β其中:α、β属于字符串的闭包区间内且α至少包含有一个非终结符;解释:左边有非终结符,右边有终结符。举例:A->ab, A->Cb, A->b0型文法是这几个文法中,限制最少的一个,一般见到的文法都可看做0型文法。0型文法的能力相当于图灵机(Turing)。

1型文法:又称为上下文有关文法:

产生式形如:α->β其中:α->β均满足|α|ε外;解释:式子左边可以有多个字符,但必须有一个非终结符;式子右边可以有多个字符,可以是终结符,也可以是非终结符,但必须是有限个字符且左边长度必须小于右边(\alpha \rightarrow \varepsilon例外)举例:A->B,A->Bba  ,Bb->A,

2型文法:又称为上下文无关文法:

产生式形如:   A ->β解释:式子左边必须是非终结符,然而一个终结符一个非终结符的组合不是一个非终结符,如Ab不是一个非终结符,但是两个非终结符的组合就是一个非终结符了,如AB就是行了;式子右边可以有多个字符,可以是终结符,也可以是非终结符,但必须是有限个字符举例:AB->abc,B->ab

3型文法:又称为正规文法(正规文法又包括左线性文法和右线性文法):

右线性文法:

产生式形如: A  ->αB 或 A  ->α解释:式子左边只能有一个字符,而且必须是非终结符;式子右边最多有二个字符。如果有二个字符必须是(终结符+非终结符)的格式,如果是一个字符,那么必须是终结符。举例:B->aB

左线性文法:

产生式形如: A  ->Bα 或 A  ->α解释:式子左边只能有一个字符,而且必须是非终结符;式子右边最多有二个字符。如果有二个字符必须是(非终结符+终结符)的格式,如果是一个字符,那么必须是终结符。举例:B->Ba

注意:式子右边的格式一定要一致。也就是说如果有一个是(终结符+非终结符)那么所有的式子都必须是(终结符+非终结符), 如果有一个是(非终结符+终结符),那么所有的式子都必须是(非终结符+终结符)

四种类型文法描述能力比较:0型>1型>2型>3型文法

                       A-\varepsilon |aB   

举例:判断     B-Ab|a   属于那种文法。

1、我们分开来写,应该是:A->e   A->aB   B->Ab  B->a 2、我们先来判断是否符合0型文法:0型文法规定左边必须有非终结符,那么这些都是符合的。 3、我们再来看是否符合1型文法:1型文法规定从小推到大。也符合。 4、我们再来看是否符合2型文法:2型文法规定左边必须是非终结符,也满足。 5、我们继续看是否符合3型文法:规定只能符合右线性或者左线性,那么前面一个应该是符合右线性的,后面一个是符合左线性的。所以综合起来就不符合3型文法了。 得出结论:那么这个题目属于2型文法。  



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3