Si es evidente C, lex
y yacc
son tus amigos, pero hay que tener en cuenta preprocesador de C - archivos de origen con las macros no expandidas son típicamente no cumplen con la sintaxis de C de modo analizador, escrito con K & R gramática mente, lo más probable es que falle.
Si decide analizar el resultado del preprocesador, prepárese para que su analizador falle debido a "extensiones" de su compilador particular, ya que es muy probable que los encabezados de biblioteca estándar los usen. Al menos este es el caso de GCC.
Tuve esto con GCC y finalmente decidí lograr mi objetivo utilizando un enfoque diferente. Si solo necesita cambiar los nombres de las variables, las expresiones regulares funcionarán bien, y no es necesario crear un analizador completo, en mi humilde opinión. Si su objetivo es solo recopilar datos, la fuente de datos definitiva es la información de depuración. Hay formas de obtener información de depuración del binario: para los archivos ejecutables ELF con DWARF hay libdwarf, para Windows-land (¿COFF?) También debería ser algo. Probablemente pueda usar algunas herramientas existentes para obtener información sobre errores en binarios. De nuevo, no sé nada sobre Windows, debe investigar.
Ver también: http://code.google.com/p/pycparser/ –
Gracias, lo agregaré a la lista. – luke