词法分析:词法规则的形式化——正规式与正规集
Posted One7
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了词法分析:词法规则的形式化——正规式与正规集相关的知识,希望对你有一定的参考价值。
语法描述的基本概念
复习一下语法描述的基本概念:
字母表:一个有穷字符集,记为Σ
字母表中的每个元素称为字符
Σ上的字(字符串):由Σ中的字符构成的一个有穷序列
不包含任何字符的序列称为空字,记为ε
Σ*表示Σ上所有字的全体(Σ上所有字符所能产生的字),包含空字ε
例:设Σ= a,b ,则
Σ* = ε,a,b,aa,ab,bb,ba,aaa,…
若U、V为Σ*的两个子集,则U和V的连接(积)定义为
UV = αβ | α∈U & β∈V ,顺序不可颠倒
例:设U = a,aa 、V = b,bb
则UV = ab,abb,aab,aabb
V自身的n次积记为Vn
V0 = ε
V*是V的闭包:V*=V0∪V1∪V2∪V3∪…
V+是V的正规闭包:V+ = VV*
例:设U= a,aa
U* = ε,a,aa,aaa,……
U+ = a,aa,aaa,aaaa,……
可以看出正规闭包是不包含 ε 的闭包
正规式与正规集
程序语言都有一定的词法规则,按照这些词法规则产生的单词符号都是一些特殊的字符串,
因此,可以形式化地描述词法规则,即描述了词法规则对应的单词集合
正规式即是词法规则一种形式化描述,对应的单词集合称为正规集
(正规式其实就是正则表达式 )
一个字的集合是正规集当且仅当它能用正规式表示
正规式⇔正规集
上面这张图就描述了右边单词表定义的语言的所有的字
因为正规式可以识别语言的所有字,所以可以用正规式进行词法分析
正规式与正规集的递归定义
对于给定的字母表Σ
- ε和∅都是Σ上的正规式,它们所表示的正规集是 ε 和 ∅
- 任何a∈Σ,a是Σ上的正规式,它所表示的正规集是 a
- 若e1和e2都是Σ上的正规式,它们所表示的正规集为L(e1)、L(e2),则有
- (e1|e2)为正规式,表示的正规集为L(e1)∪L(e2)
- (e1·e2)为正规式,表示的正规集为L(e1)L(e2)
- (e1)* 为正规式,表示的正规集为(L(e1))*
仅由有限次使用上述三个步骤定义的表达式才是Σ上的正规式
仅由这些正规式表示的字集才是正规集
根据定义
ε是Σ上的一个字,且是正规集 ε 的正规式,可识别字ε
∅是一个集合,也是正规式,表示是的正规集是 ∅
任何a∈Σ,a既是Σ中的字符,又是Σ上的字,还是Σ上的正规式,表示的正规集是 a
正规式的等价
若两个正规式表示的正规集相同,则称这两个正规式等价
以上证明表示正规式b(ab)*与(ba)*b等价
正规式的性质
交换律:e1|e2 = e2|e1
结合律:e1|(e2|e3) = (e1|e2)|e3 e1(e2e3) = (e1e2)e3 | 及 · 运算均满足结合律
分配律:e1(e2|e3) = e1e2|e1e3 (e2|e3)e1 = e2e1|e3e1 | 对 · 及 · 对 | 的运算均满足分配律
eε = εe = e
e1e2<>e2e1
原文转载自:https://www.cnblogs.com/kafm/p/12721805.html
2022/3/8
以上是关于词法分析:词法规则的形式化——正规式与正规集的主要内容,如果未能解决你的问题,请参考以下文章