Uma linguagem específica de domínio (DSL) é uma linguagem pequena, otimizada para um domínio específico. Como uma DSL é direcionada a um domínio, ela pode aumentar muito a produtividade e a compreensão, pois permite que quem escreve declare o que quer, em vez de como.
Uma das áreas em que elas são aplicadas é a de customizações e configurações complexas.
Por exemplo, a linguagem DOT permite escrever uma descrição textual de um grafo, que depois é transformada em uma imagem por uma das ferramentas do Graphviz (como o dot).
Um grafo simples se parece com isto:
graph {
graph [bgcolor="yellow"]
a [color="red"]
b [color="blue"]
a -- b [color="green"]
}
Colocando isso em um arquivo example.dot e rodando dot example.dot -T png -o example.png, você cria uma imagem example.png com um círculo vermelho e um azul ligados por uma linha verde sobre um fundo amarelo.
Escreva uma linguagem específica de domínio parecida com a linguagem dot do Graphviz.
Nossa DSL é parecida com a linguagem dot do Graphviz no sentido de que será usada para criar estruturas de dados de grafo. No entanto, ao contrário da linguagem DOT, nossa DSL será uma DSL interna, para uso apenas na nossa linguagem.
Saiba mais sobre a diferença entre DSLs internas e externas.
Este exercício vai exigir que você defina uma sintaxe para uma DSL parecida com a linguagem DOT.
Essa tarefa provavelmente vai exigir que você use notações ou macros. Talvez valha a pena dar uma olhada em uma referência.
Neste exercício, as arestas são representadas por um único - entre os nós, em contraste com o -- usado na linguagem DOT de verdade.
Isso evita conflitos com a sintaxe de comentário de linha única do Lean.
Além disso, toda instrução termina em ;, até mesmo os comentários no nível do grafo.
Crie sua conta no Exercism para aprender e dominar Lean com 100 exercícios e mentoria humana de verdade, tudo de graça.