Estoy buscando una forma de analizar el código de C++ para recuperar algo de información básica sobre las clases. Realmente no necesito mucha información del código en sí, pero sí la necesito para manejar cosas como macros y plantillas. En resumen, quiero extraer la "estructura" del código, lo que mostrarías en un diagrama UML.Qué bibliotecas están disponibles para analizar C++ para extraer información de tipo
Para cada clase/struct/union/enum/typedef en la base de código, todo lo que necesita (después plantillas & macros se han manejado) es:
- Su nombre
- El espacio de nombres en el que se viven
- Los campos que aparecen en (nombre del tipo, el nombre del campo y de las restricciones de acceso, tales como privada/mutable/etc)
- funciones contenidas dentro (tipo de retorno, nombre, parámetros)
- El declarando archivo
- Línea/números de las columnas (o desplazamiento de bytes en el archivo) en la definición de estos datos comienza
Las instrucciones reales en el código son irrelevantes para mis propósitos.
Anticipo que muchas personas digan que debería usar una expresión regular para esto (o incluso Flex & Bison), pero estas no son realmente válidas, ya que necesito que el preprocesador y la plantilla funcionen correctamente.
Incluso si expandió el preprocesador y las directivas de plantilla, la expresión regular no será lo suficientemente fuerte como para recopilar esta información de tipo correctamente. –