DOT DSL

DOT DSL

어려움

지침

도메인 특화 언어(DSL)는 특정 도메인에 최적화된 작은 언어예요. DSL은 목적이 분명하기 때문에, 작성자가 _어떻게_가 아니라 _무엇_을 원하는지 선언할 수 있게 해 줘서 생산성과 이해도를 크게 높여줄 수 있어요.

DSL이 활용되는 대표적인 분야 중 하나는 복잡한 사용자 정의와 설정이에요.

예를 들어 DOT 언어를 사용하면 그래프를 텍스트로 설명할 수 있고, 그러면 Graphviz 도구(예: dot) 중 하나가 이를 그림으로 변환해 줘요. 간단한 그래프는 다음과 같아요.

graph {
    graph [bgcolor="yellow"]
    a [color="red"]
    b [color="blue"]
    a -- b [color="green"]
}

이 내용을 example.dot 파일에 넣고 dot example.dot -T png -o example.png를 실행하면, 노란 배경 위에서 초록색 선으로 연결된 빨간색과 파란색 원이 있는 example.png 이미지가 만들어져요.

Graphviz dot 언어와 비슷한 도메인 특화 언어를 작성해 봐요.

우리가 만드는 DSL은 그래프 데이터 구조를 만드는 데 사용된다는 점에서 Graphviz dot 언어와 비슷해요. 하지만 DOT 언어와 달리, 우리 DSL은 우리 언어에서만 사용하는 내부 DSL이에요.

내부 DSL과 외부 DSL의 차이에 대해 더 알아보세요.

Lean 문법

이 연습 문제에서는 DOT 언어와 비슷한 DSL을 위한 문법을 직접 정의해야 해요.

이 작업에는 표기법이나 매크로를 사용해야 할 거예요. 참고 자료를 한번 확인해 보는 것도 좋아요.

Note

이 연습 문제에서 간선은 노드 사이의 - 하나로 나타내요. 실제 DOT 언어에서 쓰는 --와는 달라요. 이렇게 하면 Lean의 한 줄 주석 문법과 충돌하지 않아요.

또한 그래프 수준의 주석을 포함해 모든 문은 ;로 끝나요.


출처

Wikipedia링크가 새 창이나 탭에서 열려요
GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Lean Exercism

DOT DSL 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 Lean 트랙을 연습 문제 100개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.