2016-05-17 28 views
10

Próbuję użyć Clang do manipulowania kodu źródłowego C++, ale mam problem z odkrywaniem API.Jak wygenerować AST z łańcucha C++ za pomocą Clang?

Chciałbym wziąć ciąg kodu źródłowego C++ i wygenerować z niego AST; coś takiego:

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

Czy istnieje minimalny przykład tego?

+0

Można spróbować z tego poradnika: https://github.com/loarabia/Clang-tutorial/wiki/TutorialOrig – tomekpe

+0

alternativethat można analizować dowolne fragmenty C++ : http://stackoverflow.com/a/9024163/120163 –

Odpowiedz

2

Można spróbować następny kod:

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"; 
}