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

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

于 2022-05-27 发布 文件大小:678.10 kB
0 251
下载积分: 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 个回复

  • Practice of dynamic arrays (Second Edition) a large amount of data management is...
    实习性 动态数组(第二版) 大量数据的管理是很多程序员的心病,很难找到一个速度快、效率高、支持超大规模数据的表动态数组是一个功能强大的列表形数据管理链表,利用它可以轻松实现超大数据量的随机插入、删除、修改等操作,它另外一个特点就是速度极快,内存利用率高。 -Practice of dynamic arrays (Second Edition) a large amount of data management is the heart of many programmers, it is difficult to find a fast, high efficiency, support for ultra-large-scale data table dynamic array is a powerful list of shape data management list using it can easily realize large amount of data random insert, delete, modify, such as operation, it is another feature of this approach is extremely fast, high memory utilization.
    2023-05-25 14:35:03下载
    积分:1
  • 数值算法 龙贝格积分 C++实现 用迭代的方法求定积分
    数值算法 龙贝格积分 C++实现 用迭代的方法求定积分-numerical algorithm Long Bergh C integral to the realization of iterative methods used to seek integration
    2022-01-31 21:48:08下载
    积分:1
  • 显示时间
    此程序能够获取计算机的系统时间,并输出出来。程序简洁明了,对于初学C++的同行有较好的帮助,并且具有实用性和可玩性,能极大增强大家学习C++的热情和兴趣。程序本生并不难,在有一定的C语言基础之上加以研究就能看懂!
    2022-04-11 14:37:59下载
    积分:1
  • 比较BP,OMP,StOMP对于lena图像的CS效果
    对于同一副256*256的lena图像进行压缩感知,对比的算法是BP,OMP以及StOMP(FDR),评价指标有:运算时间,压缩比率以及峰值信噪比
    2022-04-10 19:58:26下载
    积分:1
  • 中序遍历二叉树
    此算法是在VS中实现的二叉遍历算法,二叉树的基本的遍历规则有三种:前序遍历,中序遍历和后序遍历。对于每一种遍历,树中每个结点都要经过3次。前序遍历在第一次遇到结点时立即访问,中序遍历第二次遇到结点时访问,后序遍历则到第三次遇到结点时才访问。
    2022-07-23 19:18:16下载
    积分:1
  • 求解无约束最优化问题的各种算法集合!
    求解无约束最优化问题的各种算法集合!-solving unconstrained optimization algorithm for the pool!
    2023-08-01 20:45:03下载
    积分:1
  • 加法乘法静态多功能流水线调度
    流水线分五个步骤,每个步骤的执行时间均为一个单位时间;其中1-2-3-5组成加法流水线,1-4-5组成乘法流水线。加法和乘法不能同时执行。
    2022-01-22 00:18:39下载
    积分:1
  • Introduction queuing theory, mathematical modeling in 2009 good material.
    介绍排队论,是2009年数学建模的好材料。-Introduction queuing theory, mathematical modeling in 2009 good material.
    2022-03-28 10:55:36下载
    积分:1
  • recognition of handwriting that implement with matlab and neutral network.
    recognition of handwriting that implement with matlab and neutral network.
    2022-02-14 19:37:36下载
    积分:1
  • 使用分布傅立叶法计算非线性薛定谔方程。可以得到光纤非线性传输特性。...
    使用分布傅立叶法计算非线性薛定谔方程。可以得到光纤非线性传输特性。-Fourier method using the distribution of nonlinear Schr枚dinger equation. Can be non-linear optical transmission characteristics.
    2023-07-18 05:25:02下载
    积分:1
  • 696516资源总数
  • 106914会员总数
  • 0今日下载