Un lenguaje específico de dominio (DSL) es un lenguaje pequeño optimizado para un dominio concreto. Como un DSL está enfocado a un dominio, puede mejorar enormemente la productividad y la comprensión, ya que permite a quien lo escribe declarar qué quiere en lugar de cómo.
Un área problemática donde se aplican son las personalizaciones y configuraciones complejas.
Por ejemplo, el lenguaje DOT te permite escribir una descripción textual de un grafo que después se transforma en una imagen con alguna de las herramientas de Graphviz (como dot).
Un grafo sencillo tiene este aspecto:
graph {
graph [bgcolor="yellow"]
a [color="red"]
b [color="blue"]
a -- b [color="green"]
}
Si guardas esto en un fichero example.dot y ejecutas dot example.dot -T png -o example.png, se crea una imagen example.png con un círculo rojo y otro azul unidos por una línea verde sobre un fondo amarillo.
Escribe un lenguaje específico de dominio similar al lenguaje dot de Graphviz.
Nuestro DSL se parece al lenguaje dot de Graphviz en que se usará para crear estructuras de datos de tipo grafo. Sin embargo, a diferencia del lenguaje DOT, nuestro DSL será un DSL interno que solo se podrá usar en nuestro lenguaje.
Aprende más sobre la diferencia entre los DSL internos y externos.
En este ejercicio tendrás que definir la sintaxis de un DSL similar al lenguaje DOT.
Es probable que esta tarea te exija usar notaciones o macros. Quizá te venga bien consultar una referencia.
En este ejercicio, las aristas se representan con un único - entre nodos, a diferencia del -- que se usa en el lenguaje DOT real.
Así se evitan conflictos con la sintaxis de comentarios de una sola línea de Lean.
Además, todas las instrucciones terminan en ;, incluso los comentarios a nivel de grafo.
Regístrate en Exercism para aprender y dominar Lean con 100 ejercicios y mentoría humana real, todo gratis.