我对编写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}}并将更新的上下文传递给主要动作的插件的最佳方法是什么?
谢谢!