-
一个用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
-
matlab编写的FDTD模拟分析周期结构的透射场
本源程序是使用matlab编写的FDTD(时域有限差分法)来模拟周期结构的透射场分布。其中包括二维和三维的源程序,还有详细的迭代公式推导,非常具有参考价值。
- 2022-02-03 07:29:29下载
- 积分:1
-
本算法为机械优化设计中的一维黄金搜索算法,可以求取方程的极值。...
本算法为机械优化设计中的一维黄金搜索算法,可以求取方程的极值。-This programm realizes the golden section search method for machanical one-dimesion optimum designing ,you can use it to get the mimimax solution
- 2023-03-05 18:15:03下载
- 积分:1
-
C语言实现的五子棋人机对战
资源描述基于C语言实现的五子棋人机对战和人人对战两种模式,棋盘比较简单,两种模式可以选择,算法比较简单
- 2022-11-12 23:55:03下载
- 积分:1
-
高斯 - 赛德尔ITERATAIVE技术算法
To solve Ax = b given an initial approximation x(0).** INPUT: the number of equations and unknowns n; the entries* A(I,J), 1
- 2022-01-21 21:36:23下载
- 积分:1
-
分枝定界法,运筹学
分枝定界法,运筹学-branch-and-bound method, and operations
- 2022-04-24 23:01:41下载
- 积分:1
-
Parallele 并行算法
基于图像处理的算法 parallele并行编程算法 基于图像处理的梯度算法 gradiant算法,能够圈出图像轮廓Opencv读取图像灰度图像
- 2022-07-03 11:22:48下载
- 积分:1
-
砼非线性有限元源程序,用FORTRAN写的比较有参考价值
砼非线性有限元源程序,用FORTRAN写的比较有参考价值-Concrete non-linear finite element source code, using FORTRAN to write a comparison reference value
- 2022-03-21 10:19:07下载
- 积分:1
-
MATLAB functions: LLL.m, Brun.m, Seysen.m. These functions implement different lattice reduction al
The supplementary material consists of three MATLAB functions:
LLL.m
Seysen.m
Brun.m
These functions implement different lattice reduction algorithms in MATLAB.
The functions are well-documented, explaining their functionality as well
as how to run them. The software is provided for free and without warranty.
- 2023-07-10 23:10:03下载
- 积分:1
-
科学计算器,可进行复杂的科学计算,最多可有99个变量
科学计算器,可进行复杂的科学计算,最多可有99个变量-scientific calculator can perform complex scientific calculations, will have up to 99 variables
- 2023-06-22 19:00:03下载
- 积分:1