生成 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.
我想出了一个在 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.