【发布时间】:2012-01-27 18:13:39
【问题描述】:
有时,为正则表达式搜索提供高度优化的函数会很方便,而不是在运行时包含生成解析器的库。是否有适合这种角色的解析器生成器?
理想情况下,它会:
- 创建单个 C 函数
- 生成与给定正则表达式对应的 DFA
- 在简单情况下与 KMP 或 Boyer-Moore 一样高效
【问题讨论】:
标签: c++ c regex parser-generator
有时,为正则表达式搜索提供高度优化的函数会很方便,而不是在运行时包含生成解析器的库。是否有适合这种角色的解析器生成器?
理想情况下,它会:
【问题讨论】:
标签: c++ c regex parser-generator
这里列出了所有适合您需求的工具:
Lex/Flex 可能是最知名的从正则表达式构造解析器的工具。 Lex 在许多场景中都很有用,但它会给简单的解析应用程序带来太多开销,因为重量级的处理循环强加了流“拉”模型和输入缓冲。它旨在解析整个文件而不是简单的字符串。
Re2C。它是一个预处理器,可以从正则表达式生成基于 C 的识别器。生成的状态机运行速度非常快,可以轻松集成到任何程序中,没有依赖关系。
Ragel State Machine Compiler。另一个从高级正则语言符号生成 FSM 代码的预处理器(正则表达式是此定义的一种情况)。它适用于多种语言(C、C++、Objective-C、D、Java 和 Ruby),可以对不同的 FSM 事件等执行用户操作。此外,它可以生成 Graphviz 格式的状态机定义以进行可视化状态和转换。
【讨论】:
Lex 和 Flex 是有效的 regexp-to-C 编译器。
【讨论】:
【讨论】: