3.3   语 言 单 词 符 号 的 两 种 定 义方式

语 言 单 词 符 号 的 两 种 定 义方式

目前,多数程序设计语言的单词符号都能用正规文法(左线性文法或右线性文法)或正规式来定义。

例如,高级程序设计语言中“标识符”这个单词符号,其单词结构是一个以字母开头的字母数字串,那么定义“标识符”单词符号的左线性文法为

<标识符> → l | <标识符> l | <标识符> d

或右线性文法为

<标识符> → l | l <字母数字>
<字母数字> → l | d | l <字母数字> | d <字母数字>

其中,
l 代表 a ~ z 中任一英文字母。
d 代表 0~9 中任一数字。
“标识符”单词也可用正规式:字母(字母 | 数字)* 定义;或者用 l 代表字母,d 代表数字,则“标识符”单词可用正规式 l (l | d )*来定义。
这两种定义方式各有不同的特点,用正规式定义简洁清晰,而用正规文法来定义则易于识别

3.3.1 正规式与正规集

正规文法在第 2 章已经介绍过,在此给出正规式和正规集的递归定义。
设有字母表 Σ = {a 1 , a 2 ,…, a n },在字母表 Σ 上的正规式和它所表示的正规集可用如下规则来定义:

(1 ) Ø 是 Σ 上的正规式,它所表示的正规集是 Ø ,即空集{}。

(2 ) ε 是 Σ 上的正规式,它所表示的正规集仅含一空符号串,即{ ε }。

(3 ) a i 是 Σ 上的一个正规式,它所表示的正规集是由单个符号 a i 所组成,即{ a i }。

(4 )如果 e 1 和 e 2 是 Σ 上的正规式,它们所表示的正规集分别为 L ( e 1 )和 L ( e 2 ),则

① e 1 | e 2 是 Σ 上的一个正规式,它所表示的正规集为 L ( e 1 | e 2 ) = L ( e 1 ) ∪ L ( e 2 )。

② e 1 e 2 也是 Σ 上的一个正规式,它所表示的正规集为 L ( e 1 e 2 ) = L ( e 1 ) L ( e 2 )。

③ ( e 1 )*也是 Σ 上的一个正规式,它所表示的正规集为 L ((e 1)

  • ) = L ((e 1 ))* 。
    正规式中包含 3 种运算符:连接“·”、或“| ”和闭包“* ”。其中闭包运算的优先级
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值