# Ch2 词法分析

把 input 分解成一个个 token

# Regular Expression

  • Language: a set of strings
  • String: a finite sequence of characters

Regular Experssion Notations:

DFA, NFA 相关 见计算理论

# RE 转 NFA

  1. 画出初始态和终态
  2. 分裂规则:

# NFA 转 DFA

从初始状态的闭包开始,每次根据 \epsilon 和当前状态的闭包,得到下一个状态的闭包,直到得到终态的闭包。

example

🌰
把这个 NFA 转成等价的 DFA

初态的闭包是 1、2、6,1、2、6 经过 a 可以转移到 3、7,因为有 \epsilon 转移,所以 3、7 的闭包是 3、4、7、8,同理 3、4、7、8 经过 b 可以到 5、8,由于 8 是终态,把所有包含 8 的圆圈画成终态的环。

# 最小化 DFA

含义:

  1. 没有多余状态:
  • 从这个状态没有通路到达终态
  • 从开始状态出发,任何输入串也不能到达的那个状态
  1. 没有两个状态相互等价
  1. 多余状态直接删除
  2. 合并等价状态
  • 将状态分为终态和非终态两个集合
  • 遍历每个集合,如果经过转换到达的状态都在当前集合里,则不用分,否则划分子集,直到划分不了为止
  • 🌰 例子