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

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

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

  • 用c语言实现第一类读
    用c语言实现第一类读-写者问题 -using language first reading-writing problem
    2022-03-06 23:25:53下载
    积分:1
  • 同时辨识模型阶次和参数的,源自于潘立登的系统建模与辨识。...
    同时辨识模型阶次和参数的算法,源自于潘立登的系统建模与辨识。-At the same time identification model order and parameters of the algorithm, derived from Li-Deng Pan system modeling and identification.
    2023-06-15 16:30:03下载
    积分:1
  • ACM无向连通图最小生成树
    题目描述 请输出无向连通图最小生成树权重之和。 输入 第一行是2个整数,分别表示顶点个数n和边数m。接下来的m行中,每一行第一个整数表示边的开始顶点,第二个表示边的结束顶点,第三个表示这条边的权重。 ( 测试数据中保证图是连通图; 没有自环; 两个顶点之间只有一条边; 0
    2022-02-22 12:05:25下载
    积分:1
  • 信息检索袋
    应用背景该代码执行创建包的话,随着堵塞和停用词去除, ; ;计算机视觉词袋模型 ;(弓模型)可以应用于 ;图像分类,通过处理图像的特征词。在文档分类中,一个单词的袋子,是一个稀疏向量的单词的出现计数,这是,一个稀疏的,直方图和,通过词汇。计算机视觉,一个视觉词汇的袋,是一个具有局部图像特征的词汇的出现计数的向量。关键技术Python是随着使用的词典在Python。用弓模型来表示图像,图像可以被视为文档。同样,“文字”在图像中需要被定义。要做到这一点,它通常包括以下三个步骤: ;特征检测、特征描述,并生成。[ 1 ]  ;一个弓模型的定义可以是“直方图表示基于独立特征”。[ 2 ]  ;基于内容的图像检索(CBIR)出现在这个图像表示技术的早期采用者。[ 3 ]
    2023-04-25 02:50:03下载
    积分:1
  • mfcc,dtw单音内容识别
    这是个MFCC-DTW的单个音的识别程序,已经可以运行,但是识别率在80%左右,希望有大神可以帮助改一下,同时也比较适合初学者来学习和入门。文件夹里是0-9的单音音频
    2022-01-26 02:02:26下载
    积分:1
  • 自己编写的,1024点快速傅里叶变换、倒频谱分析、功率谱分析及其Applet曲线显示程序源代码。 说明清楚,附有验证使用的数据文件...
    自己编写的,1024点快速傅里叶变换、倒频谱分析、功率谱分析及其Applet曲线显示程序源代码。 说明清楚,附有验证使用的数据文件-themselves prepared in 1024 point fast Fourier transform, cepstrum analysis, power spectrum analysis and Applet curve shows the source code. Make it clear with the use of the test data files
    2023-08-21 00:10:04下载
    积分:1
  • 在 Java 中抛硬币
    硬币 Tossing,以确定是否有死的还是活的使用。 / 此小程序允许一个模拟投掷硬币。它使用 random() 方法 / / 从数学类来随机生成一个 0 和 1 之间的数字。如果 / / 数是 < 0.5,它被视为一个头。否则,它认为一条尾巴。 / / 小程序允许一个输入的硬币扔模拟次数 / / 是进行。它 thens 进行模拟,并报告结果。
    2022-04-27 07:07:01下载
    积分:1
  • 数值库for Unix,含有很多数值
    数值算法库for Unix,含有很多数值算法- Value algorithm storehouse for Unix, includes the very many values algorithm
    2022-06-17 01:49:24下载
    积分:1
  • 模式识别工具箱,可用于人脸识别
    模式识别研究主要集中在两方面,一是研究生物体(包括人)是如何感知对象的,属于认识科学的范畴,二是在给定的任务下,如何用计算机实现模式识别的理论和方法。前者是生理学家、心理学家、神经生理学家的研究内容,后者通过数学家、信息学专家和科技工作者近几十年来的努力,已经取得了系统的研究成果。.人脸识别是基于人的脸部特征信息进行身份识别的一种生物识别技术。用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部的一系列相关技术,通常也叫做人像识别、面部识别。该代码是一个模式识别工具包,里面有很多相关算法,包括很多不错的 demo!
    2022-03-15 23:24:18下载
    积分:1
  • 运用扫描求设计一个最佳比例的聚光腔
    运用扫描法求设计一个最佳比例的聚光腔-use scanning for the best design of a proportion of the cavity
    2023-05-01 03:25:03下载
    积分:1
  • 696516资源总数
  • 106914会员总数
  • 0今日下载