LINUX.ORG.RU

Как в CLang-C++ выдрать из AST и схоронить в виде исходника?

 ,


1

5

Да, я знаю что хочу странного. Типа взяли кошку, провернули ее на мясорубке для готовки шавермы, и теперь надо из фарша назад получить кошку. А вдруг можно?

Два вопроса: а) выдрать класс/метод/функцию и сохранить в виде исходника б) взять всё что есть в файле (который изначально парсился), исключить оттуда ненужные элементы, и сохранить в виде исходника.

Вот есть некий libtooling, сейчас разбираюсь.

Но в целом, вот я бегу по асту курсором, через какой-нибудь `clang_visitChildren`. Нашел понравившийся класс, про него изветен его `CXCursor`, он же на родителя, и `CXClientData`. Может быть можно как-нибудь сразу сохранить в исходник то, что сейчас стоит под курсором?

★★★★☆

Вот здесь уже смотрел? Там был пример, как чувак парсил код, затем добавлял автоматом комменты и складывал обратно.

aido ★★
()

Про сишный апи ничего не знаю, в плюсовом был RecursiveASTVisitor, им находишь локейшены начала и конца требуемого кода и Rewriter'ом меняешь его на что хочется. Можешь посмотреть код clang_delta из проекта creduce, там куча примеров rewrite'ов

annulen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.