词法分析
- 正规式与正规集
- 基本定义
- 字母表/符合集:字符的集合,元素称为符号。用 表示。
- 字符串/符合串:字母表中的符号连接成的任意有穷序列。用小写希腊字母表示, 为空串。
- 串长度:用 表示。
- 运算
- 字符串连接:
- 字符串幂:
- 串集合乘:
- 串集合幂:
- 串集合正闭包:
- 串集合自反闭包:
- 正规式
- 和 是正规式,正规集分别为 和 。
- 对于任意 , 是正规式,正规集为 。
- 对于任意正规式 (对应 ),、 是正规式,正规集分别为 和 。
- 对于任意正规式 (对应 ), 是正规式,正规集分别为 。
- 正规集
- 一个正规式描述一个正规集,正规集可以有多个正规式。
- 如果 ,则 与 等价。
- 基本定义
- 有限自动机
- 确定性有限自动机
- 即 DFA,定义为 。
- :状态集合。
- :字母表。
- :转移函数 。
- :起始状态。
- :接受状态集,如果 DFA 在其中停止,则字符串被接受,否则被拒绝。
- DFA 接受的串集合称为语言 。
- 如果 ,则 与 等价,记作 。
- 状态表中,第一行状态为起始状态,带 为接受状态。
- DFA 与正规式等价。
- 即 DFA,定义为 。
- 非确定性有限状态机
- 即 NFA,定义为 。
- :转移函数 。
- 其他:同 DFA。
- NFA 读入一个字符,可能转移到多个状态,统一用一个集合表示。
- NFA 可以不读入字符而转移 。
- NFA 识别串,只要有一种被接受的可能的状态路径,就算接受。
- NFA 等价定义与 DFA 相同。NFA 和 DFA 一定等价。
- 即 NFA,定义为 。
- 确定性有限自动机
- NFA 确定化
- 定义
- :已知 ,则 。
- 即在 中通过零或任意次 转移可以到达的所有状态。
- :已知 ,则 。
- 即通过任意次 和恰好一次 转移可以到达的所有状态。
- :已知 ,则 。
- 子集法
- 从原起始状态 开始,求 。
- 对任意 ,。
- 即对于当前子集状态 ,对每个字母求 ,把子集子集加入新状态集合。
- 重新命名状态。
- 定义
- DFA 化简
- 定义
- 无关状态:输入任意字符串都无法到达的状态。
- 等价状态:已知 和 ,如果对于任意 ,从 或 出发都同时到达接受或拒绝状态,则等价。
- 最简:DFA 不存在无关状态,任意两个状态不等价,则称为最小/规约的 DFA,状态数最少。
- 删除无关状态
- 标记处理法。
- 由子集法确定化 NFA 得到的 DFA 不存在无关状态。
- 删除等价状态
- 如果 和 经过字符串 后到达不同接受和拒绝状态,则 和 被 区分。
- 和 被 区分。
- 得到所有等价状态:
- 从 开始,尝试不断划分每一个集合。
- 对于 ,如果 中状态输入 到达的状态不都属于同一个 中的集合,则按照目的状态拆分 ,得到 。
- 重复直到所有集合不可再拆分,同一集合内状态等价。
- 令状态子集为新状态,则得到最小 DFA。
- 定义
- 正规式与自动机转换
- NFA 转正规式
- 构造虚拟状态节点 ,连接 。
- 按照规则转换:

- 只剩下 时,边上表达式即结果。
- 正规式转 NFA
- 构造虚拟状态节点 , 上为源正规式。
- 按照规则转换:

- NFA 转正规式