Какие библиотеки доступны для разбора c ++ для извлечения информации о типах
Я ищу способ синтаксического анализа кода C ++ для получения базовой информации о классах. На самом деле мне не нужно много информации из самого кода, но она мне нужна для обработки таких вещей, как макросы и шаблоны. Короче говоря, я хочу извлечь «структуру» кода, которая будет показана на диаграмме UML.
Для каждого класса / struct / union / enum / typedef в базе кода все, что мне нужно (после обработки шаблонов и макросов), это:
Их названиеПространство имен, в котором они живутПоля, содержащиеся внутри (имя типа, имя поля и ограничения доступа, такие как private / mutable / etc)Функции, содержащиеся в (возвращаемый тип, имя, параметры)Декларирующий файлНомера строк / столбцов (или байтовое смещение в файле), где начинается определение этих данныхФактические инструкции в коде не имеют значения для моих целей.
Я ожидаю, что многие люди скажут, что я должен просто использовать для этого регулярное выражение (или даже Flex & Bison), но это не совсем верно, так как мне нужно, чтобы препроцессор и шаблоны работали правильно.