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

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

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

  • JTS java拓扑套件
    JTS Java Topology Suite - a library for accurate 2D geometry. Supports GML.-JTS Java Topology Suite- a library for accurate 2D geometry. Supports GML.
    2022-02-10 07:24:35下载
    积分:1
  • LU分解法求解线性方程组的VB.NET源码.里面有详细的使用说明.
    LU分解法求解线性方程组的VB.NET源码.里面有详细的使用说明.-LU decomposition method for solving linear equations of VB.NET source. There are detailed instructions.
    2022-06-16 23:06:35下载
    积分:1
  • AES128源代码实现
    AES128源代码实现
    2022-02-01 22:45:38下载
    积分:1
  • 最先代码
    最大限度的求解一些算法上的问题,帮助我们。单纯形法用来求解线性规划问题是一种不错的算法。
    2023-07-24 20:45:02下载
    积分:1
  • Local K
    Local K-means Algorithm for Colour Image Quantization
    2022-06-11 17:22:15下载
    积分:1
  • Problème du sac-a-dos
    2023-07-04 10:10:04下载
    积分:1
  • 几种常见随机数的产生
    几种常见随机数的产生-several common random number generated
    2022-03-24 17:23:30下载
    积分:1
  • labVIEW实现e的计算
    资源描述本程序是基于LabView编程算法中的G语言(图形化编程)来实现e的计算。This program calculate e based on LabView.
    2023-04-23 18:45:03下载
    积分:1
  • 基于图像的数字插入算法
    资源描述 资源描述 1、本代码写在word文档中,由于保密性等各种原因,需要修改下,需要认真的看 2、本文档的作用是王bmp文件中输入0-9任意组合的数字 3、算法的主要步骤: 1)数字的大小归一化为5*5的大小,然后每个数字都是二值化图像,最后放到一个数组里面,详细请看word文档里的代码 2)然后根据数字插入的位置,将数字插入道图像中
    2022-01-25 22:22:18下载
    积分:1
  • 图着色算法的源代码
    应用背景图着色:在这个问题中,对于任何给定的图,我们将要在这样一种方式,没有相邻的顶点得到相同的颜色和最少的颜色使用颜色的每个顶点的颜色。如何解决这个问题:首先把图G中的顶点和边的输入数,然后将其值为1。现在我们将尝试每一个顶点的颜色。一个next_color(k)函数在第k个顶点可着色指数。首先我们将Color1第K个顶点。然后我们检查是否连接到任何以前的(k-1)顶点用回溯法。如果连接分配一个颜色x [我] + 1 x [我]是以顶点连接k个顶点的颜色。关键技术目标:并;1、公司及公司的图着色算法的应用研究;跟踪的方法。2、公司及公司的问题,并找到解决问题的方法没有相邻的边。3、公司及公司的工作时间复杂度的评估。4、公司的顶点的颜色进行评估的过程。图着色:一个一个简单图的着色是一个颜色的分配给每个顶点的图,使没有相邻的顶点被分配相同的颜色。这个图的色数是用于着色所需的最少的颜色数图的。这里的问题是用它的色数着色图。在图论,图着色是一种特殊的图形标记,它是一种特殊的图形标记传统上称为“颜色”的标签的元素的分配图受一定约束。它是一种着色的方法的顶点图,这样,没有相邻的顶点共享相同的颜色,这是所谓的顶点着色。类似地,边染色为每个边缘赋予一个颜色没有相邻的两个相邻的边共用相同的颜色,和一个面着色平面图将一个颜色分配给每个面或区域,这样,没有两面共享一个边界有相同的颜色。并;顶点着色是课题的出发点,其他着色问题也可以被转化成一个顶点版本。例如,图的边着色只是线图的顶点着色,平面的着色图为双色的顶点着色。并;
    2022-12-18 07:40:03下载
    积分:1
  • 696516资源总数
  • 106914会员总数
  • 0今日下载