Welche Bibliotheken sind für das Parsen von c ++ verfügbar, um Typinformationen zu extrahieren?

Ich suche nach einer Möglichkeit, C ++ - Code zu analysieren, um einige grundlegende Informationen zu Klassen abzurufen. Ich brauche eigentlich nicht viele Informationen aus dem Code selbst, aber ich brauche sie, um Dinge wie Makros und Vorlagen zu handhaben. Kurz gesagt, ich möchte die "Struktur" des Codes extrahieren, die Sie in einem UML-Diagramm anzeigen würden.

Für jede Klasse / struct / union / enum / typedef in der Codebasis benötige ich lediglich Folgendes (nachdem Vorlagen und Makros verarbeitet wurden):

Ihr NameDer Namespace, in dem sie lebenDie darin enthaltenen Felder (Name des Typs, Name des Feldes und Zugriffsbeschränkungen, z. B. privat / veränderlich / usw.)Funktionen in (Rückgabetyp, Name, Parameter)Die deklarierende DateiZeilen- / Spaltennummern (oder Byte-Versatz in Datei), bei denen die Definition dieser Daten beginnt

Die tatsächlichen Anweisungen im Code sind für meine Zwecke irrelevant.

Ich nehme an, dass viele Leute sagen, ich sollte nur eine Regex verwenden (oder sogar Flex & Bison), aber diese sind nicht wirklich gültig, da ich die Präprozessor- und Template-Sachen richtig handhaben muss.

Antworten auf die Frage(7)

Ihre Antwort auf die Frage