文法

文法的定义

文法就是指怎么由一堆符号组成一个有含义的句子的规则和协议。

文法的形式定义:

G=(V,T,P,S)

非终结符号集V = {<赋值语句>,<左部量>,<右部表达式>,<简单变量>,<下标变量>,<运算符>}
终结符号集T = {a,b, c,m[1],m[2],m[3], +, -}
语法规则集P = {<赋值语句> → \rightarrow <左部量>=<右部表达式> ,……}
开始符号S = <赋值语句>

类比:

  • V:非终结符集 → \rightarrow 类比英语中的主谓语,名词代词等
  • T:终结符集 → \rightarrow 类比英语中的he ,gave , book
  • P:产生式集合 → \rightarrow 推导的规则
  • S:开始符号

可以说文法是由非终结符(大写字母)和终结符(小写字母)以及 → \rightarrow 组成的。

产生式类比

产生式类比

文法的分类(Chomsky体系)

  • 0型文法:短语结构文法PSG–图灵机

满足文法定义的要求即可:左边必须要包含这些元素或者元素组合中的至少一个非终结符,右边可以是这些元素的任意组合,即左边至少一个大写字母

  • 1型文法:上下文有关文法CSG–线性界限自动机

对于文法G,P中任一产生式α→β的形式为α1A α2 → α1 β α2,其中α1 ,β, α2∈(V ∪ T)*, β≠ε,A ∈V
简单来说就是:右边的长度>=左边的长度(A—> a、B—>ab)
特例:β→ε也是1型文法

  • 2型文法:上下文无关文法CFG–不确定的下推自动机

对于 ∀ \forall α→β∈P,均有α∈V成立
简单来说就是:左边必须是非终结符(大写)
A—>a AB—>asbei 属于2型文法,而 Ab—>DE则不是

  • 3型文法:正则文法RG–有穷自动机

A、B∈V,w∈T+或 ε \varepsilon ε,如果对于 ∀ \forall α→β∈P, α→β
简单来说就是:满足上下文无关文法,一个非终结符推出一个终结符,要么一个非终结符推出一个终结符并且带一个非终结符
左线性(Left Linear)文法:A→Bw或A→w
右线性(Right Linear)文法:A→wB或A→w
左右线性文法不可混用

参考博客: 侃一侃编译原理的“文法”令人头疼的编译原理之文法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值