生成 flex 扫描仪时如何获得反射进行回溯?

How do I get reflex to do backtracking when generating a flex scanner?

我想出了一个在 https://regex101.com 上运行良好的回溯正则表达式。当我用 reflex -u 编译一个简单的 flex(ish) 程序时,表达式没有捕获回溯位——其他一切正常。

reflex 的文档表明它 允许开箱即用的回溯,我在文档中找不到任何告诉我如何允许回溯的内容当使用 reflex 替代 flex.

据我从文档中得知,我必须让 reflex 使用 std::regex,因为这是唯一支持回溯的引擎,而且在常规 C++ 程序中做起来似乎微不足道.

(*) 常规的旧 flex 不是一个选项,因为它不支持 unicode 类;特别是它不支持识别大写字母。

回溯反射扫描器需要 Perl 模式下的 Boost。使用 reflex -m=boost-perl 切换到 Boost Perl 正则表达式引擎。请参阅有关 POSIX 与 Perl 匹配的 RE/flex 文档部分:https://www.genivia.com/doc/reflex/html/index.html#reflex-posix-perl.