Clang插件:在编译代码之前先构建AST

时间:2019-12-20 16:45:08

标签: plugins clang llvm llvm-clang llvm-c++-api

我对编写Clang插件(和自定义Clang工具)以在处理单个源代码文件之前构建初始AST感兴趣。我的动作将执行两项任务:

  • 在AST的CXXRecordDecl中创建几个TranslationUnitDecl实例。这等效于执行#include来定义程序的类型-但我希望能够在Clang插件中动态地做到这一点。

  • 定义一个FunctionDecl代表main()。源代码将被编译到该函数的上下文中。

我了解如何使用Clang API独立执行这些任务。但是,我想在解析源代码之前使用Clang的插件基础结构来执行这些任务。目的是编译如下源代码:

Foo foo;
foo.bar = 5;

到类似这样的程序

struct Foo {
  double bar
};

int main() {
  Foo foo;
  foo.bar = 5;
}

编写可处理CompilerInstance的{​​{1}}并将更新的上下文传递给主要动作的插件的最佳方法是什么?

谢谢!

0 个答案:

没有答案
相关问题