ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

词法分析(二):词法规则的形式化——正规式与正规集

2022-03-08 10:01:50  阅读:195  来源: 互联网

标签:aa 形式化 正规 词法 e1 e3 e2


语法描述的基本概念

复习一下语法描述的基本概念:

字母表:一个有穷字符集,记为Σ
字母表中的每个元素称为字符
Σ上的字符串):由Σ中的字符构成的一个有穷序列
不包含任何字符的序列称为空字,记为ε
Σ*表示Σ上所有字的全体(Σ上所有字符所能产生的字),包含空字ε

例:设Σ={ 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

标签:aa,形式化,正规,词法,e1,e3,e2
来源: https://www.cnblogs.com/zhaowanqi/p/15979240.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有