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

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

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

  • 光子晶体能带的程序,用fortran语言编写!好用!
    计算光子晶体能带的程序,用fortran语言编写!好用!-photonic crystals can be calculated with the procedure, using FORTRAN language! Easy!
    2022-01-27 20:14:45下载
    积分:1
  • 拉格朗-牛顿
    拉格朗-牛顿算法-LaGrand-Newton algorithm
    2022-01-23 10:20:33下载
    积分:1
  • 一种利用电磁优化的多阈值分割
    分割是图像处理中最重要的任务之一。它包括在像素分为两个或多个组根据其强度水平和门槛值。分割质量,取决于用于选择阈值的方法。古典实现用于多阈值分割是计算代价昂贵的因为他们彻底搜索优化的目标函数的最佳值。根据这种条件下,利用优化的进化途径已扩大。电磁像算法 (EMO) 是人口的一种进化的方法,模仿之间收费,以发展成员的吸引力排斥机制。不同于其他算法,EMO 展品有趣的搜索功能,而保持较低的计算开销。本文介绍了一种基于 EMO 的阈值 (MT) 算法。该方法结合目标函数提出了流行的大津和卡普尔的 MT 方法 EMO 算法的良好的搜索功能。该算法从内部图像直方图的可行的搜索空间的随机样本。这种样品建立 EMO 上下文的每一个粒子而它的质量评价考虑是受雇的 Otsu 或卡普尔方法的功能的目的。价值观的引导下这些客观的候选解集进化透过 EMO 的经营者直到找到最佳的解决办法。该方法生成一种可以有效地识别在为数较少的迭代的数字图像的阈值的多层次分割算法。实验结果表明性能的 EMO 实现数字图像分割的证据。
    2022-10-16 14:05:03下载
    积分:1
  • 矩阵的奇异值分解
    矩阵的奇异值分解算法-A algorithm of matrix singular value decomposition
    2022-04-06 20:52:10下载
    积分:1
  • 定位在传感器网络中的 改进策略
    资源描述本文首先在查阅和参考大量国内外相关文献的基础上,介绍了无线传感器网 络节点定位技术的研究背景及意义,综述了国内外研究现状,并详细介绍了无线 传感器网络中一些典型的无需测距定位算法和系统。 传统DV-Hop 算法采用较少的锚节点参与平均跳距计算,未知节点使用此平均 跳距值误差大,为了减小DV-Hop 算法的定位误差,提高待定位节点的定位精度, 本文从以下三方面对其进行改进:针对DV-Hop 定位算法适应节点均匀分布的网络 这一特性,在算法的前期提出了节点的部署策略;针对平均每跳距离在求各种跳 数的节点之间的距离时有着不同程度的影响,在算法的中期提出了距离修正值策 略;针对用三边或多边测量法计算未知节点的坐标精度不高这一问题,在算法的 后期使用了具有交叉因子的粒子群算法这一策略 使用Omnet++和Matlab 仿真工具对提出改进算法的有效性进行验证。实验证 明,与DV-Hop 算法相比,三种改进算法的定位精度都得到了一定程度的提高,特 别是基于交叉因子粒子群定位时效果最佳,能更好地满足实际应用的需求。 关键词:无线传感器网络,节点定位技术,距离向量-跳段,平分四块部署,距离 修正,交叉粒子群优化算法
    2022-11-10 18:25:04下载
    积分:1
  • BMPTOYUV的C实现,附详细注释
    资源描述 视频格式转码的C实现,bmp to yuv, 附详细注释。上传的源代码属于个人原创,非抄袭,从来没有上传过,已编译通过,我自己的硕士论文里头已经用过了,绝对真实可信
    2022-11-15 04:20:02下载
    积分:1
  • 平衡二叉树
    这是平衡二叉树的非常不错的程序,值得一看。程序中也有详细的注释,对阅读有很大的帮助,如有问题,可以联系我的。这个程序是刚学算法时,写的课程设计,还有文档,此处没有上传,如果需要,可以联系我。
    2023-05-26 02:05:03下载
    积分:1
  • 考拉兹猜想解决方案使用 c + +
    在这个程序中,证明具有难度声明解决了考拉兹猜想。为任何整数,不管它是什么,会最终导致一个人。它通常被称为合一的任何整数。此程序所示的此属性的一个整数。
    2022-02-06 10:43:19下载
    积分:1
  • 树AVL C语言
    在计算机科学中,二叉树 (阿德尔森 Velskii 和 Landis" 树,发明者的名字命名) 是一个自平衡的二叉查找树。它是第一个被发明这种数据结构。[1] 在 AVL 树的两个孩子的任何节点的子树的高度不同最多之一 ;如果在任何时候他们相差不止一个,再平衡是为了还原此属性。查找、 插入和删除在平均和最坏情况下,所有的猛男 (logn) 时间,其中 n 是在手术前树中节点的数目。插入和删除可能需要树来重新平衡由一个或多个树轮换。
    2022-03-19 19:53:37下载
    积分:1
  • 中值滤波,利用intel的mmx技术,速度比普通快上几十倍
    中值滤波算法,利用intel的mmx技术,速度比普通快上几十倍-median filter, using the MMX technique from Intel, the speed is quite promising when compared to normal one
    2022-06-27 10:50:46下载
    积分:1
  • 696516资源总数
  • 106914会员总数
  • 0今日下载