-
一个用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
-
use vc realized random test code, can achieve simple to the complex random pictu...
使用vc开发实现的随机验证码,可以实现简单到复杂的随机图片,非常好用-use vc realized random test code, can achieve simple to the complex random pictures, very handy
- 2022-08-15 19:08:49下载
- 积分:1
-
优化设计C语言程序
进退法找区间、坐标轮换发、黄金分割法、区间消去法等...
优化设计C语言程序
进退法找区间、坐标轮换发、黄金分割法、区间消去法等-Optimal Design of C language program to advance and retreat method to find range, coordinates the rotation of hair, golden section method, interval elimination method, etc.
- 2022-05-14 01:40:07下载
- 积分:1
-
过程不去说
应用背景脚本对积分ção de不是财政de赛达utilizando tabela intermediaria对位pedidos de文达。积分为tabelas pedido_de_venda,SC5,SC3,SF2,SD2 E航空公司班机检查员关键技术脚本费托EM advpl E Banco de墙裙Oracle。作为一个çõFAZ Integra ES银行Banco河间qualquer aplicaçãO阙,该公司pedidos Na tabela intermediaria对位dentro做Protheus / microsiga
- 2023-03-06 05:20:04下载
- 积分:1
-
按列选主高斯消元,高斯消元算法
按列选主高斯消元,高斯消元算法-out elections by the main PGE, PGE algorithm
- 2022-01-30 15:15:13下载
- 积分:1
-
C + + 中的快速模表达式求值
这是 c + + 中的快速模表达式求值。它有没有其他库的依赖,将使用 g + + 在 Linux 上构建 / Mac / Android 或在 Windows 上使用 MSVC。它有一个非常简单的界面:
CFloatExpression 前 ;或 CExpression < 浮法 >
ex。解析 ("1 + 1") ;
std:: cout
- 2022-03-16 04:28:36下载
- 积分:1
-
数值分析,组合型辛蒲生,多项式的最小二乘逼近等10多个算法实现...
数值分析,组合型辛蒲生,多项式的最小二乘逼近等10多个算法实现
- 2022-05-07 16:16:44下载
- 积分:1
-
一个较完备的HugeNumber类,实现了加减乘除及乘方,阶乘的功能,精确度可以随意调整。...
一个较完备的HugeNumber类,实现了加减乘除及乘方,阶乘的功能,精确度可以随意调整。-A more comprehensive category HugeNumber achieved and involution Math
- 2022-07-27 04:53:28下载
- 积分:1
-
基于哈夫曼编码的实现
基于哈夫曼编码的实现-based on the achievement of Huffman coding
- 2022-02-10 04:46:37下载
- 积分: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