에 액세스 할 수 있습니다 : 상호 참조가 아주 잘 작동Xtext : 이것은 내 문법 다른 파일 작업에 대한 상호 참조,하지만 난 EObject를
A: field=[B]
B: C | D
모두 C/D는 같은 파일에 앉아 때 또한 C/D가 다른 파일에있을 때 (가져 오기 사용).
모델 (EObject, AST의 루트)을 입력으로 가져 와서 C/D EObject를 추출하는 것이 내 문제입니다. C/D는 같은 파일에 앉아 때
, 내가 C를 얻기 위해 같은 것을 할 수 있습니다/D EObjects : 그러나
A a = ...
if (a.getField() instanceof C)
{
C c = (C)a.getField();
//do something with c
}
else if (a.getField() instanceof D)
{
D d = (D)a.getField();
//do something with d
}
, C/D가 다른 파일에 앉아, 교차 - 참조 작동 있지만 위의 작동하지 않습니다. a.getField() null이 아니지만 C 인스턴스가 아니며 D 인스턴스가 없습니다.
모델 제공 (다른 많은 모델 가져 오기), 다른 모델에있는 C/D에 어떻게 액세스 할 수 있습니까?
XtextResourceSetProvider rsp = (XtextResourceSetProvider)IResourceServiceProvider.Registry.INSTANCE.getResourceServiceProvider(uri).get(IResourceSetProvider.class);
XtextResourceSet rs = (XtextResourceSet) rsp.get(project);
Resource r = rs.getResource(uri, true);
당신이 "어디"입니다 더 많은 컨텍스트를 GIV 수 있습니다 당신이 무엇을하고 있는지 overcomplicated 같습니다
UPDATE는
이 자원을 얻기 위해 내 코드입니다 이러는거야? –
xtext를 사용하는 새로운 플러그인을 작성하고 있습니다. 이 플러그인에는 파일 위치를 가져 와서 해당 EObject 모델을 반환하는 메서드가 있습니다. 그런 다음 원래 질문에 설명 된이 플러그인에 다른 방법이 있습니다. –
당신은 반드시'org.eclipse.xtext.ui.resource.IResourceSetProvider.get (IProject) org.eclipse.xtext.ui.resource.IResourceSetProvider.get (IProject)'를 사용하여 리소스 세트를 가져오고 절대로 StandaloneSetup을 호출하지 않습니까? 이클립스 컨텍스트에서 –