词法分析
由语言构造正则表达式
方法 1:逐步求精
方法 2:基于有限自动机
方法:类似于之前提到的 “电路状态转换图”。
- 首先针对关心奇偶性的符号建立状态及状态之间的转换
- 将其扩充为 GNFA
- 逐个删去状态,合并边上的标签
- 最终将所有的状态(除起始状态和结束状态)删除完之后,得到的由起始状态指向结束状态的边上的标签就是我们想要的正则表达式
例子 1:
考虑语言 \(L = \{ w \in (a, b)^* | a, b 均为偶数个数\}\)
例子 2:
考虑语言 \(L = \{ 能被 3 整除的二进制数 \}\)
参考
[1] 《计算理论导引》,Michael Sipser