编译原理基础知识----文法和语言的形式定义

一、规则和产生式定义

  规则,也称为重写规则、产生式或生成式,是形如α->β或α::=β的(α,β)有序对。其中α称为规则的左部,β称为规则的右部,中间符号读作“定义为”。例如 A->a,读作A定义为a,也把他说成是一条关于A的规则(产生式)。

二、语言的定义形式

  定义一:G定义为(VN,VT,P,S)四元组,其中VN是非终结符(或语法实体,或变量),VT是终结符集;P为规则(α->β)的集合,α€(VNυVT)*,且至少包含一个非终结符,β€(VNυVT)*,,VN,VT,P为非空有穷集。S称作是识别符或开始符,它是一个非终结符,至少在一条规则中作为左部出现。

  VN和VT不含有公共元素,即VN∩VT=Ø(交集为空)

  通常用V表示VNυVT,称为文法G的字母表或字汇表。

  终结符和非终结符:非终结符可理解为一个可拆分元素,而终结符是不可拆分的最小元素。

  终结符指组成语言的基本符号(如基本字、标识符、常数、算符、界符)

  非终结符号(也称为语法变量)表示一定符号串的集合。

  你看到的小写字母一般是终结符,大写字母肯定是非终结符

  定义二:如果α->β是文法G=(VN,VT,P,S)的规则(或说是P中的一种产生式),γ和δ是V*中的任一符号,若有符号ν和ω满足,v= γαδ,,ω=γβδ,则说v(α->β)直接产生ω,或说是ω是v的直接推导,或说成ω直接归约到v,记作v=>ω。

  定义三:如果存在直接推导的序列:v=ω0=>ω1=>ω2=>...=>ωn=ω(n>0),则称v推导产生ω(推导长度为n),或称ω归约到v,记作,v加等于ω。

  文法 到 字符 称为 推导
  字符 到 文法 称为 归约

  注意:通过多重推导得到的最终的终结符称为归约。

  定义四:若有v =>+ ω,或者v = ω,(两种情况)则记作v=>* ω

  例如,存在直接推导序列v=0s1=>00s11=>000s111=>00001111=ω,即0s1=>+00001111,也可记作0s1=>*00001111

  定义五:设G[S]是一文法,如果符号串x是从识别符推导出来,即有S=>*x,则称x是文法G 句型。若x仅有终结符构成,则称x为文法G的句子。

  定义六:文法描述的语言是该文法一切句子的集合。

  注意:C语言中的语法分析是利用相应的规则将字符串或字符拼凑成合法的语法句子。

原文地址:https://www.cnblogs.com/RanWhoo/p/15498725.html