当前位置: 首页 > 知识库问答 >
问题:

如何从 clang::ASTContext 生成代码

申屠晟
2023-03-14

我需要一个示例代码来学习如何从clang::ASTContext生成C代码。

我用c代码创建了ast,并在AST中做了一些更改,现在我想再次生成代码。

共有1个答案

吉栋
2023-03-14

不能使用Stmt类的print方法从ast生成代码。

virtual bool VisitStmt(Stmt *st){
    std::string SStr;
    llvm::raw_string_ostream S(SStr);
    st->printPretty(S, nullptr, PrintingPolicy(LangOptions()));
    const std::string &Str = S.str();
    llvm::errs() << "---------begin----------\n";
    llvm::errs() << Str << "\n";
    llvm::errs() << "---------end----------\n";
}
 类似资料:
  • 按照来自主要clang静态分析器网页(http://clang-analyzer.llvm.org/scan-build.html)的说明… 我有一个小的C文件,它的错误非常多(): 为了了解clang静态分析器(scan-build)是如何工作的,我运行了: 它输出: 好的,太好了,叮当给出了一点警告,但仍然产生了a.out。为什么它不产生报告?对于任何静态分析器来说,单位化变量 都应该是一个显

  • 我承认这个问题的答案可能是“一些非常具体的魔法”,但我对我在这里观察到的有点震惊。我想知道是否有人了解这些类型的优化是如何工作的。我发现编译器设计非常有趣,我真的无法想象这是如何工作的。我肯定答案在clang源代码的某个地方,但我甚至不知道我会去哪里看。 我是大学一堂课的助教,最近我被要求帮助解决一个简单的家庭作业问题。这让我走上了一条有趣的道路...... 问题很简单:在x86_64程序集中,编

  • 有什么Eclipse插件能够从Java代码生成UML图吗?我知道其中一些,但重点是它们都是从代码生成类图的。重点是,我还想生成一些其他的图表(例如:dfd-data Flow diagraph),如果不可能,请告诉我--我将使用它...

  • 如这个问题所示,使用g,我可以< code > g-S-masm = Intel test . CPP 。另外,使用clang,我可以执行< code>clang -S test.cpp,但是clang不支持< code>-masm=intel(编译期间未使用的< code >警告参数:-masm=intel)。我如何用clang得到intel语法?

  • 问题内容: 据我所知,将Java源代码解析为AST(抽象语法树)的唯一方法是使用Java编译器树API:com.sun.source.tree 我有两个问题: 哪些JDK支持com.sun.source.tree? 是否有适用于所有JDK的便携式替代产品? 问题答案: 您可以使用tools.jar并使用它。 javac是开源的,因此您只需获取该代码即可(假设您可以处理许可证)。 Antlr也具有J

  • 我下载了android应用程序的处理文件(这里是链接http://www.gwoptics.org/processing/mobile/BouncingBall/)我尝试在处理时进行编译,但出现以下两个错误: 找不到android.content.res的库 库必须安装在“sketchbook”文件夹中名为“Libraries”的文件夹中。 我想从这个项目生成整个java,这样我就可以使用它的一些