2012-01-20 1 views
3

그래서 xtext 문법의 기본 예제가 있습니다.Xtext와 Xtend를 사용하여 AST를 생성하는 방법은 무엇입니까?

grammar org.xtext.example.mydsl.MyDsl with org.eclipse.xtext.common.Terminals 

generate myDsl "http://www.xtext.org/example/mydsl/MyDsl" 

Model: 
    greetings+=Greeting*; 

Greeting: 
    'Hello' name=ID '!'; 

나는 추상 구문 트리보고 싶은 -

package org.xtext.example.mydsl.generator 

import org.eclipse.emf.ecore.resource.Resource 
import org.eclipse.xtext.generator.IGenerator 
import org.eclipse.xtext.generator.IFileSystemAccess 

class MyDslGenerator implements IGenerator { 

    override void doGenerate(Resource resource, IFileSystemAccess fsa) { 
     //TODO implement me 
    } 
} 

이 doGenerate 때마다 AST의 텍스트 버전을 인쇄 출력하기 위해처럼 나는 해당 xtend 파일을 싶습니다 특히, 보이는 호출됩니다. 나는 이것을 약 2 일 동안 해킹 해왔고 나는 근본적으로 뭔가 빠져있다. - 누군가 나를 불쌍히 여긴다. doGenerate 함수는 무엇이 될까요?

답변

0

doGenerate 함수의 매개 변수는 EMF 기반 리소스 (기본적으로 텍스트 파일의 모델 표현, 즉 해결 된 링크가있는 AST)와 파일 시스템에 쓰는 도우미 클래스입니다.

생성자 태스크는 생성 된 소스 코드 (일반적으로 Java이지만 필수는 아니지만)를 생성하는 것입니다. 예를 들어 블로그 게시물 http://www.rcp-vision.com/?p=1573을 참조하십시오. 마지막에는 샘플 코드 생성기가 사용되었습니다.