正则表达式分析器生成器
Regular expression parser generator
有时,为regex搜索提供一个高度优化的函数会很方便,而不是在运行时包含一个生成解析器的库。有适合这种角色的解析器生成器吗?
理想情况下,它会:
- 创建一个C函数
- 生成对应于给定正则表达式的DFA
- 在简单情况下与KMP或Boyer-Moore一样高效
以下是所有适合您需求的工具列表:
-
Lex/Flex可能是从正则表达式构建解析器的最著名的工具。Lex在许多场景中都很有用,但它可能会给简单的解析应用程序带来太多的开销,因为重量级的处理循环会强加流"拉"模型和输入缓冲。它的设计目的是解析整个文件,而不是简单的字符串。
-
Re2C。它是一个预处理器,用于从正则表达式生成基于C的识别器。生成的状态机运行速度非常快,可以轻松地集成到任何程序中,没有依赖关系。
-
Ragel状态机编译器。另一个从高级正则语言表示法生成FSM代码的预处理器(正则表达式就是这个定义的一个例子)。它适用于一系列语言(C、C++、Objective-C、D、Java和Ruby),可以对不同的FSM事件执行用户操作等。此外,它还可以生成Graphviz格式的状态机定义,用于状态和转换的可视化。
Lex和Flex是有效的regexp-to-C编译器。
这个怎么样:
http://www.boost.org/libs/xpressive/
这里也提到:regex:boost::expression vs boost::regex
相关文章:
- 使用正则表达式regex_search在字符串中查找字符串
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- C++正则表达式无限循环
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- 定义有趣的宏和正则表达式在Z3 C++绑定
- 带有多个字符分隔符的正则表达式
- C++ 使用增强正则表达式库时断言崩溃
- 有人可以帮助我处理正则表达式吗?
- 使用正则表达式获取大括号块的列表
- 正则表达式以匹配数字的重复模式,后跟任何类型的分隔符?
- 组合正则表达式部分使用 | 不起作用的 C++
- 为什么C++正则表达式这么慢?
- 如何使HTML5电子邮件验证正则表达式在C++中工作?
- 在C++中实现正则表达式
- C++正则表达式替换整个单词
- 用C++编写正则表达式的正确方法是什么?
- 如何从Stroustrup的C++书中解释这个正则表达式?
- 为什么这个正则表达式C++在括号表达式中抛出无效范围异常?
- C++:匹配正则表达式,什么是匹配?
- 正则表达式分析器生成器