2012-06-29 2 views
0

Xtext 문서 (http://www.eclipse.org/Xtext/documentation.html#_17)의 JVM 모델 섹션을 생각하면 다음과 같이 시작합니다. "대부분의 경우 DSL 개념을 Java 요소로 사용할 수 있습니다. 예를 들어 엔티티는 Java 클래스가되어 사용할 수 있어야합니다. "xtext 프로젝트 외부에서 xtext 유추 된 JVM 모델을 사용하는 방법은 무엇입니까?

위의 예제에서 생성 된 Entity 클래스 (외부, 즉 xbase의 다른 프로젝트에있는 실제 Java 코드)을 어떻게 사용할 수 있습니까?

본질적으로 묻는 것은 Java 클래스가 모델에 의해 생성 된 경우 Inferrer는 사실 다른 Java 클래스에서 호출 된 메소드와 호출 된 필드를 가질 수있는 실제 Java 클래스로 사용할 수 있으며, 그래서 어떻게 할 수 있니? 내이 문서를 통과

답변

2

을 Xbase 컴파일러 ... 생성 된 "자바 클래스는"단지을 Xbase 유형 만 xtext 컨텍스트에서 referenceabe이다, 따라서 실제 자바 클래스 아니라는 것을 두려워 나를 이끌었다 모든 Xbase 표현식을 Java 코드를 사용할 수있는 모든 곳에서 사용할 수있는 일반 Java 코드로 컴파일 할 수 있습니다.

언어에 고유 한 요소를 추가하는 경우 이러한 요소를 지원하도록 생성기를 확장해야합니다. 이러한 이유 때문에 사용자가 직접 JVMModelInferrer를 정의해야합니다.

기본 Xtext 컴파일러는 JVMModelInferrer를 실행하고 Xbase 표현식을 포함 할 수도 있고 포함하지 않을 수도있는 JVM 모델을 계산합니다. 이 JVM 모델은 Java 컴파일 가능 (따라서 Java 재사용 가능) 코드로 생성 될 수 있습니다.

이 기능을 테스트하려면 Xtext/Examples 범주의 New ... 마법사에서 사용할 수있는 Xtext Domain Model 예제를 생성하고 결과를 평가하면됩니다. 도메인 모델을 편집하면 Xtext가 자동으로 사용 가능한 Java 코드 (필요한 종속성이 설정된 경우)

+0

답장을 보내 주셔서 감사합니다. "필요한 종속성이 설정되어 있으면 자동으로 사용 가능한 Java 코드가 생성됩니다"라는 의미는 무엇입니까? 어떤 종속성입니까? generator.xtend (다만 JVMModelInferrer를 사용하는 것)를 사용하지 않고 코드를 생성 할 것을 제안합니까? 그렇다면이 코드는 어디에 생성 될까요? –

+0

Xbase는 표현식 언어로만 사용할 수 있으므로 최소한의 설정 만해야하므로 클래스가 설정되지 않습니다. 당신이해야 할 일은 클래스를 나타내는 모델 클래스 또는 생성 된 코드의 메소드가 무엇인지 결정하는 것입니다. 메소드 몸체는 Xbase 표현식으로부터 생성 될 수 있습니다. 자세한 내용은 http://www.eclipse.org/Xtext/documentation.html##_8을 참조하십시오. –

+0

답변에 많은 감사드립니다. 이 접근 방식을 보았지만 src-gen 폴더에 코드를 생성하고 있다는 사실을 알지 못했습니다. 그래서이 폴더에서 클래스를로드하면됩니다. –