Tengo cierta experiencia con la generación de código tipo Pragmatic-Programmer: especificando una estructura de datos en formato neutral de plataforma y escribiendo plantillas para un generador de código que consume estos archivos de estructura de datos y produce código que extrae bytes sin procesar en datos específicos del lenguaje estructuras, escala en los datos numéricos, imprime los datos, etc. Las ideas agradables pragmáticas (TM) son que (a) puedo cambiar estructuras de datos modificando mi archivo de especificación y regenerando la fuente (que es SECO y todo eso) y (b) Puedo agregar funciones adicionales que se pueden generar para todas mis estructuras simplemente modificando mis plantillas.¿Marco para construir analizadores estructurados de datos binarios?
Lo que había usado era una secuencia de comandos Perl llamada Jeeves que funcionó, pero es de propósito general, y las funciones que quería escribir para manipular mis datos las escribía desde cero.
¿Hay marcos que sean adecuados para crear analizadores para datos binarios estructurados? Lo que he leído de Antlr sugiere que eso es excesivo. Mis idiomas de interés actuales son C#, C++ y Java, si es que importa.
Gracias como siempre.
Editar: Pondré una recompensa en esta pregunta. Si hay áreas en las que debería estar buscando (palabras clave para buscar) u otras formas de atacar este problema que ha desarrollado usted mismo, me encantaría saber sobre ellas.
un alimento listo para su utilización marco, pero al menos algunos de pensamiento: http://okmij.org/ftp/Scheme/binary-parse.scm - el mismo enfoque se puede aplicar en C#. –
No sé por qué crees que ANTLR (o cualquier generador de analizadores) es excesivo. Debe tener alguna forma de definir sus datos, y eso requiere un lenguaje de especificación, para lo cual debe haber un analizador en alguna parte; no tiene mucho sentido escribir un analizador completamente ad hoc para este propósito. También necesitará algún tipo de analizador para analizar los datos binarios en bruto; los generadores de analizadores convencionales generalmente se utilizan para procesar texto, pero puede abusarlos fácilmente para procesar datos binarios. Ahora, para analizar datos binarios, un regulador debe ser adecuado; un CFG completo probablemente no sea necesario. –
@Ira: Buen punto sobre el lenguaje de especificación. El funcionamiento de mi Jeeves tenía uno, y acabo de usarlo en lugar de agregarlo o diseñarlo. – John