Queremos analizar nuestro enorme árbol fuente C++ para obtener información suficiente para alimentar a otra herramienta para hacer diagramas de clases y relaciones de objetos, discernir la organización general de las cosas, etc.Cómo analizar fuentes C++ en Python?
Mi mejor intento hasta ahora es una secuencia de comandos Python que escanea todos los archivos .cpp y .h, ejecuta búsquedas de expresiones regulares para tratar de detectar declaraciones de clases, métodos, etc. No necesitamos un analizador completo para capturar cada detalle, o algún generador de diagramas UML pesados - hay una gran cantidad de detalle que nos gustaría ignorar y estamos inventando nuevos tipos de diagramas. El script funciona sorta, pero por Dios es verdad: C++ es ¡difícil de analizar!
Entonces, ¿qué herramientas existen para extraer la información que queremos de nuestras fuentes? No soy un experto en idiomas, y no quiero algo con una curva de aprendizaje empinada. Algo que podemos usar los gruñidos de programadores de bajos recursos: P
Se prefiere Python como uno de los idiomas estándar aquí, pero no es esencial.
C++ es notoriamente difícil de analizar, y por lo general necesita algunas herramientas bastante pesadas para hacerlo (analizadores GLR, por ejemplo). Me sorprendería mucho que hubiera una buena aproximación del análisis de C++ que no utilizara analizadores potentes. – templatetypedef
¿Has analizado un compilador compilador estándar? Estos usan un lenguaje especial (algún tipo de formulario extendido de Backus-Naur, ¿recuerda la universidad?) Para describir el idioma de destino. –
¿Consideró usar GCC-XML (http://www.gccxml.org) y luego python para el procesamiento del archivo XML resultante? – 6502