2013-01-12 2 views
4

Xtext를 사용하여 작성된 DSL이 있습니다. 내가 원한 것은 DSL을 실행하여 좋은 것을 수행하는 것이다.인터프리터 대 코드 생성기 Xtext

Java 코드를 생성하기 위해 xdend에 인터페이스 IGenerator를 구현하는 myDslGenerator 클래스를 작성 했으므로 정상적으로 작동합니다.

두 가지 질문이 있습니다.

  1. 인터프리터와 코드 생성기의 차이점은 무엇입니까? 둘 다 DSL을 실행하는 데 사용하지 않습니까?
  2. 통역관 작성 방법은 무엇입니까? 단계별 자습서 링크로 모든 단계? xtend를 사용하여 코드를 생성하는 튜토리얼을 많이 찾았지만 인터프리터를 작성하지 못했습니다.

는 기본적으로 통역 코드 생성기는 정말 다르게 작동

살만

답변

4

, 감사합니다. 코드 생성기는 컴파일러와 같습니다. DSL의 실행 가능 코드를 다른 언어로 작성합니다. 반면에 통역사는 DSL을 트래버스하고 자신의 환경에서 실행하는 데 사용됩니다. 즉, 생성 된 코드는 DSL에 의존 할 필요는 없지만 더 빠르고 더 최적화 될 수 있습니다. 통역사는 사용자의 언어 구성을 이해해야하지만 개발 IDE에서 실행할 수 있으므로 추가 응용 프로그램을 실행할 필요가 없습니다.

AFAIK Xtext는 인터프리터 쓰기를 지원하지 않습니다. AFAIK Xtext는 인터프리터를 다소 언어 범위를 벗어난 형식으로 지원합니다 (Xbase 식의 경우 XbaseInterpreter 인스턴스가 있고 클래스 패스를 올바르게 설정하면 다시 사용할 수 있음) 특유한.

Xtext DSL (XbaseInterpreter조차도 해석하지 않음) 해석에 대한 단계별 자습서를 알지 못하지만 기본적으로 AST를 순회하는 것으로 요약되며 노드가 통과 할 때 해당하는 문이 동적으로 실행됩니다. 이 traversal이 예상대로 작동하기 위해서는 통역사가 변수 및 기타 참조 문맥 (가능하면 계층 적)을 유지해야합니다.