首页 理论教育 编译原理与实践:正规式与正规集简介

编译原理与实践:正规式与正规集简介

时间:2023-11-17 理论教育 版权反馈
【摘要】:字母表Σ上的正规式用来描述一种称为正规集的语言。仅由有限次使用上述三步骤而得到的表达式才是Σ上的正规式,仅由这些正规式所表示的集合才是Σ上的正规集。正规式的运算符“∣”读为“或”,“·”读为“连接”,“*”读为“闭包”;在不致混淆时,括号可以省去,但规定算符的优先顺序为:先“*”,次“·”,最后“∣”。于是,符合题意的正规式为:b(a|b)*aa若两个正规式所表示的正规集相同,则认为二者是等价的。

编译原理与实践:正规式与正规集简介

字母表Σ上的正规式用来描述一种称为正规集的语言。下面是正规式和正规集的递归定义:

(1)ε和φ都是Σ上的正规式,它们所表示的正规集分别为{ε}和φ;

(2)对任何a∈Σ,a是Σ上的一个正规式,它所表示的正规集为{a};

(3)假定U和V都是Σ上的正规式,它们所表示的正规集分别记为L(U)和L(V),那么,(U|V)、(U·V)和U*也都是正规式,它们所表示的正规集分别为L(U)∪L(V)、L(U)L(V)(连接积)和(L(U))*(闭包)。

仅由有限次使用上述三步骤而得到的表达式才是Σ上的正规式,仅由这些正规式所表示的集合(即Σ上的语言)才是Σ上的正规集。

正规式的运算符“∣”读为“或”,“·”读为“连接”,“*”读为“闭包”(即任意有限次的自重复连接);在不致混淆时,括号可以省去,但规定算符的优先顺序为:先“*”,次“·”,最后“∣”。连接符“·”一般可省略不写。

例3.2 当Σ={0,1}时,下面是Σ上的正规式和相应的正规集:

正规式 正规集

(0|1)* 包括空串在内的所有二进制字符串

0(0|1)*0 长度至少为2,以0开始和结束的二进制字符串

0*10*10*10* 所有包含3个1的二进制字符串(www.xing528.com)

例3.3 设Σ={a,b},试写一个正规式,使其表示的正规集为“不以a开头,但以aa结尾的字符串集合”。

由于Σ={a,b},若不以a开头,则必以b开头,而结尾由题目已知,中间部分没有限制,为a、b组成的任意长度的字符串。于是,符合题意的正规式为:b(a|b)*aa

若两个正规式所表示的正规集相同,则认为二者是等价的。两个等价的正规式U和V记为U=V。例如,b(ab)*=(ba)*b,(a|b)*=(a*b**

令U、V、W均为正规式,显然,下列关系成立:

(1)交换律:U|V=V|U

(2)结合律:U|(V|W)=(U|V)|W

U(VW)=(UV)W

(3)分配律:U(V|W)=UV|UW

(U|V)W=UW|VW

(4)εU=Uε=U

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈