用途:这是 Trieste 正则引擎(include/trieste/regex_engine.h)的设计指南,面向需要理解或维护该 header-only C++20 NFA 匹配器的开发者。引擎最初面向 iregexp,现包含 Trieste 解析器与重写辅助所用的兼容扩展。
主要能力:将 UTF-8 正则经 shunting-yard 转为后缀 rune 流,再用 Thompson 构造生成 NFA,随后做 epsilon 闭包与 ASCII 接受位图预计算,最后以基于 epoch 的状态去重进行并行模拟。公开 API 包括 RegexEngine 构造、ok()、num_captures()、syntax_mode()、match()、find_prefix()、search(),以及可复用的 MatchContext 与 Capture。SyntaxMode::Extended 为默认完整语法,IregexpStrict 限制为 RFC 9485 iregexp。
使用方式:包含 regex_engine.h(其内部已包含 unicode_data.h 与 utf8.h),构造 RegexEngine 后调用 match/find_prefix/search;捕获感知重载可填充组跨度,MatchContext 可在同一调用者/线程内跨调用复用,但不可跨线程并发使用。
适用场景与限制:适用于 Trieste 解析与重写中的正则匹配、全局替换探测等。资源上限遵循 RFC 9485 §8:MaxRepetition 1000、MaxPostfixSize 100000、MaxStates 100000、MaxCaptures 64、MaxGroupNesting 256、MaxClosureCacheEntries 1000000。部分语法会被判为 malformed,例如裸 ] 或 }、空字符类、倒置区间、超出上限的量词、未闭合结构及未知转义。RegexEngine 不可拷贝、可移动。统计功能需定义 TRIESTE_REGEX_ENGINE_ENABLE_STATS。