2012-04-22 17 views
19

Quiero generar código para otro idioma en Haskell, pero estoy desconcertado sobre cómo para abordar este problema. Estoy buscando una representación abstracta y elegante del lenguaje en Haskell, que también es útil para la generación de código. El idioma en cuestión es InstallScript (link a la guía de referencia del idioma). ¿Podría alguien dar pistas (tal vez con ejemplos) sobre cómo capturar los constructos del lenguaje empleados en InstallScript en tipos Haskell, o señalar proyectos similares para inspirarse?Generando código para otro idioma en Haskell

+6

Solo tiene que definir e implementar tipos abstractos para representar el árbol de sintaxis abstracta de su lenguaje de objetos (InstallScript) y tener las impresoras bonitas apropiadas, etc. etc. –

+0

@BasileStarynkevitch: ¿podría indicar proyectos que hacen esto? Estoy buscando ejemplos y trucos inteligentes ... – akosch

+5

Es posible que desee echar un vistazo al [paquete nsis] (http://hackage.haskell.org/package/nsis-0.1.2). – bzn

Respuesta

17

Este es un problema classic para resolver en Haskell.

  • definir un árbol de sintaxis abstracta para su idioma
  • definir una impresora bastante (para generar código)

de puntos de bonificación:

  • definir un analizador
  • Escribir una buena biblioteca de combinador Haskell para permitirle insertar el objetivo en Haskell
  • Escriba un optimizador para su sintaxis abstracta

Hay many, many examples en Hackage (p. Ej. this one).

Cuestiones relacionadas