2012-07-02 5 views
1

xtend 생성기에서 파싱 된 트리의 일부를 입력에서 출력으로 전달하는 방법은 무엇입니까?xtext 생성기 앞으로 입력을 출력

예를 들어 일부 출력 코드 생성의 경우 일부 생성자/함수의 매개 변수를 구문 분석 할 필요가 없습니다. 난 단지 직접 출력 코드 (앞쪽 내부 중괄호)로 등이 상수, 변수 이름, expessions을 넣어해야합니다

입력 DSL 코드 :

CREATE_OBJECT_O(3, a, 5+6) 

출력 (일부 Java 또는 C있을 수 있습니다 ++ 코드) :

Object o = new Object_Impl(3, a, 5+6) 

xtext 문법의 일부 :

ParameterList: 
    (parameter+=Parameter ("," parameter+=Parameter)*)? 
    ; 
Parameter: 
    variableExpression=VariableExpression |(texts+=TextInParameter | macroSubstitutions+=MacroSubstitution)*; 

답변

3

는 differen이있다 Xtext에서 그 작업을 수행하기위한 t 서비스 :

  1. 당신은 org.eclipse.xtext.serializer.ISerializer 서비스를 주입 한 다음 텍스트 형식으로 객체를 출력 serializer.serialize (EObject를)를 호출 할 수 있습니다. 다만, 편집 중에 (JVMModelInferrer 내부에서 사용하는 경우 등), 직렬화 규칙을 사용합니다.
  2. 여기서 유용한 정적 메소드를 포함하는 org.eclipse.xtext.nodemodel.util.NodeModelUtils 클래스. 이러한 메서드는 원본 텍스트 서식을 사용하여 원래 서식을 유지하므로 편집 중에 사용할 수 있습니다.