2015-08-15 4 views
1

Я хочу написать программу, которая запускается до того, как Visual Studio компилирует мой проект. Необходимо извлечь только типы, имена и параметры всех функций, классов, структур, перечислений, которые мой проект использует из файлов в определенной папке (/ sdk), и скопировать их в новую папку (/ sdkmin)Разбор C++ и извлечение всех используемых типов и функций

Поэтому я в основном хочу иметь программу, которая минимизирует использование моего проекта sdk.

Есть ли приличная библиотека, которая позволяет мне это делать без необходимости писать собственный парсер/лексер/что-то еще?

+1

Ну, кажется, что вы пытаетесь написать свое собственное, специальное назначение компилятора C++; или, по крайней мере, его фазу разбора. Это должно занять, может быть, 5-10 лет для одного человека. –

+0

Как насчет просмотра таблицы символов * после * вы скомпилируете программу с полным «sdk»? Это даст вам список, но извлечение такого списка из исходного источника - нетривиальная задача. –

+0

Может быть, ctags, определенно libclang. – lvella

ответ

2

Я думаю, что вы должны сделать так, чтобы посмотреть на некоторые инструменты clang, такие как «clang-format», «include-what-you-use» и т. Д., Которые основываются на материалах front-end clang AST, чтобы сделать различные интересные вещи. Это предоставит вам лексер и парсер, что действительно займет очень много времени, если вы начнете с нуля.

Github зеркало здесь: https://github.com/llvm-mirror/clang