<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[simonblack的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/simonblack</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; simonblack]]></copyright><item><title><![CDATA[一个Aho-Corasick算法的C++实现]]></title><link>https://blog.youkuaiyun.com/simonblack/article/details/4745741</link><guid>https://blog.youkuaiyun.com/simonblack/article/details/4745741</guid><author>simonblack</author><pubDate>Fri, 30 Oct 2009 00:14:00 +0800</pubDate><description><![CDATA[介绍：Aho Corasick算法，简单的说就是用来在一个“大字符串”中查找精确匹配的某些“小字符串”的，发明者是Alfred V. Aho和Margaret J. Corasick。(向两位前辈致敬，orz)这个算法的牛逼之处在于，只需要一次遍历便可以找出所有匹配的“小字符串”，因此算法复杂度为O(n+m+z)。而一个普通的匹配算法可能需要O(n+km)。n = 所有“小字符串”的累]]></description><category></category></item><item><title><![CDATA[一个简单LR编译器的C++实现]]></title><link>https://blog.youkuaiyun.com/simonblack/article/details/4710313</link><guid>https://blog.youkuaiyun.com/simonblack/article/details/4710313</guid><author>simonblack</author><pubDate>Wed, 21 Oct 2009 20:46:00 +0800</pubDate><description><![CDATA[      今天看到wiki上说手动编写LR编译器非常困难，一般都是由生成器自动生成。就想试一把，找了一个最简单的上下文无关文法，写了个小程序。可能因为我选的文法太简单了吧，发现写LR编译器也没有那么困难。接下来准备挑战一个相对比较复杂的编程语言。  文法：G = (V,E,R,S)V = {S,+}E = {1,a}R = {    S->S+S    S->1    S->a}S ]]></description><category></category></item></channel></rss>