Как получить AST в виде строки с помощью libclang?

#compiler-construction #clang #libclang

Вопрос:

Мне нужно пересечь AST с помощью libclang. Все решения, которые я нашел, говорят мне сбросить AST в файл .ast, а затем создать translationUnit с этим файлом для преобразования.

Было бы здорово иметь возможность сделать следующее: Сгенерировать AST для некоторого кода программно, а затем использовать CXUnsavedFile для создания с его помощью translationUnit

Ответ №1:

Чтобы избежать зависимости от AST, загруженного в файл, clang_parseTranslationUnit можно использовать следующим образом

 CXTranslationUnit unit = clang_parseTranslationUnit( CXIndex index, "path to file with code", nullptr, 0, nullptr, 0, CXTranslationUnit_None);