Pregunta

Yo uso CodeSmith para las plantillas PLINQO, para construir mi dal de objetos mi DB; funciona muy bien!

Creo que ese es el principal uso de aplicaciones de generador de código, pero tengo curiosidad ... ¿qué otro tipo de código le considere el uso de un generador de código para? ¿Tiene algún plantillas CodeSmith que utiliza con frecuencia (en caso afirmativo, ¿qué hacer)?

¿Fue útil?

Solución

No he utilizado CodeSmith, pero he hecho un poco de generación de código. Noteably escribí la mayor parte de un sistema de gestión de la configuración (CM) para un sistema de WiMAX, donde se ha generado el código CM durante 3 plataformas diferentes. La única diferencia era el modelo CM para cada plataforma.

El modelo estaba en una costumbre específica Idioma del dominio (DSL) que construimos tuvimos un analizador de. El lenguaje era un estilo básico contenedor / elemento donde los contenedores podría nido y tener un identificador, y los elementos eran de tipos predefinidos. Documentación era un atributo de elementos y contenedores. Se podría añadir Lua fragmentos de las definiciones de elementos y contenedores de hacer la validación semántica (por ejemplo, el valor está en la correcta rango, si se trata de una dirección IP es en un rango CIDR definida en otro lugar, etc.).

El analizador genera un árbol sintáctico que luego empujó plantillas. El lenguaje de la plantilla era una implementación parcial de C StringTemplate . Lo usamos para generar:

  • Un modelo específico C API que las aplicaciones podría poner en conseguir valores de configuración,
  • El código Lua recogida para la validación del modelo y proporcionar mensajes de error útil,
  • Dos "backends" de la API que administraría los valores en la memoria (para la manipulación temporal de un modelo), y en un sistema de base de datos (para compartir entre procesos),
  • Configuración del analizador de archivos y escritor,
  • documentación HTML, y
  • Command Line Interface (CLI) de aplicación para la visualización interactiva y cambiar de una configuración.

En retrospectiva, debería haber utilizado simplemente Lua directamente como DSL. Hubiera sido más detallado, pero tener el analizador ya allí y un montón de opciones de plantillas disponibles Lua me habría ahorrado un montón de esfuerzo de desarrollo.

Para las cosas que tienen una estructura repetivie y reglas bien definidas acerca de lo que esas cosas tienen que hacer, la generación de código puede ser una cosa maravillosa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top