Un langage dédié (DSL) est un petit langage optimisé pour un domaine précis. Parce qu'un DSL est ciblé, il peut grandement améliorer la productivité et la compréhension, en permettant à celui qui l'écrit de déclarer ce qu'il veut plutôt que comment y parvenir.
L'un des domaines où on les rencontre est celui des personnalisations et configurations complexes.
Par exemple, le langage DOT permet d'écrire une description textuelle d'un graphe, qui est ensuite transformée en image par l'un des outils Graphviz (comme dot).
Un graphe simple ressemble à ceci :
graph {
graph [bgcolor="yellow"]
a [color="red"]
b [color="blue"]
a -- b [color="green"]
}
Si on met ceci dans un fichier example.dot et qu'on exécute dot example.dot -T png -o example.png, on obtient une image example.png avec un cercle rouge et un cercle bleu reliés par une ligne verte sur un fond jaune.
Écris un langage dédié similaire au langage dot de Graphviz.
Notre DSL est similaire au langage dot de Graphviz en ce sens qu'il servira à créer des structures de données de graphe. Toutefois, contrairement au langage DOT, notre DSL sera un DSL interne, destiné à n'être utilisé que dans notre langage.
Pour en savoir plus sur la différence entre les DSL internes et externes.
Cet exercice te demandera de définir la syntaxe d'un DSL similaire au langage DOT.
Cette tâche te demandera probablement d'utiliser des notations ou des macros. Tu peux consulter une référence.
Dans cet exercice, les arêtes sont représentées par un seul - entre les nœuds, contrairement au -- utilisé dans le véritable langage DOT.
Cela évite les conflits avec la syntaxe des commentaires sur une ligne de Lean.
De plus, chaque instruction se termine par un ;, même les commentaires au niveau du graphe.
Inscris-toi sur Exercism pour apprendre et maîtriser Lean avec 100 exercices, et un vrai mentorat humain, le tout gratuitement.