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

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

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

  • 一个简单的计器,用的是vb制作,能完成简单 的四则运.
    一个简单的计算器,用的是vb制作,能完成简单 的四则运算.-A simple calculater,written in VB,and can realize simple four-arithmetic operations.
    2022-02-05 14:59:47下载
    积分:1
  • 高斯积分
    近似I=三重积分((f(x,y,z)dz dy dx)),用
    2022-05-30 23:49:27下载
    积分:1
  • 实现时间序列建模的marple,具体操作程序里有提示
    实现时间序列建模的marple算法,具体操作程序里有提示-Achieve time-series modeling marple algorithm, specific procedures have prompted
    2022-02-15 20:01:06下载
    积分:1
  • 利用相关物体的移动
    利用相关法计算物体的移动-correlation method of mobile objects
    2022-08-13 17:37:32下载
    积分:1
  • 北京大学在线判断几个问题的解决代码
    pku online judge 的部分题解代码-the solution code of several problems of pku online judge
    2022-08-07 00:11:40下载
    积分:1
  • 涡轮特性的程序
    计算涡轮特性的程序-turbine calculation procedures
    2022-01-21 04:42:05下载
    积分:1
  • 独立的AVL的存储介质是在大量的AVL TRE现在可用…
    独立于AVL库的存储媒体 虽现在有不少可用的AVL树库,但几乎都是工作在RAM中,当数据量小的时候,这种方式可行,但当树结构变大时时,读取和存储的时间就会大大变长,任务效率大大降低。能不能直接用磁盘进行树的操作呢?若可以,就不必进行频繁的磁盘内存交换了,本程序就实现了这个功能。实际上,这个程序无论是磁盘还是内存,都很好用。-independent of the AVL storage media is now available in a number of the AVL tree, But almost all work in the RAM, when a small amount of data, this approach feasible, but big tree structure constant, read and storage time will be much longer and the task efficiency has been greatly reduced. Can directly use the disk tree operation? If so, there is no need for frequent exchange of disk memory, the process to achieve this function. In fact, this procedure is disk or memory, are very handy.
    2022-04-09 22:19:08下载
    积分:1
  • Enigma密码实现的清晰的语言原则…
    密码学中 enigma算法的 c语言实现 原理清晰-Enigma cryptography algorithm implementation of the principles of clear language c
    2022-08-03 13:35:20下载
    积分:1
  • Delaunay 剖分源代码
    根据用户输入的二维点(x,y)进行Delaunay三角剖分,主要采用的是种子生长算法来剖分平面的,是计算机图形学当中主要的曲面造型的剖分算法实现。
    2022-03-20 09:16:12下载
    积分:1
  • 两个矩阵相乘的源程序
    两个矩阵相乘的源程序- Two matrices multiplication source program
    2022-04-28 00:36:00下载
    积分:1
  • 696516资源总数
  • 106914会员总数
  • 0今日下载