gpt4 book ai didi

clang - 使用 Clang 获取 C 片段的 AST?

转载 作者:行者123 更新时间:2023-12-02 04:49:35 24 4
gpt4 key购买 nike

我正在构建一个 clang 插件,我试图在插件中的某个点为 C 片段生成 AST。像这样的东西:

std::string c_code = "...";
getAST(c_code);

谁能指出我该怎么做?

最佳答案

可能有几种方法可以实现这一点,但最后我得到了以下代码片段,对我来说它看起来很简单:

//arguments to the compiler
std::unique_ptr <std::vector<const char*>> args(new std::vector<const char*>());
args->push_back("my_file.c");

//do the magic
ASTUnit *au = ASTUnit::LoadFromCommandLine(
&(*args)[0],
&(*args)[0] + args->size(),
IntrusiveRefCntPtr<DiagnosticsEngine>(
CompilerInstance::createDiagnostics(new DiagnosticOptions)),
StringRef()
);

//get the translation unit node
Declr *d = au->getASTContext().getTranslationUnitDecl();

欢迎提出更简单的替代方案或改进建议。

关于clang - 使用 Clang 获取 C 片段的 AST?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29955255/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com