斯坦福编译原理笔记-5 正则到NFA再到DFA

399 阅读1分钟

正则表达式和有限自动机密切相关,正则表达式相当于理论说明,有限自动机相当于具体实现.

  1. 有限自动机

什么是有限自动机 即输入表,有限状态集合,初始状态,一组可接受的状态,一系列转换。 image.png

有限自动机的图示表示法
两个圆表示可接受状态
单向箭头表示状态转换

image.png

需要了解的概念:自循环,epsilon-moves,如果到了终结状态还有非自循环字符输入,则判定为rejected。

  1. NFA,DFA介绍

DFA:确定的输入对应确定的一个转换,没有epsilon-moves
NFA:一个输入可以对应多个转换,可以有epsilon-moves,所以每一个正确的输入都对应一个状态集。

图:NFA示例 image.png

3.正则表达式到NFA

Thompson构造法

image.png

image.png

image.png

4.NFA到DFA

NFA转DFA的算法
先获取起始节点,然后计算它的空闭包,因此把它和它的空闭包作为一个DFA节点,对于每一个输入,先计算它的空闭包,再查看空闭包对应的DFA节点是否已经存在,存在就转换到对应的节点,否则构造新节点。一直计算直到没有新节点需要计算转移集合。