2016-05-17 22 views
10

Sto tentando di utilizzare Clang per manipolare il codice sorgente di C++, ma non riesco a rilevare l'API.Come posso generare un AST da una stringa di C++ usando Clang?

Vorrei prendere una stringa di codice sorgente C++ e generare un AST da esso; qualcosa come:

auto myAst = clang::parse("auto x = 1 + 1;"); 

Esiste un esempio di funzionamento minimo?

+0

Si può provare con questo tutorial: https://github.com/loarabia/Clang-tutorial/wiki/TutorialOrig – tomekpe

+0

Un alternativethat può analizzare frammenti arbitrari di C++ : http://stackoverflow.com/a/9024163/120163 –

risposta

2

È possibile provare il codice successivo:

std::unique_ptr<ASTUnit> AST(tooling::buildASTFromCode("auto x = 1 + 1;")); 
TranslationUnitDecl *DC = AST->getASTContext().getTranslationUnitDecl(); 
if (DC) { 
    llvm::errs() << "---------dump begin----------\n"; 
    DC->dump(); 
    llvm::errs() << "---------dump end----------\n"; 
}