正则表达式解析器生成器

时间:2012-01-27 18:13:40

标签: c++ c regex parser-generator

有时,为正则表达式搜索提供高度优化的函数会很方便,而不是包含在运行时生成解析器的库。是否有适合这种角色的解析器生成器?

理想情况下,它会:

  • 创建单个C函数
  • 生成与给定正则表达式相对应的DFA
  • 在简单情况下与KMP或Boyer-Moore一样高效

3 个答案:

答案 0 :(得分:6)

以下是适合您需求的工具列表:

  1. Lex / Flex可能是用于从正则表达式构造解析器的最着名的工具。 Lex在许多场景中都很有用,但它可能会给简单的解析应用程序带来太多的开销,因为重量级的处理循环强加了流“拉”模型和输入缓冲。它旨在解析整个文件而不是简单的字符串。

  2. Re2C。它是一个预处理器,可以从正则表达式生成基于C的识别器。生成的状态机运行速度非常快,可以轻松集成到任何程序中,不依赖于任何程序。

  3. Ragel State Machine Compiler。另一种从高级常规语言符号生成FSM代码的预处理器(正则表达式是此定义的一种情况)。它适用于多种语言(C,C ++,Objective-C,D,Java和Ruby),可以对不同的FSM事件执行用户操作等。此外,它可以生成Graphviz格式的状态机定义以实现可视化国家和转型。

答案 1 :(得分:5)

Lex和Flex实际上是regexp-to-C编译器。

答案 2 :(得分:3)