도메인 특화 언어

도메인 특화 언어(domain-specific language, DSL)는 특정 애플리케이션 도메인에 특화된 컴퓨터 언어이다. 이는 여러 도메인에 걸쳐 널리 적용 가능한 범용 언어(GPL)와 대조된다. DSL의 종류는 매우 다양하며, 웹 페이지를 위한 HTML과 같이 널리 사용되는 언어부터 MUSH 소프트 코드와 같이 단 하나 또는 소수의 소프트웨어에서만 사용되는 언어까지 광범위하다. DSL은 언어의 종류에 따라 도메인 특화 마크업 언어, 도메인 특화 모델링 언어(더 일반적으로는 명세 언어), 도메인 특화 프로그래밍 언어 등으로 더 세분화될 수 있다. 특수 목적의 컴퓨터 언어는 컴퓨터 시대 초기부터 항상 존재해 왔지만, "도메인 특화 언어"라는 용어는 도메인 특화 모델링의 부상으로 인해 더 대중화되었다. 단일 애플리케이션에서 사용되는 것과 같은 더 단순한 DSL은 비공식적으로 미니 언어(mini-languages)라고도 불린다.

범용 언어와 도메인 특화 언어 사이의 경계가 항상 명확한 것은 아니다. 어떤 언어는 특정 도메인을 위한 전문화된 기능을 가지고 있으면서도 더 넓게 적용될 수 있거나, 반대로 원칙적으로는 광범위한 적용이 가능하지만 실제로는 주로 특정 도메인에만 사용될 수도 있기 때문이다. 예를 들어, 펄은 원래 AWK나 셸 스크립트와 동일한 도메인인 텍스트 처리 및 글루(glue) 언어로 개발되었으나, 나중에는 대부분 범용 프로그래밍 언어로 사용되었다. 반대로 포스트스크립트는 튜링 완전한 언어이며 원칙적으로 모든 작업에 사용될 수 있지만, 실제로는 페이지 기술 언어로 좁게 사용된다.

 사용 
적절한 DSL의 설계와 사용은 해당 도메인에 적합한 언어를 사용함으로써 도메인 공학의 핵심적인 부분이 된다. 이는 기존의 DSL이나 GPL을 사용하거나 새로운 DSL을 개발하는 것으로 구성될 수 있다. 언어 지향 프로그래밍은 문제 해결 과정의 표준적인 부분으로서 문제를 표현하기 위한 특수 목적 언어를 생성하는 것을 고려한다. 기존 언어를 재사용하는 대신 도메인 특화 언어(및 이를 지원하는 소프트웨어)를 만드는 것은, 해당 언어가 기존 언어보다 특정 유형의 문제나 해결책을 더 명확하게 표현할 수 있게 해주고, 문제의 유형이 충분히 자주 반복될 때 가치가 있다. 실용적으로 DSL은 특정 문제 도메인, 특정 문제 표현 기법, 특정 해결 기법 또는 도메인의 다른 측면에 특화될 수 있다.

 개요 
도메인 특화 언어는 특정 도메인의 문제를 해결하기 위해 특별히 만들어지며, 해당 도메인 이외의 문제를 해결하기 위한 의도는 없다(기술적으로는 가능할지라도). 대조적으로 범용 언어는 많은 도메인의 문제를 해결하기 위해 만들어진다. 도메인은 비즈니스 영역일 수도 있다. 비즈니스 영역의 몇 가지 예는 다음과 같다.

 생명 보험 증권 (대형 보험사에서 내부적으로 개발)
 전투 시뮬레이션
 급여 계산
 청구(billing)

도메인 특화 언어는 아주 작은 프로그래밍 언어와 스크립트 언어 사이 어딘가에 위치하며, 종종 프로그래밍 라이브러리와 유사한 방식으로 사용된다. 이러한 개념들 사이의 경계는 스크립트 언어와 범용 언어 사이의 경계처럼 상당히 모호하다.

 설계 및 구현 측면 
도메인 특화 언어는 설계와 구현에 있어 매우 구체적인 목표를 가진 언어(또는 종종 선언된 구문이나 문법)이다. 도메인 특화 언어는 Generic Eclipse Modeling System에 의해 생성된 것과 같은 시각적 다이어그램 언어, Eclipse Modeling Framework와 같은 프로그래밍 방식의 추상화, 또는 텍스트 기반 언어 중 하나일 수 있다. 예를 들어, 명령줄 유틸리티인 Grep은 텍스트 줄에서 패턴을 일치시키는 정규 표현식 구문을 가지고 있다. sed 유틸리티는 정규 표현식을 일치시키고 대체하기 위한 구문을 정의한다. 종종 이러한 작은 언어들은 더 복잡한 프로그래밍 작업을 수행하기 위해 셸 내부에서 함께 사용될 수 있다.

도메인 특화 언어와 스크립트 언어 사이의 경계는 다소 모호하지만, 도메인 특화 언어는 파일 시스템 액세스, 프로세스 간 제어 및 기타 범용 프로그래밍 언어나 스크립트 언어의 특징인 저급 함수가 부족한 경우가 많다. 많은 도메인 특화 언어는 바이트코드나 실행 코드로 컴파일되지 않고 다양한 종류의 미디어 객체로 컴파일된다. GraphViz는 포스트스크립트, GIF, JPEG 등으로 내보내고, Csound는 오디오 파일로 컴파일하며, POV와 같은 레이 트레이싱 도메인 특화 언어는 그래픽 파일로 컴파일한다.

 데이터 정의 언어 
SQL과 같은 데이터 정의 언어는 흥미로운 사례를 제시한다. 특정 도메인(SQL의 경우 관계형 데이터베이스 액세스 및 관리)에 특화되어 있고 종종 다른 애플리케이션에서 호출되기 때문에 도메인 특화 언어로 간주될 수 있지만, SQL은 많은 스크립트 언어보다 더 많은 키워드와 함수를 가지고 있으며, 프로그래밍에서 데이터베이스 조작의 보편성과 전문가가 되기 위해 필요한 숙련도 때문에 그 자체로 하나의 언어로 생각되는 경우가 많다.

이 경계를 더욱 모호하게 만드는 것은, 많은 도메인 특화 언어가 API를 노출하고 있어 실행 흐름을 끊거나 별도의 프로세스를 호출하지 않고도 다른 프로그래밍 언어에서 접근할 수 있어 프로그래밍 라이브러리처럼 작동할 수 있다는 점이다.

 프로그래밍 도구 
일부 도메인 특화 언어는 시간이 지남에 따라 완전한 기능을 갖춘 프로그래밍 도구를 포함하도록 확장되기도 하며, 이는 해당 언어가 도메인 특화인지 아닌지에 대한 문제를 더욱 복잡하게 만든다. 좋은 예로 하나의 XML 그래프를 다른 그래프로 변환하기 위해 특별히 설계된 함수형 언어인 XSLT가 있다. 이는 시작된 이래로(특히 2.0 버전에서) 다양한 형태의 파일 시스템 상호작용, 문자열 및 날짜 조작, 데이터 타이핑이 가능하도록 확장되었다.

모델 기반 개발에서는 모델에 어설션을 장식하기 위한 언어인 OCL(Object Constraint Language)이나 도메인 특화 변환 언어인 QVT와 같은 도메인 특화 언어의 많은 사례를 찾을 수 있다. 그러나 통합 모델링 언어(UML)와 같은 언어는 일반적으로 범용 모델링 언어이다.

요약하자면 비유를 드는 것이 유용할 수 있다. 매우 작은 언어는 음식을 자르는 것부터 나무를 베는 것까지 수천 가지 방식으로 사용될 수 있는 칼과 같다. 도메인 특화 언어는 전동 드릴과 같다. 드릴은 용도가 다양하지만 특정 상황, 즉 구멍을 뚫는 데 사용되는 강력한 도구이다. 범용 언어는 다양한 작업을 수행하기 위해 의도된 다양한 도구들이 있는 완전한 작업대이다. 프로그래머는 현재의 작업대를 보고 더 나은 드릴이 필요하다는 것을 깨닫고 특정 도메인 특화 언어가 정확히 그것을 제공한다는 것을 발견했을 때 DSL을 사용해야 한다.

 도메인 특화 언어 주제 
 외부 및 임베디드 도메인 특화 언어 
독립적인 인터프리터나 컴파일러를 통해 구현된 DSL은 외부(External) 도메인 특화 언어로 알려져 있다. 잘 알려진 예로는 TeX나 AWK가 있다. 임베디드(Embedded) 또는 내부(Internal) 도메인 특화 언어로 알려진 별도의 범주는 일반적으로 호스트 언어 내에서 라이브러리로 구현되며 호스트 언어의 구문으로 제한되는 경향이 있지만, 이는 호스트 언어의 기능에 따라 달라진다.

 사용 패턴 
도메인 특화 언어에는 몇 가지 사용 패턴이 있다.Marjan Mernik, Jan Heering, and Anthony M. Sloane. When and how to develop domain-specific languages. ACM Computing Surveys, 37(4):316–344, 2005.Diomidis Spinellis. Notable design patterns for domain specific languages. Journal of Systems and Software, 56(1):91–99, February 2001. 

 명령줄이나 Makefile에서 직접 사용자 조작을 통해 호출되는 독립 실행형 도구로 처리 (예: 정규 표현식 매칭을 위한 grep, sed, lex, yacc, GraphViz 도구 모음 등)
 프로그래밍 언어 매크로 시스템을 사용하여 구현되고 컴파일 시점이나 런타임에 호스트 범용 언어로 변환 또는 확장되는 도메인 특화 언어
 임베디드 도메인 특화 언어(embedded domain-specific language, eDSL) (내부 도메인 특화 언어로도 알려짐)는 "호스트" 프로그래밍 언어의 라이브러리로 구현되는 DSL이다. eDSL은 구문, 의미론 및 런타임 환경(시퀀싱, 조건문, 반복, 함수 등)을 활용하고 프로그래머가 호스트 프로그래밍 언어를 사용하여 "대상" 프로그래밍 언어의 코드를 생성하는 프로그램을 만들 수 있도록 도메인 특화 프리미티브를 추가한다. 여러 eDSL을 하나의 프로그램에 쉽게 결합할 수 있으며 호스트 언어의 기능을 사용하여 기존 eDSL을 확장할 수 있다. eDSL 사용의 다른 가능한 장점으로는 개선된 자료형 안전 및 더 나은 IDE 툴링이 있다. eDSL 예시: 파이썬의 SQL eDSL인 SQLAlchemy "Core", 자바의 SQL eDSL인 jOOQ, C#의 SQL eDSL인 LINQ의 "메서드 구문", 코틀린의 HTML eDSL인 kotlinx.html.
 특정 기능을 수행하기 위해 C나 펄과 같은 범용 언어로 작성된 프로그램에서 (런타임에) 호출되는 도메인 특화 언어. 종종 추가 처리를 위해 작업 결과를 "호스트" 프로그래밍 언어로 반환한다. 일반적으로 도메인 특화 언어를 위한 인터프리터나 가상 머신이 호스트 애플리케이션에 내장된다(예: 포맷 문자열, 정규 표현식 엔진).
 사용자 애플리케이션에 내장된 도메인 특화 언어(예: 스프레드시트 내의 매크로 언어) (1) 애플리케이션 사용자가 작성한 코드를 실행하거나, (2) 애플리케이션에 의해 동적으로 생성되거나, (3) 두 가지 모두를 위해 사용된다.

많은 도메인 특화 언어가 한 가지 이상의 방식으로 사용될 수 있다. 호스트 언어에 내장된 DSL 코드는 sed, AWK, 펄 또는 자바스크립트의 정규식과 같은 특별한 구문 지원을 받을 수도 있고, 문자열로 전달될 수도 있다.

 설계 목표 
소프트웨어 공학에 도메인 특화 언어 접근 방식을 채택하는 것은 위험과 기회를 동시에 수반한다. 잘 설계된 도메인 특화 언어는 이들 사이의 적절한 균형을 찾아낸다.

도메인 특화 언어는 범용 언어와 대조되는 중요한 설계 목표를 가진다.

 도메인 특화 언어는 포괄성이 떨어진다.
 도메인 특화 언어는 해당 도메인에서 훨씬 더 표현력이 풍부하다.
 도메인 특화 언어는 최소한의 코드 중복을 보여야 한다.

 관용구 
프로그래밍에서 관용구는 일반적인 개발 작업을 처리하기 위해 프로그래머가 적용하는 방법이다. 예:

 창을 닫기 전에 데이터가 저장되었는지 확인한다.
 명령줄 매개변수가 프로그램 동작에 영향을 주므로 변경될 때마다 코드를 수정한다.

범용 프로그래밍 언어는 이러한 관용구를 거의 지원하지 않지만, 도메인 특화 언어는 이를 다음과 같이 기술할 수 있다.

 스크립트가 자동으로 데이터를 저장할 수 있다.
 도메인 특화 언어가 명령줄 입력을 매개변수화할 수 있다.

 예시 
도메인 특화 프로그래밍 언어의 예로는 HTML, 연필 그리기와 같은 그림을 위한 로고, 베릴로그 및 VHDL 하드웨어 기술 언어, 행렬 프로그래밍을 위한 매트랩 및 GNU 옥타브, 기호 수학을 위한 Mathematica, 메이플 및 맥시마, 반응형 및 분산 시스템을 위한 명세 및 기술 언어, 스프레드시트 수식 및 매크로, 관계형 데이터베이스 질의를 위한 SQL, 구문 분석기 생성을 위한 Yacc 문법, 렉서를 지정하기 위한 정규 표현식, 다이어그램 언어 생성을 위한 Generic Eclipse Modeling System, 사운드 및 음악 합성을 위한 Csound, 그리고 그래프 배치 및 그래프 재작성에 사용되는 소프트웨어 패키지인 GraphViz 및 GrGen의 입력 언어, 테라폼 및 기타 HashiCorp 도구에 사용되는 Hashicorp Configuration Language, 그리고 고유의 구성 언어를 가진 퍼핏 등이 있다.

 게임메이커 언어 
게임메이커 스튜디오에서 사용되는 GML 스크립팅 언어는 초보 프로그래머가 프로그래밍을 쉽게 배울 수 있도록 고안된 도메인 특화 언어이다. 이 언어는 델파이, C++, BASIC을 포함한 여러 언어의 혼합체 역할을 한다. 컴파일 후 이 언어의 대부분의 함수는 실제로 대상 플랫폼 전용 언어로 작성된 런타임 함수를 호출하므로 최종 구현은 사용자에게 보이지 않는다. 이 언어는 주로 누구나 쉽게 언어를 익혀 게임을 개발할 수 있도록 하는 역할을 하며, 메인 게임 루프를 처리하고 호출된 함수의 구현을 유지하는 GM 런타임 덕분에 가장 단순한 게임에는 수천 줄의 코드 대신 몇 줄의 코드만 필요하다.

 콜드퓨전 마크업 언어 
콜드퓨전의 관련 스크립트 언어는 데이터 중심 웹사이트를 위한 도메인 특화 언어의 또 다른 예이다.
이 스크립트 언어는 웹사이트에서 사용하기 위해 자바, .NET, C++, SMS, 이메일, 이메일 서버, http, ftp, 익스체인지, 디렉토리 서비스 및 파일 시스템과 같은 언어 및 서비스를 함께 엮는 데 사용된다.

콜드퓨전 마크업 언어(CFML)는 콜드퓨전 페이지에서 데이터 소스와 상호 작용하고, 데이터를 조작하고, 출력을 표시하는 데 사용할 수 있는 태그 세트를 포함한다. CFML 태그 구문은 HTML 요소 구문과 유사하다.

 필터마이스터 
FilterMeister는 포토샵 호환 이미지 처리 필터 플러그인을 제작하기 위한 특정 목적을 위해 C 언어를 기반으로 한 프로그래밍 언어를 갖춘 프로그래밍 환경이다. FilterMeister는 그 자체가 포토샵 플러그인으로 실행되며 스크립트를 로드하고 실행하거나 독립적인 플러그인으로 컴파일하여 내보낼 수 있다.
FilterMeister 언어는 C 언어와 함수 라이브러리의 상당 부분을 재현하지만, 포토샵 플러그인의 문맥 내에서 사용될 수 있는 기능들만 포함하고 이 특정 도메인에서만 유용한 다수의 특정 기능을 추가한다.

 미디어위키 틀 
미디어위키의 틀(Template) 기능은 페이지 틀 생성과 미디어위키 페이지를 다른 미디어위키 페이지로 트랜스클루전(참조에 의한 포함)하는 것을 지원하는 근본적인 목적을 가진 임베디드 도메인 특화 언어이다.

 소프트웨어 공학에서의 사용 
소프트웨어 공학의 생산성과 품질을 향상시키기 위해 도메인 특화 언어에 대한 많은 관심이 있어 왔다. 도메인 특화 언어는 효율적인 소프트웨어 공학을 위한 견고한 도구 세트를 제공할 수 있다. 이러한 도구들은 중요한 소프트웨어 시스템 개발에 도입되기 시작하고 있다.

Software Cost Reduction Toolkit이 그 예이다. 이 툴킷은 요구사항 명세를 작성하기 위한 명세 편집기, 변수 의존성을 표시하기 위한 의존성 그래프 브라우저, 명세의 논리식에서 누락된 케이스를 포착하기 위한 일관성 검사기, 명세에 대해 프로그램 속성을 확인하기 위한 모델 검사기 및 정리 증명기, 그리고 요구사항을 기반으로 불변량을 자동으로 생성하는 불변량 생성기를 포함하는 유틸리티 모음이다.

더 새로운 발전은 주로 도메인 특화 언어를 생성, 최적화 및 사용하는 데 기반을 둔 통합 소프트웨어 공학 방법론인 언어 지향 프로그래밍이다.

 메타컴파일러 

언어 지향 프로그래밍과 다른 모든 형태의 도메인 특화 언어를 보완하는 것은 메타컴파일러라고 불리는 컴파일러 작성 도구 클래스이다. 메타컴파일러는 도메인 특화 언어를 위한 구문 분석기 및 코드 생성기를 생성하는 데 유용할 뿐만 아니라, 메타컴파일러 자체가 메타프로그래밍 도메인을 위해 특별히 설계된 도메인 특화 메타 언어를 컴파일한다.

도메인 특화 언어를 파싱하는 것 외에도 메타컴파일러는 광범위한 소프트웨어 공학 및 분석 도구를 생성하는 데 유용하다. 메타컴파일러 방법론은 프로그램 변환 시스템에서 자주 발견된다.

컴퓨터 과학과 컴퓨터 산업 모두에서 중요한 역할을 한 메타컴파일러로는 Meta-II와 그 후손인 TreeMeta가 있다.

 버전 4 이전의 언리얼 엔진 및 기타 게임 
언리얼과 언리얼 토너먼트는 언리얼스크립트라는 언어를 공개했다. 이는 경쟁작인 퀘이크(Id Tech 2 엔진 사용)에 비해 모드의 신속한 개발을 가능하게 했다. Id Tech 엔진은 표준 C 코드를 사용했으므로 C를 배우고 적절하게 적용해야 했지만, 언리얼스크립트는 사용 편의성과 효율성에 최적화되었다. 마찬가지로 최근의 게임들은 개발을 위해 자체적인 특정 언어를 도입했다. 흔한 예로 스크립팅을 위한 루아가 있다.

 정책 자동화를 위한 규칙 엔진 
정부와 민간 산업 모두에서 사용되는 정책 및 비즈니스 규칙을 자동화하기 위해 다양한 비즈니스 규칙 엔진이 개발되었다. ILOG, 오라클 정책 자동화, DTRules, 드룰스 등은 다양한 문제 도메인을 지원하기 위해 고안된 DSL을 지원한다. DTRules는 규칙 세트 내에서 여러 DSL을 사용하기 위한 인터페이스를 정의하기까지 한다.

비즈니스 규칙 엔진의 목적은 비즈니스 로직의 표현을 가능한 한 사람이 읽기 쉬운 방식으로 정의하는 것이다. 이를 통해 도메인 전문가와 개발자 모두 비즈니스 로직의 동일한 표현을 사용하고 이해할 수 있다. 대부분의 규칙 엔진은 DSL을 선호하는 프로그래밍 구문에 대한 대안과 결합하여 비즈니스 로직에 대한 제어 구조를 단순화하는 접근 방식(예: 선언적 규칙 또는 결정표 사용)을 제공한다.

 통계 모델링 언어 
통계 모델러들은 R(S 언어의 구현), Bugs, Jags, Stan과 같은 도메인 특화 언어를 개발했다. 이러한 언어들은 베이지안 모델을 설명하기 위한 구문을 제공하며 시뮬레이션을 사용하여 이를 해결하기 위한 방법을 생성한다.

 여러 프로그래밍 언어에 대한 모델 및 서비스 생성 
웹 애플리케이션용 자바스크립트, 문서용 HTML, 고성능 코드용 C++ 등과 같이 도메인 특화 언어의 인터페이스 정의 언어를 기반으로 객체 처리 및 서비스를 생성한다. 이는 아파치 스리프트나 구글 프로토콜 버퍼와 같은 교차 언어 프레임워크에 의해 수행된다.

 거킨 
거킨(Gherkin)은 그 동작이 어떻게 구현되는지 지정하지 않고 소프트웨어의 동작을 확인하기 위한 테스트 케이스를 정의하도록 설계된 언어이다. 이는 자연어 구문과 오프사이드 룰 설계를 사용하여 비기술적 사용자가 읽고 사용할 수 있도록 의도되었다. 거킨으로 정의된 테스트는 일반 프로그래밍 언어로 구현되어야 한다. 그러면 거킨 프로그램의 단계들은 비개발자가 접근할 수 있는 메서드 호출을 위한 구문 역할을 한다.

 기타 예시 
도메인 특화 언어의 다른 두드러진 예는 다음과 같다.
 Game Description Language
 OpenGL Shading Language
 Gradle
 액션스크립트

 장점 및 단점 
장점 중 일부는 다음과 같다.

 도메인 특화 언어는 문제 도메인의 관용구와 추상화 수준에서 솔루션을 표현할 수 있게 해준다. 도메인 전문가 자신이 도메인 특화 언어 프로그램을 이해, 검증, 수정 및 종종 개발까지 할 수 있다는 아이디어이다. 하지만 실제로는 그런 경우가 드물다.
 도메인 특화 언어는 도메인 수준에서의 검증을 가능하게 한다. 언어 구조가 안전한 한, 그 구조로 작성된 모든 문장은 안전한 것으로 간주될 수 있다.
 도메인 특화 언어는 비즈니스 정보 시스템의 개발을 전통적인 소프트웨어 개발자로부터 (기술적 전문 지식은 적더라도) 도메인에 대한 더 깊은 지식을 가진 전형적으로 더 큰 그룹인 도메인 전문가로 전환하는 데 도움이 될 수 있다.
 도메인 특화 언어는 범위가 한정되어 있어 배우기 쉽다.

단점 중 일부는 다음과 같다.

 새로운 언어를 배우는 비용
 한정된 적용 가능성
 도메인 특화 언어를 설계, 구현 및 유지 관리하는 비용과 이를 사용하여 개발하는 데 필요한 도구(IDE)의 비용
 적절한 범위를 찾고, 설정하고, 유지하는 것의 어려움
 도메인 특화성과 범용 프로그래밍 언어 구조 사이의 절충안을 맞추는 것의 어려움
 수작업으로 코딩된 소프트웨어에 비해 프로세서 효율성의 잠재적 손실
 유사한 비표준 도메인 특화 언어의 확산. 예를 들어, 한 보험 회사에서 사용되는 DSL 대 다른 보험 회사에서 사용되는 DSL.
 비기술적 도메인 전문가가 스스로 DSL 프로그램을 작성하거나 수정하는 것이 어려울 수 있다.
 (범용 언어와의 통합과 비교했을 때) IT 시스템의 다른 구성 요소와 DSL을 통합하는 난이도 증가
 특정 DSL의 전문가 공급이 적어 인건비가 상승하는 경향이 있음
 코드 예제를 찾기 더 어려움

 도메인 특화 언어 설계를 위한 도구 
 젯브레인즈 MPS는 도메인 특화 언어를 설계하기 위한 도구이다. 이는 언어 파서의 한계를 극복하고 표나 다이어그램이 있는 것과 같은 DSL 에디터를 구축할 수 있게 해주는 투영 편집(projectional editing)을 사용한다. 이는 언어 지향 프로그래밍을 구현한다. MPS는 언어 정의를 위한 환경, 랭기지 워크벤치(language workbench), 그리고 그러한 언어들을 위한 통합 개발 환경(IDE)을 결합한다.
 MontiCore는 도메인 특화 언어의 효율적인 개발을 위한 언어 워크벤치이다. DSL을 정의하는 확장된 문법 형식을 처리하고 DSL 문서를 처리하기 위한 자바 구성 요소를 생성한다.
 Xtext는 프로그래밍 언어 및 도메인 특화 언어(DSL) 개발을 위한 오픈 소스 소프트웨어 프레임워크이다. 표준 파서 생성기와 달리 Xtext는 파서뿐만 아니라 추상 구문 트리를 위한 클래스 모델도 생성한다. 또한 완전한 기능을 갖추고 사용자 정의가 가능한 이클립스 기반 IDE를 제공한다. 이 프로젝트는 2023년 4월에 아카이브되었다.
 래킷은 네이티브 코드, JIT 및 자바스크립트 컴파일러, IDE(이외에 Emacs, Vim, VSCode 등 지원) 및 도메인 특화 언어와 범용 언어 모두를 생성할 수 있도록 설계된 명령줄 도구를 포함하는 교차 플랫폼 언어 툴체인이다.

 같이 보기 
 메타 컴파일러
 메타 프로그래밍
 프로그래밍 도메인
 프로그래밍 패러다임
 다중 패러다임 프로그래밍 언어
 모델 중심 엔진이어링

 각주 


분류:프로그래밍 언어 분류