使用 Boost Spirit X3 编写解析器对未来有多安全?

How future-safe is it to write a parser with Boost Spirit X3?

我正在考虑编写本质上是我自永远以来的第一个解析器(=自从 Uni 的编译器 class 以来我已经忘记了)。

因为我用的是C++,所以我想用Boost Spirit。然后我注意到有 "regular" 2.5.2,还有一些神奇的代码子集,名为 Spirit X3。

我也注意到 Boost Spirit X3 已经是 announced/discussed/pre-released 2 年前了,而 Boost Spirit 的正式版本是 2.5.2。最后,我读到:

Where is boost-spirit 3? Is it abandoned?

所以我 "know" 它不是一个废弃的项目 - 但不是一个非常积极维护的项目。 "safe"我用Spirit X3写解析器怎么样?有没有可能会失败/掉线/被放弃,或者一定会成为Boost Spirit发布的主线?

它已经发布了,所以它消失的可能性很小。

I liberally use X3 even in production code: After all, we do have tests for a reason.

也就是说,我知道围绕分散在不同翻译单元中的规则的链接有许多毛茸茸的问题¹。

以下是让我考虑 在以下情况下使用 X3 的事情列表:

  • Qi 的属性转换逻辑更吸引人(使规则更具可读性)。参见例如
  • 需要 Phoenix 整合
  • 需要跨 TU 共享规则

稍微不那么紧迫的差异是:

但是请注意,X3 有一定的亮点:

  • 编译时间
  • 易于生成动态 rules/custom 指令(参见 or
  • 易于创建自定义解析器(例如

¹ 查看邮件列表,例如 and

² 事实上,可能 "easy" 通过创建一个自定义解析器来创建一个,建立在 with<>any_parser<>

的基础上