-
一个用MASM写的正则表达式引擎
此正则表达式引擎属于正统的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%的代码片段,完整代码需下载后查看 加载中 侵权举报
- 2022-05-27 18:36:44下载
- 积分:1
-
MFC arbitrary graphics production
MFC图形任意制作 超爽-MFC arbitrary graphics production-Shuang
- 2023-02-03 00:50:03下载
- 积分:1
-
一个多功能计算器calc,包含了代数运算、矩阵运算等功能
一个多功能计算器calc,包含了代数运算、矩阵运算等功能-A multi-function calculator calc, contains algebra, matrix operations and other functions
- 2022-07-24 15:01:03下载
- 积分:1
-
水电站的经济动态规划过程
水电站场内经济运行动态规划程序,实现多台机组间的优化调度,是以流量为目标函数-Hydropower dynamic planning process inside the economy
- 2022-12-23 13:50:03下载
- 积分:1
-
Camshift跟踪
基于Camshift的目标跟踪。基于Camshift的目标跟踪。基于Camshift的目标跟踪。基于Camshift的目标跟踪。基于Camshift的目标跟踪。基于Camshift的目标跟踪。基于Camshift的目标跟踪。基于Camshift的目标跟踪。基于Camshift的目标跟踪。基于Camshift的目标跟踪。
- 2022-04-16 22:14:22下载
- 积分:1
-
opencv实例源代码.rar
资源描述
,opencv实例源代码里面包含的基于opencv的光流法程序和实现功能为图像平滑、图像缩小与Canny 边缘检测。三、用 DirectShow 编制的视频采集程序
。
- 2023-02-04 02:55:10下载
- 积分:1
-
基于连续蚁群算法融合的神经网络RFID 信号分布模型
资源描述基于人工神经网络方法建立了RFID 反射信号强度分布模型. 该方法仅依赖数据,实施简
单. 为克服传统BP 算法对初值敏感、易陷入局部极值的缺陷,引入一种连续的蚁群优化算法来
确定多层神经网络的权值,该算法具有更强的全局搜索能力和效率. 讨论了算法的基本理论和具
体步骤,最后利用实际RFID 设备采集的反射信号强度数据对算法进行测试,对理论信号模型和
实际的建模结果进行了比较,并分析了算法的逼近能力和泛化能力. 结果表明在考虑到不可避免
的误差和扰动下,所提出的方法可以更好地建模RFID 信号强度的实际分布,具有良好的性能.
- 2022-08-15 11:57:59下载
- 积分:1
-
意味着在C #滤波器
应用背景关键技术均值滤波的想法是简单的替换每个像素值与平均图像(`平均”)邻国的价值,包括本身。这消除了其像素值的影响具代表性的环境。像其他部分是围绕一个核心,这代表形状和邻域大小进行采样时计算平均。
- 2022-08-21 13:48:45下载
- 积分:1
-
搜索引擎的评估准则
应用背景本代码主要实现搜索引擎的几个评估准则,包括NDCG@K、DCG@K、P@K、RR@K、ERR@K这五类评估准则的实现,这代码主要是根据RankLib中的评估准则代码以scala的形似展现出来,相对于RankLib中的 评估代码而言,本代码短小,可读性强,可移植性大,关键技术本文使用 的scala实现,对NDCG@K、DCG@K、P@K、RR@K、ERR@K这五类评估准则的实现,跟RankLib中的评估公式保持一致
- 2022-07-14 14:24:01下载
- 积分:1
-
gdal读入测试代码
gdal读入测试代码,vs2008工程。GDAL是一个操作各种栅格地理数据格式的库。包括读取、写入、转换、处理各种栅格数据格式(有些特定的格式对一些操作如写入等不支持)
本测试代码在读入图像后,读取图像尺寸
- 2022-03-13 11:43:41下载
- 积分:1