¿Cómo aplicaría Parsec para generar código desde un DSL?

he leído Capítulo 16 de Real World Haskell en Parsec . Los ejemplos de este capítulo muestran cómo usar Parsec para extraer estructuras de datos de cadenas.

Me pregunto cómo se aplicaría Parsec para crear un DSL de estilo imperativo, uno que tomaría la entrada escrita en un DSL y la traduciría a código Haskell, SQL o Ruby que se puede ejecutar.

Lo siento si esta es una pregunta general, pero agradecería cualquier pista o ejemplo.

preguntado el 27 de julio de 12 a las 15:07

Para un DSL dentro de haskell, echa un vistazo cuasi-cotizadores. -

Parsec solo ayudaría a analizar el texto de un DSL. Durante el análisis, es natural producir un AST (árbol de sintaxis abstracta), pero si desea ayuda para traducir el AST, debe buscar una tecnología diferente. En Haskell, es común usar una biblioteca genérica de "estilo transversal" como Uniplate o SYB para ayudar a escribir traductores, pero puede escribirlos con recursividad directa si su lenguaje es simple. -

1 Respuestas

Para obtener ayuda en el análisis de un lenguaje mínimo, eche un vistazo a la Expr módulo.

El tutorial Write a Scheme también muestra cómo pasar del análisis sintáctico a la evaluación de un idioma, a través de Parsec: http://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours

Respondido 07 Feb 13, 16:02

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.