내 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 등). 이 정보에 액세스하려면 무엇을 놓치셨습니까?