2012-11-14 2 views
0

Xtext에 DSL이 있는데, 내 .xtext 파일에 정의 된 규칙, 터미널 등을 재사용하여 프로젝트와 관련된 다른 도구의 구성 파일을 생성하고 싶습니다. 설정 파일은 BNF와 비슷한 문법을 ​​사용하기 때문에 실제 Xtext 내용과 매우 유사하며 최소한의 변환 만 필요합니다. 이론적으로 Xtext를 구문 분석하고 내 설정을 침해하는 스크립트를 쉽게 작성할 수 있습니다 ...Xtext/EMF 모델 대 모델 변환을 수행하는 방법은 무엇입니까?

질문은 전체 생태계에 맞도록 구현하려면 어떻게해야합니까? 다시 말해, Xtext/EMF에서 모델 대 모델 변환을 수행하는 방법은 무엇입니까?

답변

1

메타 모델 (ecore, xsd, ...)이 모두있는 경우 가장 좋은 방법은 ATL (http://www.eclipse.org/atl/)을 사용하는 것입니다.

1

나는 당신이 xtext 모델에서 EMF 모델로 가고 싶다고 정정했다. 이를 달성하는 코드 예제는 필요에 따라 특정 모델을 대체하십시오.

public static BeachScript loadScript(String file) throws BeachScriptLoaderException { 
    try { 
     Injector injector = new BeachStandaloneSetup().createInjectorAndDoEMFRegistration(); 
     XtextResourceSet resourceSet = injector.getInstance(XtextResourceSet.class); 
     resourceSet.addLoadOption(XtextResource.OPTION_RESOLVE_ALL, Boolean.TRUE); 
     Resource resource = resourceSet.createResource(URI.createURI("test.beach")); 
     InputStream in = new ByteArrayInputStream(file.getBytes()); 
     resource.load(in, resourceSet.getLoadOptions()); 
     BeachScript model = (BeachScript) resource.getContents().get(0); 
     return model; 

    } catch (Exception e) { 
     throw new BeachScriptLoaderException("Exception Loading Beach Script " + e.toString(),e); 
    } 
관련 문제