【问题标题】:C++11 source code generationC++11源代码生成
【发布时间】:2013-06-24 18:10:39
【问题描述】:

是否有某种 C++ 库,其中包含代表 C++ 源代码的类? 它当然应该能够将源代码输出到流中。 我正在寻找支持大多数 C++11 功能并且还能够生成模板结构的东西。

当我为此进行谷歌搜索时,我没有得到我想要的结果。不过,我敢肯定,有一些可用的东西。也许我只是使用了错误的术语。

【问题讨论】:

    标签: c++ code-generation


    【解决方案1】:

    查看Clang 编译器,它使用library-based architecture 来支持实现IDE 和其他需要处理AST 的工具。 Clang 完全支持所有 C++11 特性(和一些 C++1y 特性)

    更多信息可以在Clang documentation 中找到。或者在this blog 中描述了使用clang::Rewriter 的基本源到源转换。

    【讨论】:

    • OP 意味着 "...能够将源代码输出到流中",所以问题不在于在运行时生成 AST 或机器码,而是生成c++ 运行时的代码。
    • 谢谢!似乎它能够代表整个 AST。但我找不到任何关于生成源代码的信息。我指的不是 IR。
    • @eznme 他询问了“代表 C++ 源代码的类”,即 AST。而且 Clang 确实支持将 AST 转换回源代码。
    • @Joe 谢谢,非常有趣!我不知道 Clang 支持重写 AST 表示。简直完美。
    【解决方案2】:

    这仍处于一个非常实验性的阶段,但在我们的实验室中,我们正在开发一种工具 (Clava),它基于 Clang 并使用类似 Javascript 的语言来查询和转换给定的 C/C++ 代码。它将在 2017 年 8 月底前开源。

    例如,演示网站中的当前默认示例读取 C/C++ 代码中的所有类和结构,并为这些类创建带有 HDF5 包装器的 C++/H 对(但是,代码生成是 AST 和字符串字面量)。

    (Clava - Online Demo)

    【讨论】:

      猜你喜欢
      • 2015-05-07
      • 1970-01-01
      • 1970-01-01
      • 2013-01-06
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 2021-09-17
      • 1970-01-01
      相关资源
      最近更新 更多