2.3.4 规范推导和规范归约

2.3.4 规范推导和规范归约

例如,设有文法 G [ N 1 ]:

N 1 → N
N → ND | D
D →0|1|2

该文法所定义的语言是由数字 0 ,1 , 2 组成的所有无符号整数。符号串 12 是该文法的一个句子,该句子可以通过下列 3 个不同的推导序列推导出来:

① N 1 ⇒ N ⇒ ND ⇒ N 2⇒ D 2⇒12
② N 1 ⇒ N ⇒ ND ⇒ DD ⇒1 D ⇒12
③ N 1 ⇒ N ⇒ ND ⇒ DD ⇒ D 2⇒12

所谓最左(最右)推导,是指对于一个推导序列中的每一步直接推导 α ⇒ β ,都是对 α 中的最左(最右)非终结符进行替换。例如,在上面的 3 个推导序列中:
① 是最右推导;
② 是最左推导;
③ 既不是最左推导,也不是最右推导

最右推导也称为规范推导,用规范推导推导出的句型称为规范句型
规范推导的逆过程,称为最左归约,也称为规范归约
事实上,归约是与推导相对的概念,推导是把句型中的非终结符用规则的一个右部来替换的过程,而归约则是把句型中的某个子串用一个非终结符来替换的过程。
若用 ⇒•表示归约,设 A → α 是文法 G 中的一个规则,则有

xAy ⇒ xαy
xαy⇒• xAy

例如,文法 G [ N 1 ]中有规范推导

N 1 ⇒ N ⇒ ND ⇒ N 2⇒ D 2⇒12

则有规范归约

12⇒*D2⇒*N 2⇒*ND ⇒*N ⇒*N1

【例 2.10 】设有文法 G [ S ]:

S → AB
A → A 0|1 B
B →0| S 1

请给出句子 101001 的最左、最右推导。
分析 最右推导是指在推导过程中任何一步 α ⇒ β (α 和 β 是句型),都是对 α 中的最右非终结符进行替换。句子 101001 的最右推导为

S ⇒ AB ⇒ AS 1⇒ AAB 1⇒ AA 01⇒ A 1 B 01⇒ A 1001⇒1 B 1001⇒101001

最左推导是指在推导过程中任何一步 α ⇒ β ,都是对 α 中的最左非终结符进行替换。句子101001 的最左推导为

S ⇒ AB ⇒1 BB ⇒10 B ⇒10 S 1⇒10 AB 1⇒101 BB 1⇒1010 B 1⇒101001

从例 2.10 中可以看出,在规范推导(最右推导)中,每步直接推导 xAy ⇒xαy中的符号串 y只含终结符。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值