[Theory] Parsing Techniques 读书笔记(三):正则语言

5. Regular Grammars and Finite-State Automata

名词定义

识别器(recognizer):根据(正则)文法来判断,输入字符串的哪一部分符合文法。

状态转移图(transition diagram):节点表示状态(非终结符),边表示触发转移的终结符。

非确定性有限自动机(non-deterministic finite automaton,NFA),非确定性有限状态机(finite-state automaton, FSA):包含有限个状态的自动机,接受同一个字符从某个状态有两条不同的转移。
确定性有限自动机(deterministic finite-state automaton,DFA):包含有限个状态的自动机,对于相同字符,每个状态只有至多一个转移。

完全自动机(complete automaton):所有转移(包括导致失败的)都被定义了的自动机。

内容总结

正则文法可以表示选择,重复,以及和子串合并,但是不能表示嵌套。

根据正则文法,生成一个状态转移图(transition diagram)。

与上下文无关文法不同的是,正则文法和有限自动机,是可以最小化的。

使用非确定性有限自动机来识别字符串,类似于迷宫的路径搜索,具有指数复杂度。
可以使用子集构造法(subset construction)将非确定性有限自动机转换成确定性有限自动机。

正则文法可以转换成正则表达式,反之亦然。
通常的转换路径:
(1)正则表达式
(2)正则文法
(3)非确定性有限自动机
(4)确定性有限自动机
(5)最小化的确定性有限自动机

正则语言的并集,交集,补集操作,结果仍然是正则语言。

左正则文法(left-regular grammar)与右正则文法(right-regular grammar)处理起来很不一样,
我们可以将左正则文法转换成右正则文法。

可以利用自动机,借助识别前缀的方式,实现快速文本查找。


参考

Parsing Techniques

你可能感兴趣的:([Theory] Parsing Techniques 读书笔记(三):正则语言)