登录
首页 » 算法 » 一个用MASM写的正则表达式引擎

一个用MASM写的正则表达式引擎

于 2022-05-27 发布 文件大小:678.10 kB
0 203
下载积分: 2 下载次数: 1

代码说明:

此正则表达式引擎属于正统的NFA引擎,基本兼容Perl,简单说一下引擎是怎么实现的: 首先做一个递归下降语法分析,利用栈把正则表达式转换成NFA(以有向图的形式表现),再遍历NFA判断是否能到达完成节点。 实现正则表达式匹配的各种复杂功能的力量来自于回溯,而回溯的基础是栈,回溯能力是通过栈来达成的。 栈中保存了匹配路径中所有的状态,状态回溯就是出栈,状态匹配就是入栈。 除了回溯,一些扩展功能的实现也是通过栈来完成的,比如捕获和零宽断言,都要通过搜索或操纵栈来完成。 转换成NFA再匹配的好处是简化匹配和利于优化和DEBUG:因为不管再复杂的表达式转换成NFA之后只有边和节点组成,边和节点也只有顺序、分支、循环这三种形式组成。 详细原理说明看下面关于实现引擎的文章,第3条是我理解引擎匹配原理的入门参考。 支持GBK和UTF8编码   ==参考和学习资料== 关于实现引擎的文章: 1、《Perl语言编程》第五章  书 2、《精通正则表达式》  书 3、构造正则表达式引擎   http://www.cppblog.com/vczh/archive/2008/05/22/50763.html   我的原理学习入门参考 4、NFA引擎匹配原理   http://blog.csdn.net/lxcnn/article/details/4304651 5、英文参考资料   请点击左侧文件开始预览 !预览只提供20%的代码片段,完整代码需下载后查看 加载中 侵权举报

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • 遗传求解货郎担问题(TSP)
    本代码用遗传算法求解货郎担问题(TSP)。货郎担问题是组合数学中的著名问题,在算法领域颇受关注。问题是这样提出的:某旅行推销商,要到n个城市去推销商品,从其中某个城市出发,进出每个城市一次,最后返回驻地城市,问如何安排其路线,使行程最短。对于TSP问题,若采用穷举搜索算法,则需要考虑所有可能的情况,找出所有的回路,在对其进行比较,找出最佳路径。在n个城市TSP问题中,一条有效路径可以看成n个城市的排列。n个城市的全排列共有n!种,TSP问题没有限定路径的起点及方向,因此路径总数为n!/2n,可见穷举法随着城市数n的增大复杂度急剧增长。用遗传算法求解TSP问题的思想是先随机生成若干条有效路径,在选择其中较优的路径参与繁殖,生成下一代。再对下一代进行类似操作。经过若干代的进化后,将会收敛于一个较优解。此外,在遗传过程中可以加入变异算子来模仿生物界中的变异现象。
    2022-07-04 17:09:54下载
    积分:1
  • 常微分方程的龙格库塔系列程序,从二级到四级的
    常微分方程的龙格库塔法系列程序,从二级到四级的算法。-Ordinary Differential Equations Runge- Kutta method series of procedures, from two to four algorithms.
    2022-05-31 06:14:50下载
    积分:1
  • 自个写的一个穷举二十四点的小程序
    自个写的一个穷举法算二十四点的小程序- Oneself writes an exhaustion method calculates 24 scripts
    2022-06-11 23:59:02下载
    积分:1
  • 学生管理系统
    这是一篇很好的代码,希望可以帮助他人,而且我也收益颇多,所以我把这代码上传上来,希望可以解决更多人的问题
    2022-02-27 01:33:11下载
    积分:1
  • leach
    该算法基本思想是:以循环的方式随机选择蔟首节点,将整个网络的能量负载平均分配到每个传感器节点中,从而达到降低网络能源消耗、提高网络整体生存时间的目的。仿真表明,与一般的平面多跳路由协议和静态分层算法相比,LEACH协议可以将网络生命周期延长15%。LEACH在运行过程中不断的循环执行蔟的重构过程,每个蔟重构过程可以用回合的概念来描述。每个回合可以分成两个阶段:蔟的建立阶段和传输数据的稳定阶段。为了节省资源开销,稳定阶段的持续时间要大于建立阶段的持续时间。蔟的建立过程可分成4个阶段:蔟首节点的选择、蔟首节点的广播、蔟首节点的建立和调度机制的生成。
    2022-03-24 03:15:23下载
    积分:1
  • Learnin Mathematics with the ABACUS Activity
    Learnin Mathematics with the ABACUS Activity-book part 7
    2023-03-07 04:05:04下载
    积分:1
  • 快速排序的时间测量
    """
    2023-08-31 01:10:03下载
    积分:1
  • 霍夫曼树-C++源码
    应用背景霍夫曼树-C++源码实现:哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。关键技术给定n个权值作为n的叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。
    2022-08-25 15:08:30下载
    积分:1
  • one
    一维搜索程序,我自己编的!大家多多下载,多多支持啊!-one-dimensional search process, I developed! Members can download the generous support ah!
    2022-11-28 14:45:03下载
    积分:1
  • 地震勘探正演模拟
    地震勘探中的正演模拟,是层状模型的,有限差分正演,真的很不错的,用fortran编写的,哈哈哈哈哈
    2022-01-25 18:39:55下载
    积分:1
  • 696516资源总数
  • 106914会员总数
  • 0今日下载