摘要: 为了加速转换的处理,我压缩了符号表。具体算法参考任何一本与编译或者自动机相关的书籍。这里的核心问题是处理传递性闭包,transitive closure,这个我目前采取的是最简单的warshall算法,虽然是4次的复杂度,但是由于我构建nfa的时候并没有采取标准的方法,使得nfa的节点减少很多。ps,上上篇所说的re转nfa,我这里有一个修改,就是对于or转换,不再增加节点,而是只增加两条空转换边。相关代码如下 1 #include "nfa_process.h" 2 //首先在原来的nfa节点中,把最后的那个正则的开始节点可达的那些节点提取出来,相当于又一次的拷贝 3 p 阅读全文
posted @ 2013-06-26 16:50 huangnima 阅读(952) 评论(0) 推荐(0) 编辑