正则表达式分析器生成器

Regular expression parser generator

本文关键字:分析器 正则表达式      更新时间:2023-10-16

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

理想情况下,它会:

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

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

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

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

  3. 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