2016-05-17 24 views
10

C++ kaynak kodunu değiştirmek için Clang kullanmaya çalışıyorum, ancak API'yi bulmakta zorlanıyorum.Clang kullanarak C++ dizesinden nasıl AST üretirim?

Bir C++ kaynak kodu dizesi almak ve ondan bir AST oluşturmak istiyorum; gibi bir şey:

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

Bunun en az bir örneği var mı?

+0

: C keyfi parçalarını ayrıştırabileceğiniz https://github.com/loarabia/Clang-tutorial/wiki/TutorialOrig – tomekpe

+0

Bir alternativethat ++ : http://stackoverflow.com/a/9024163/120163 –

cevap

2

sonraki kod deneyebilirsiniz:

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"; 
} 
Bu öğretici ile deneyebilirsiniz