【问题标题】:Regular expression parser generator [closed]正则表达式解析器生成器
【发布时间】:2012-01-27 18:13:39
【问题描述】:

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

理想情况下,它会:

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

【问题讨论】:

    标签: c++ c regex parser-generator


    【解决方案1】:

    这里列出了所有适合您需求的工具:

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

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

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

    【讨论】:

      【解决方案2】:

      Lex 和 Flex 是有效的 regexp-to-C 编译器。

      【讨论】:

      • 不知何故,我认为它们是专门的标记器。
      【解决方案3】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-21
        • 2011-08-17
        • 2012-06-15
        • 2011-10-28
        • 1970-01-01
        • 1970-01-01
        • 2010-09-23
        • 2011-06-03
        相关资源
        最近更新 更多