2.3.5 递归规则与文法的递归性

您所在的位置:网站首页 递归过程指的是 2.3.5 递归规则与文法的递归性

2.3.5 递归规则与文法的递归性

2024-07-08 23:13| 来源: 网络整理| 查看: 265

2.3.5 递归规则与文法的递归性

1. 递归规则

所谓递归规则,是指在规则的左部和右部具有相同非终结符的规则。 如果文法中有规则 A → A … 称为规则左递归。 如果文法中有规则 A → … A 称为规则右递归。 如果文法中有规则 A → … A … 称为规则递归。

2. 文法的递归性 文法的递归性是指对文法中任一非终结符,若能建立一个推导过程,在推导所得的符号串****中又出现了该非终结符本身,则文法是递归性的,否则是无递归性的。 若文法中有推导 A ⇒+ A … 称文法左递归。 若文法中有推导 A ⇒+… A 称文法右递归。 若文法中有推导 A ⇒+… A … 称文法递归。

例如,文法中有如下规则: U → Vx V →Uy| z 这三条规则都不是递归规则,但有 U ⇒+ Uyx ,则该文法是左递归的。 在文法中使用递归规则,使得我们能用有限的规则去定义无穷集合的语言。

【例 2.11 】 考虑文法 G [ A ]:

A → aB | bB B → a | b

由于该文法无递归性,由它所描述的语言是有穷的。该文法描述的语言为 L ( G [ A ]) ={aa , ab , ba , bb }。

【例 2.12 】 考虑文法 G [ N 1 ]:

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

该文法有直接左递归规则 N → ND ,则称该文法为左递归文法或称文法左递归,其定义的语言为{0 , 1 , 2 }+ 。 由于文法中使用了递归规则,使得我们可用有限的规则去刻画无穷集合的语言。若不用递归规则来定义文法,要表示无穷集合的语言需要用无穷多条规则。例如,例 2.12 中若不用递归规则 N → ND ,则需要用 N → D | DD | DDD | … 即无穷多条规则来定义由数字 0 ,1 , 2 组成的所有无符号整数。

也就是说,当一个语言是无穷集合时,则定义该语言的文法一定是递归的。 需要指出的是,程序设计语言都是无穷集合,因此描述它们的文法必定是递归的。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3