Uma Linguagem Específica de Domínio (DSL) é uma pequena linguagem otimizada para um domínio específico. Como uma DSL é direcionada, pode ter um grande impacto na produtividade e na compreensão, ao permitir que quem a escreve declare o quê em vez de como.
Uma das áreas onde são aplicadas é a das personalizações e configurações complexas.
Por exemplo, a linguagem DOT permite-te escrever uma descrição textual de um grafo que é depois transformada numa imagem por uma das ferramentas Graphviz (como o dot).
Um grafo simples tem este aspeto:
graph {
graph [bgcolor="yellow"]
a [color="red"]
b [color="blue"]
a -- b [color="green"]
}
Ao colocar isto num ficheiro example.dot e executar dot example.dot -T png -o example.png, crias uma imagem example.png com um círculo vermelho e outro azul, ligados por uma linha verde, sobre um fundo amarelo.
Escreve uma Linguagem Específica de Domínio semelhante à linguagem dot do Graphviz.
A nossa DSL é semelhante à linguagem dot do Graphviz, na medida em que será usada para criar estruturas de dados de grafos. No entanto, ao contrário da linguagem DOT, a nossa DSL será uma DSL interna, para uso exclusivo na nossa linguagem.
Sabe mais sobre a diferença entre DSLs internas e externas.
Este exercício vai exigir que definas a sintaxe de uma DSL semelhante à linguagem DOT.
Esta tarefa vai provavelmente exigir que uses notações ou macros. Talvez queiras consultar uma referência.
Neste exercício, as arestas são representadas por um único - entre nós, ao contrário do -- usado na linguagem DOT propriamente dita.
Assim, evitas conflitos com a sintaxe de comentários de uma linha do Lean.
Além disso, todas as instruções terminam em ;, mesmo os comentários ao nível do grafo.
Inscreve-te no Exercism para aprenderes e dominares Lean com 100 exercícios, e mentoria humana real, tudo grátis.