7、5.1词法规则形式化——正规集与正规式
1、回顾
- 词法分析器的功能
- 输入源程序、输出单词符号
- 词法分析器的设计
- 给出程序设计语言的单词规范——单词表
- 对照单词表设计识别该语言所有单词的状态转换图
- 根据状态转换图编写词法分析程序
正规式和正规集
- 正规集可以用正规式表示
- 正规式是表示正规集一种方法
- 一个字集合是正规集当且仅当它能用正规式表示
正规式和正规集的递归定义
- 对给定的字母表 Σ
- ε 和 ∅都是 Σ上的正规式,它们所表示的正规集为 { ε } 和 ∅;
- 任何 a∈Σ ,a是Σ上的正规式,它所表示的正规集为 {a} ;
- 假定e1和e2都是Σ上的正规式,它们所表示的正规集为L(e1) 和L(e2),则:
- (e1|e2)为正规式,它所表示的正规集为L(e1)∪L(e2)
- (e1.e2)为正规式,它所表示的正规集为 L(e1)L(e2)(连接运算)
- (e1)*为正规式,它所表示的正规集为(L(e1))*
- 仅由有限次使用上述三步骤而定义的表达式才是Σ上的正规式,仅由这些正规式表示的字集才是 Σ上的正规集。
正规式的等价性
- 若两个正规式所表示的正规集相同,则称这两个正规式等价。如
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 <> e2 e1