是否有翻译工具可以将 EBNF 翻译为 boost::spirit?

chi*_*ila 5 c++ boost-spirit

译者也可能处于 boost::spirit 状态。我在互联网上找不到任何信息。也许我应该做一个?

lot*_*har 1

精神介绍上看

表达式模板允许我们完全用 C++ 近似扩展巴科斯范式 (EBNF) 的语法。

所以你几乎可以编写简单的 EBNF,不需要翻译器

我对 Spirit 不太熟悉,不知道语法到底有何不同,但如果Spirit C++ EBNF真正的 EBNF的差异很小,一个简单的sed脚本就足够了。
如果不是,您是对的,您可以编写一个理解 EBNF 的精神解析器,然后使用 AST 创建 C++ 代码,该代码是该 AST 的精神表示。

  • @Diego:这里有几件事——自从我发布这个答案以来,Spirit 几乎被完全重写了——现在使用的正确工具是 `boost::spirit::qi` 并且它好多了。但我对 Spirit 最大的抱怨仍然存在。1. 如果你的语法有语法错误,请上帝帮助那些必须破译它生成的模板错误消息的可怜的灵魂。2. 即使对于相对简单的语法来说,编译时间也非常长。 (3认同)
  • 对于大型 EBNF (http://grammatica.percederberg.net/grammar/asn1/asn1.grammar),即使它几乎相同,它仍然是一个痛苦。没有必要拥有一个,但会有帮助。 (2认同)