2014-11-27 3 views
1

내 DSL에서 해당 URI를 사용하여 EMF 리소스를 가져 오려고합니다. 아래에서는 EPackages를 가져올 수있는 방법을 설명하지만 EPackages 내에있는 내용을 "탐색"할 수는 없습니다. 문법 자체가 그런xText : 해당 URI로 EMF 리소스 가져 오기

import "http://www.eclipse.org/emf/2002/Ecore" as ecore 

: 파울러의 상태 기계 DSL의 기본 예제를 사용

, 나는 문법 헤더에 추가

Statemachine : 
(imports+=Import)* 
// the default stuff 
('classes' classes+= [ecore::EObject|ID]+ 'end')? 
('resetEvents' 
    resetEvents+=[Event]+ 
'end')? 
; 

Import: 
'import' importURI=STRING 
; 

워크 플로우에서 나는 것을 확인했다 have :

// old scoping and exporting API 
fragment = scoping.ImportURIScopingFragment auto-inject {} 
fragment = exporting.SimpleNamesFragment auto-inject {} 

// scoping and exporting API 
//fragment = scoping.ImportNamespacesScopingFragment auto-inject {} 
//fragment = exporting.QualifiedNamesFragment auto-inject {} 

또한 내가 읽은 다른 게시물에 문제가 제기 된 것처럼 보였습니다. 날개 : 모두

fragment = validation.ValidatorFragment auto-inject { 
composedCheck = "org.eclipse.xtext.validation.ImportUriValidator" 
composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator" 
} 

모든, 나는 두 개의 인스턴스가 test1.statemachine 및 test2.statemachine 말을 만들 수 있습니다

// provides the necessary bindings for java types integration 
//fragment = types.TypesGeneratorFragment auto-inject {} 

// generates the required bindings only if the grammar inherits from Xbase 
//fragment = xbase.XbaseGeneratorFragment auto-inject {} 

// provides a preference page for template proposals 
//fragment = templates.CodetemplatesGeneratorFragment auto-inject {} 

은 또한 다음과 같은 주석 처리. 는 그럼 난 TEST1에서 쓸 수 있습니다 :

예상대로
import "platform:/resource/test/test2.statemachine" 

, 나는 'resetEvents'부분에 TEST2에서 이벤트를 참조 할 수 있어요. 만 난 아무것도 참조 할 수 있도록하고 싶습니다 때 나를 EPackage "상태 기"를 참조 할 수 있습니다

import "platform:/plugin/org.eclipse.xtext.example.fowlerdsl/model/generated/Statemachine.ecore" 

그러나, 다음 (예를 들어,하지만 너무 다른 메타 모델로 시도했습니다) (EClasses, EOperations 등). 이 정보에 액세스하려면 무엇을 놓치셨습니까?

답변

1

그럼 분명히 좋은 밤 수면 그래서 여기에 내가 없어진거야, 최선의 충고입니다 :

('classes' classes+= [ecore::EObject|FQN]+ 'end')? 
FQN: ID ("." ID)*; 
관련 문제