摘要:
最后是几个个小作业 : 给定如下的正则表达式 (a|b)((c|d)*),请完成如下练习: (1)使用Thompson算法,将该正则表达式转换成非确定状态有限自动机(NFA); (2)使用子集构造算法,将该上述的非确定有限状态自动机(NFA)转换成确定状态有限自动机(DFA); (3)使用Hopcr 阅读全文
摘要:
到上一篇博客为止, 词法分析器生成器内部的整个工作流程就全部结束了, 最后再提一下最终生成的DFA在具体代码上的的表现形式... 所谓的转移表, 说白了就是二位矩阵, 这是表驱动算法的代码实现... 其实这段代码中有两个重要的思想: 1. 关于字符匹配规则的一个惯例 (但实际情况也依据编程语言不同而 阅读全文
摘要:
最后是最小化算法, 它的目的其实在于通过合并的方式, 减少状态数, 然后使得最终生成的代码中用来表示状态转移的数据结构尽量小, 以此节约空间和时间. DFA中运用最广泛的算法是hopcroft算法, 接下来就是对该算法的简要介绍... 这个算法的第一步是将所有的状态(也就是代码中的nodes) 划分 阅读全文