2010-07-28 2 views

답변

7

They are different in term of document storing the metamodel. y는 자신의 프로그래밍 언어와 도메인 특정 언어 (DSL을)를 만들에 올 때 XTextthis article는 하나의 사용 방법을 보여줍니다에 관한

.

일단 언어가 있으면 처리하고 싶다는 뜻이며, 일반적으로 모델을 다른 표현으로 변환하는 것을 의미합니다.
이 변환을 담당하는 기능을 생성기라고하며 변형 템플릿 (e.G. )과이를 실행하는 코드로 이루어져 있습니다. 어떤 경우에는 모델을 읽어 들이고 변환을 적용하여 코드를 생성합니다.

Example of such a model transformation

: (지금 DOT 문법에 대해 생성 된 Xtext 스위치 API를 사용) 제스트 인터프리터에 DOT와 함께 제공

dot3zest는 임시 DOT 에지 정의에 대한 지원이다. MPS에 관한

alt text


, 당신이 code generation to GPL such as Java, C#, C++ or XML 같은 here a serie of practical examples,
있습니다

alt text

+0

참고 : [2010 년 10 월 회의] (http://www.voelter.de/conferences/index/detail803128037.html)에서는 두 프레임 워크의 실용적인 예를 보여줍니다. 차이점은 [여기에] (http://lambda-the-ultimate.org/node/3994#comment-60524) – VonC

+0

코드 생성이 궁극적 인 목표입니까 아니면 충분히 멀리 볼 수 있습니까? –

+0

@ S.R : 궁극적 인 목표는 모델 변환으로 남아 있지 않습니다. AST (추상 구문 트리)를 다른 것으로 변환하면 코드 (코드 생성) 또는 노드 (첫 번째 예제에서는 노드 그래프) 또는 대상 모델이 무엇이든지간에 나타내는 다른 AST를 제공합니다. . – VonC

11

우리는 전체 bug tracker 사용하여 MPS를 만들었습니다. 코드 생성은 목표가 아니지만 실행 가능한 코드를 얻는 것을 의미합니다. 목표는 개발자에게 최소한의 노력으로 DSL을 생성 할 수있는 도구를 제공하는 것입니다.

MPS에 대한 멋진 점은 사용자 언어에 대한 IDE도 제공한다는 것입니다. 또한 서로 다른 DSL을 만들 수 있습니다. 즉, 클로저로 Java를 확장하는 DSL을 만들고 외부 메서드를 사용할 수있는 DSL을 만들면 이러한 확장이 함께 작동합니다.

+0

자바 클로저 확장 프로그램을 찾도록 도와 주시겠습니까? 나는 자바 synthax를 확장하는 방법을 몇 가지 예제를 찾을 수 없습니다. –

+0

MPS에서 Java 용 클로저를 사용하려면 jetbrains.mps.baseLanguage.closures 언어를 가져와야합니다. –

1

XText의 주요 사용법은 먼저 정의한 문법에서 DSL을 작성하고 Eclipse Workbench를 자동으로 생성한다고 생각합니다. 둘째, DSL로 작성된 scrpit을 java로 변환 할 수 있습니다. XText2의 내장 표현식은 플러스입니다. 프레임 워크는 작성한 작성한 DSL을 지원할 수있는 무료 IDE를 제공합니다. 그리고 DSL은 제공 할 최고의 제품입니다. 실제 세계의 규칙과 논리를 추상화하는 데 사용할 수 있습니다. 예를 들어, 우리 프로젝트에서 제품 설정 규칙. 전문가 만이 그것을 알고 있으므로, 당신이 만드는 DSL에 글을 써주세요.