DFA.cc
Workq 与 State类似,都是NFA的状态集合(即DFA的状态,一个DFA状态中包括多个NFA状态) 但Workq在过程中使用,完成后根据是否相同建立对应的State来存储(即Workq在过程中使用,完成后将Workq转化为State并存放到State中

DumpWorkq 打印工作队列中的内容: 调试打印格式: 1,2,3|4,5,6
DumpState 打印State中的内容: 调试打印格式:(地址) 1,2,3|4,5,6 flag=xxx   ID=xxx
WorkqToCachedState 将Workq转换为State,当已经有对应的State时不转换 调用CachedState完成  调试打印格式:WorkqToCachedState 1,2,3|4,5,6 [flag] CachedState输出
CachedState  判断转换来的State是否在缓存中,若在就不再重复建立state,若不在就加入缓存  调试打印格式: -cached -> 1,2,3|4,5,6(缓存中已有) / -> 1,2,3|4,5,6(缓存中没有)
StateToWorkq  将对应的State格式转换为Workq格式
AddToQueue 在Workq中加入一个指令
RunWorkqOnByte  oldq接受一个字符c转移到newq  调试打印格式:1,2,3|4,5,6 on c [flag] -> 4,5,6|7,8,9 [*ismatch]
RunStateOnByte函数 = StateToWorkq + RunWorkqOnByte + WorkqToCachedState

AnalySearch函数主要调用AnalySearchHelper来实现。主要就是找到开始状态集合,然后让开始状态集合一次对Bytemap进行匹配来设立StartInfo开始标示

首先调用AnalySearch函数来确定开始状态,然后对状态队列中的所有状态,从开始状态开始,对Bytemap的每个字节类进行RunWorkqOnByte,新状态若没有就建立新状态,并加入状态队列,直到状态队列中的所有状态都进行了字节类匹配

re2正则表达式引擎学习(四)相关推荐

  1. RE2正则表达式引擎资料

    2019独角兽企业重金招聘Python工程师标准>>> 官网 RE2,C++正则表达式库实战 <自动机理论 语言和计算导论> 转载于:https://my.oschina ...

  2. ## 虚幻四引擎学习——初学者

    虚幻四引擎学习--初学者 **前言:**最近想尝试下虚幻四引擎,以博客来记录自己的学习心得,如果我写的能为后来者提供些许帮助,那我不胜荣幸 一,创建你的首个项目 1在官网下载虚幻四引擎并安装(官网地址 ...

  3. Python的regex模块——更强大的正则表达式引擎

    Python自带了正则表达式引擎(内置的re模块),但是不支持一些高级特性,比如下面这几个: 固化分组    Atomic grouping 占有优先量词    Possessive quantifi ...

  4. 实现一个正则表达式引擎in Python(一)

    前言 项目地址:Regex in Python 开学摸鱼了几个礼拜,最近几天用Python造了一个正则表达式引擎的轮子,在这里记录分享一下. 实现目标 实现了所有基本语法 st = 'AS342abc ...

  5. perl 正则表达式 引擎_Perl 5引擎概述

    perl 正则表达式 引擎 正如我在" 我的DeLorean运行Perl "中所述,切换到Perl极大地提高了我的开发速度和可能性. 在这里,我将更深入地研究Perl 5的设计,以 ...

  6. ue4 迁移模型_UE4虚幻引擎学习云笔记(六)-关卡设计入门-[5.地形快速入门]

    [六.关卡设计入门(Level Designer Quick Start)] 19-09-29 UE4虚幻引擎学习云笔记(六)-关卡设计入门​zhuanlan.zhihu.com UE4虚幻引擎学习云 ...

  7. velocity(vm)模板引擎学习介绍及语法

    velocity模板引擎学习 velocity与freemaker.jstl并称为java web开发三大标签技术,而且velocity在codeplex上还有.net的移植版本NVelocity,( ...

  8. 1000行代码徒手写正则表达式引擎【1】--JAVA中正则表达式的使用

    简介: 本文是系列博客的第一篇,主要讲解和分析正则表达式规则以及JAVA中原生正则表达式引擎的使用.在后续的文章中会涉及基于NFA的正则表达式引擎内部的工作原理,并在此基础上用1000行左右的JAVA ...

  9. Elasticsearch学习(四) - 查询①

    title: Elasticsearch学习(四)-查询① date: 2020-10-29 tags: Elasticsearch Elasticsearch学习(四)-查询① categories ...

  10. Hazel引擎学习(五)

    我自己维护引擎的github地址在这里,里面加了不少注释,有需要的可以看看 Render Flow And Submission 背景 在Hazel引擎学习(四),从无到有,绘制出了三角形,然后把相关 ...

最新文章

  1. NLP实践:对话系统技术原理和应用
  2. linux mysql数据库优化_MySQL_Linux下MySQL数据库性能调优方法,以下的环境具备一定的代表性 - phpStudy...
  3. jvm二:类加载,连接,初始化
  4. 可变数组NSMutableArray
  5. 封装caffe-windows-cpu(支持模型有多个输出)
  6. python中pcolor_python中pcolormesh-女性时尚流行美容健康娱乐mv-ida网
  7. 数组和指针(sizeof两者的关系)
  8. Qt QMutexLocker_自动解锁的机制
  9. kafka的消费顺序_Kafka原理和实践云平台技术栈13
  10. php远程下载头像,Laravel 项目中 远程把图片下载到本地
  11. html 判断输入的是手机号码,用js验证手机号码格式是否正确
  12. 代码质量分析利器之SonarQube【史上最全】
  13. django_jquery_ajax二级联动菜单
  14. 英雄联盟怎么解除小窗口_英雄联盟手游剑姬怎么玩-英雄联盟手游剑姬玩法介绍...
  15. 一篇挺有意思的文章(转自CSDN)
  16. 为 VS 2012 打包 MSDN 在线文档为磁盘安装源
  17. linux+创建一个v文件共享,win10与Ubantu双系统:Linux下开启FTP服务器与创建无线热点(实现文件共享)...
  18. 开发者测评:相比 Harbor,我选择 ACR 的三点原因
  19. 深度学习面试题:原始GAN 在实际应用中存在哪些问题?
  20. Symbian 读取手机型号

热门文章

  1. photoshop的抠图小结
  2. 2017年油价调整时间表
  3. 2017年人工智能十大关键词!
  4. ❤️❤️新生代农民工熬夜整理Python入门教程,包教包会!附源码❤️❤️
  5. 学习微信小程序的资料汇总---转载自知乎
  6. html网页如何将文字排版,【html】文字排版
  7. java保护表格_java poi Excel单元格保护
  8. 怎么把图片内存变小尺寸保持不变呢。
  9. 未开票收入怎么申报?后期补票又怎么申报?
  10. compute的c语言用法,词汇精选:compute的用法和辨析