re2正则表达式引擎学习(三)

prog.h 和 prog.cc定义了几种基本的数据结构:
Bitmap(用bit位来标记某个元素的值),主要用于bytemap字符到字符集合的计算,划分字符区间:[00-ff],[61-61],[62-62],[63-63]
InstOp(几种基本的指令操作码,与Inst对应),
EmptyOp(^,$,\A,\z,\b,\B),
Inst表示指令,所有的正则表达式都可以由这几种指令所构成 (类似NFA的几种基本结构,复杂的大型结构由多种基本结构复合构成)Inst定义了若干函数构建对应的基本结构
Anchor,
MatchKind, 匹配时的贪婪与否
Prog   Compile之后的类型,类似于NFA,


compile.cc文件
PatchList  看做指针,下标就好,自定义的一种指针 定义了Mk,Patch,Deref,Append四个基本操作函数接口使多个Inst结合为一个Frag(就是将多个NFA的基本结构连接为一个NFA图的结构Frag)
Frag       结构,多个Inst复合的一种结构,包括开始Inst和结束Inst,与PatchList的函数一起使用对多个Inst结合为一个大的Frag
Encoding  编码方式,项目中使用的应该是kEncodingLatin1编码方式
Compiler


后序遍历构建的Regexp结构(如ab*c|d -> ab*.c.d|),每读取一个元素,建立对应的基本Inst结构,当遇到符号要进行归并时,建立对应的Inst结构并将其中的out&#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值