【软考】编译原理之文法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/LYN_xj94512/article/details/82953029
一、定义

描述语言语法结构的规则
文法G是一个四元组,可表示为G=(VN,VT,P,S)
PS:

  1. VN:表示非终结符集合,一般使用大写字母表示
  2. VT:表示终结符集合,一般用小写字母表示
  3. P:表示产生式的集合
  4. S:表示开始符号
二、推导

用产生式的右侧替换产生式的左侧,直到产生一个终结符的序列为止。
例子:
文法G[S]:S->0S1
    S->01
S=>0S1=>00S11=>000111
在推导的时候有直接推导,这时候会遇见两种符号 “+”“*” 这两个分表表示什么呢?
+:表示至少一次
*:表示任意次
推导分为两类:最左推导和最右推导,其中最右推导为规范推导
例子:
文法G[S]:S->aSbA
    A->aA|a
    S->a
如皋要得到最后的推导的结果是aabaa,使用最右推导是怎样的呢?
S=>aSbA=>aSbaA=>aSbaA=>aSbaa=>aabaa (在=>上面写r就可以了)
其实就是要在文法最右侧开始进行推导,此题中也就是aSbA的最右侧开始,最左推导就是与其相反,在aSbA的最左侧开始

三、归约

用产生式的左侧替换产生式的右侧
例子:
文法G[S]:S->0S1
    S->01
000111=>00S11=>0S1=>S
归约分为两种归约:最左归约和最右归约,其中最左归约为规范归约
归约就是推导的反面。

四、分类
类 型 别 名 代 表 描 述
0型文法 短语文法 图灵机 文法的每一个产生式α->β,均有α∈(VN∪VT)^+,α至少含有一个非终结符,且β∈(VN∪VT)^*
1型文法 上下文有关文法 线性界限自动机 在0型的基础上,文法的每一个产生式任意α->β,且|α|<=|β|
2型文法 上下文无关文法 下推自动机 在1型的基础上,文法的每一个产生式α->β,且α属于非终结符
3型文法 正规文法 有限自动机 在2型的基础上,文法的每一个产生式任意α->β,且有类似于A->aB或者A->a(其中A,B为非终结符,a为终结符)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/LYN_xj94512/article/details/82953029
今日推荐