-
一个用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
-
thomas算法
thomas算法用来计算方程AT=r,T和r为列向量,A为三对角阵,仅在三个对角线上有非零元素,算法需要向前
和向后扫描方程两次 。
- 2022-11-26 13:45:03下载
- 积分:1
-
列主元高斯消去法 是我学习计算方法A时编写的 完成了列主元高斯消去法实现方程组求解。...
列主元高斯消去法 是我学习计算方法A时编写的 完成了列主元高斯消去法实现方程组求解。-out PCA Gaussian elimination is my calculation A study prepared at the completion of the main-element Gauss elimination method to achieve equation Solving Group.
- 2022-04-10 00:25:55下载
- 积分:1
-
数值计算经典算法
这些是数值计算方法的经典算法
- 2022-09-28 10:25:03下载
- 积分:1
-
One
一维非稳态扩散问题通用程序(Basic语言)-One-dimensional non-steady-state GM-proliferation program (Basic language)
- 2022-01-26 06:21:26下载
- 积分:1
-
解非线性方程
java实现的非线性方程的解法,包括二分法,牛顿法,弦截法等。。。。。。。
- 2022-01-24 18:20:58下载
- 积分:1
-
LS mmse算法信道估计
本人上传的这个代码,是包括了信号的产生,调制,加导频信号,反傅里叶变换,加循环前缀,经过多径信道,解调得到的信号,采用LS MMSE等算法进行信道估计,是不叫完善的算法!
- 2022-06-12 08:32:44下载
- 积分:1
-
消消乐源码(delphi)
消消乐源码,(delphiXE),Delphi XE5实现的一个消消乐游戏代码,该代码是从外国网站下来下来,经过测试可以编译,除了图形效果稍微差了外,基本上和流行的消消乐差不多,该游戏实现了图形的拖放、自动消除、自动下移填充图形、时间限制、分数计算。
- 2023-02-19 05:50:04下载
- 积分:1
-
基于LANDMARC系统的室内定位仿真研究
资源描述摘要:首先介绍LANDMARC系统室内定位的原理。然后结合“距离一损耗”公式,建立了基于此的模型,在此基础上,对模型参数进行优化,并分别通过引入Z方向矢量和距离噪声系数a,作为干扰因子,较真实地模拟了环境变化所产生影响,得到较理想效果,仿真结果表明优化后参教具有很强的抗干扰能力,并能较好为LANDMARC系统的实验与实施提供科学的引导。
关键词:LANDMARC;RFID技术;室内Z/g;噪声模拟
- 2022-06-28 10:20:14下载
- 积分:1
-
互信息法求得结点的重要程度
基于互信息法求得每个结点的重要程度,方法比边介数和pagerank简单有效,对于大规模和超大规模的网络拓扑图都能高效完成,
- 2022-07-16 19:51:44下载
- 积分:1