编译原理-文法

来源:互联网 发布:新浪实时股票数据接口 编辑:程序博客网 时间:2024/05/01 05:50

1、文法的定义

描述语言的语法结构的形式规则称为文法。(组合成语言的规则)

2、文法的基本形式

                 α→β

终结符(a,b,c,…..) )和非终结符(A,BC,D,….):

终结符具有原子性,不可再分。非终结符,可以再分。

非终结符(程序)->终结符(语句)

终结符不可以单独出现在α中;

3、文法组成

    文法G是一个四元组,可表示为GVT,VN,S,P)。

  VT(terminal symbol是一个非空有限集,每个元素称为终结符。

 VN(nonterminal symbol是一个非空有限集,每个元素称为非终结符,它是不能单独在左边的。

 S是一个非终结符,称为开始符号;它至少要在一条产生式中作为左部出现。

P是一个产生式集合(有限)。

 

以下图体会一下文法的组成:

4、文法中的四种类型

       认识四种文法

     

      文法之间的关系

                       0型文法是限制最小的文法,其他的一级比一级严格;也就是说满足3型文法一定满足0型、1型、2型文法,2型文法满足前两种文法,以次类推。

 

文法举例

         0型文法:

           例:A→a,Aa→a,aA→a(左边至少有一个大写字母)

         1型文法:

例:A→a,A→ab,Aa→BAc

注意:α→ε也满足1型文法。

2型文法:

例:A→a,A→ab,A→BAc(在1型文法的前提下,左边必须都是大写字母)

         3型文法:

例子1: A→a,A→aB,B→a,B→cB,符合。

例子2:A→ab,A→aB,B→a,B→cB或推导为:A→a,A→Ba,B→a,B→cB   ?

        结果:都不是3型文法。

        更正: A→a,A→aB,B→a,B→cB符合。

                    A→a,A→aB,B→a,B→cB 或A→a,A→Ba,B→a,B→Bc 符合

5、小结

         一、

         一个文法中要么符合左线性,要么符合右线性,两套规则不能同时出现在一个语法中 

二、

         1)一个产生式推出的非终结符只能有一个;2)如果是一个文法中,非终结符要么都在右边的右边,要么都在右边的左边。

0 0