好按“学习/阅读顺序”给你排不是按字母顺序。---## 一、先看核心自动机本体**1. Automaton** — 自动机本体存状态和转移的 int[]。**2. Transition** — 一条转移的临时对象遍历时用。**3. StatePair** — 状态对 (s1, s2)交集、子集判断用。**4. TooComplexToDeterminizeException** — 确定化超限的异常。**先看这四个理解“自动机是什么”。**---## 二、再看造自动机**5. Automata** — 基础自动机工厂makeChar、makeString、makeAnyString、makeBinaryInterval。**6. DaciukMihovAutomatonBuilder** — 一组字符串 → 最小化 DFA。**7. AutomatonProvider** — 按名字提供自动机的接口。**看这三个理解“怎么造零件”。**---## 三、再看自动机运算**8. Operations** — 运算库并、交、连接、重复、补、确定化、反转、去死状态。**9. MinimizationOperations** — 最小化Hopcroft 算法。**看这两个理解“怎么拼零件、怎么精简”。**---## 四、再看确定化的辅助**10. IntSet** — 整数集合抽象。**11. StateSet** — 带引用计数的整数集合。**12. FrozenIntSet** — 不可变快照作 HashMap key。**看这三个理解“确定化时状态集合怎么维护”。**---## 五、再看正则编译**13. RegExp** — 正则解析器 编译器字符串 → AST → Automaton。**看这个理解“正则怎么变自动机”。**---## 六、再看模糊查询编译**14. LevenshteinAutomata** — 编辑距离 → 自动机。**15. Lev1ParametricDescription** — n1、无交换的参数化描述。**16. Lev1TParametricDescription** — n1、有交换。**17. Lev2ParametricDescription** — n2、无交换。**18. Lev2TParametricDescription** — n2、有交换。**看这些理解“模糊查询怎么编译”。**---## 七、再看运行自动机**19. RunAutomaton** — 查表运行器抽象基类。**20. ByteRunAutomaton** — 字节级运行器。**21. CharacterRunAutomaton** — 字符级运行器。**22. UTF32ToUTF8** — 码点级 → 字节级自动机转换器。**23. CompiledAutomaton** — 查询执行封装分类 NONE/ALL/SINGLE/NORMAL。**看这些理解“自动机怎么执行、怎么匹配词项”。**---## 八、最后看枚举**24. FiniteStringsIterator** — 枚举自动机接受的所有有限字符串。**25. LimitedFiniteStringsIterator** — 同上限量。**看这两个理解“自动机怎么反向枚举”。**---## 九、完整顺序一句话版本体Automaton → Transition → StatePair → TooComplexToDeterminizeException造零件Automata → DaciukMihovAutomatonBuilder → AutomatonProvider拼零件Operations → MinimizationOperations确定化辅助IntSet → StateSet → FrozenIntSet正则编译RegExp模糊编译LevenshteinAutomata → 4 个 Lev*ParametricDescription运行RunAutomaton → ByteRunAutomaton / CharacterRunAutomaton → UTF32ToUTF8 → CompiledAutomaton枚举FiniteStringsIterator → LimitedFiniteStringsIterator---## 十、一句话总结**按“本体 → 造 → 拼 → 编译 → 运行 → 枚举”的顺序看**1. **本体**Automaton、Transition、StatePair2. **造**Automata、DaciukMihovAutomatonBuilder3. **拼**Operations、MinimizationOperations4. **确定化辅助**IntSet、StateSet、FrozenIntSet5. **正则编译**RegExp6. **模糊编译**LevenshteinAutomata 4 个 Lev*7. **运行**RunAutomaton、ByteRunAutomaton、CharacterRunAutomaton、UTF32ToUTF8、CompiledAutomaton8. **枚举**FiniteStringsIterator、LimitedFiniteStringsIterator**这个顺序就是“从描述到执行”的完整链路。**
阅读完成 · 觉得有帮助?