【问题标题】:Is there a translator tool for translating EBNF to boost::spirit?是否有用于将 EBNF 翻译为 boost::spirit 的翻译工具?
【发布时间】:2009-05-29 00:03:52
【问题描述】:

翻译器也可以在 boost::spirit 中。 我在互联网上找不到任何东西。 也许我应该做一个?

【问题讨论】:

    标签: c++ boost-spirit


    【解决方案1】:

    来自spirit introduction

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

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

    我对spirit不太熟悉,不知道语法到底有什么不同,但是如果spirit C++ EBNFreal EBNF的区别很小,一个简单的@ 987654322@ 脚本可能就足够了。
    如果不是,您可以编写一个理解 EBNF 的精神解析器,然后使用 AST 创建 C++ 代码,该代码是该 AST 的精神表示。

    【讨论】:

    • 对于大型 EBNF (grammatica.percederberg.net/grammar/asn1/asn1.grammar),即使它几乎相同,仍然很痛苦。没有必要拥有一个,但它会有所帮助。
    • 如果你的语法有那么大,你可能不想使用 Spirit ;)
    • @Diego:这里有几件事——自从我发布这个答案以来,Spirit 几乎已经被完全重写——现在使用的正确工具是boost::spirit::qi,它好多了。但是我对 Spirit 最大的旧抱怨仍然存在。 1.如果您的语法有语法错误,请帮助可怜的灵魂,他必须破译它生成的模板错误消息。 2. 即使是相对简单的语法,编译时间也非常长。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多