2014-11-13 1 views
0

나는 내 자신의 DSL을 구현하고 있으며 Xtend를 사용하여 C 코드를 생성하고있다. 나는 XPand/Xtend를 사용하여 작은 프로토 타입을 개발했지만 이제 프로토 타입을 XTend로 변환해야합니다.Xtend로 코드 생성

Xpand에서는 C 파일을 생성하는 "Generate"함수를 정의했지만 XTend를 사용하여 어떻게 비슷한 작업을 수행 할 수 있는지 알지 못했습니다. 이와 관련하여 도움이된다면 크게 감사하겠습니다.

«DEFINE Generate FOR dsl::defs::module» 
«FILE "Com.c" -» 
/* DATE «dateString()» */ 
«EXPAND COM_C::COM_Def_C » 
«ENDFILE» 
«ENDDEFINE» 

감사와 안부, 혈액의 Bavishi

+0

필자는 XPand와는 달리 파일 유형을 정의 할 때 버퍼에 데이터를 가져온 다음 파일에 데이터를 덤프해야합니다. 이것은 JET와 같은 다른 엔진이 작동하는 방식입니다. 나는 XPand와 XTend의 차이점을 문서화하고 업로드하려고 노력할 것이다. 나는이 기술을 좋아하고 곧 예제를 업로드 할 것입니다. 즐겨:) –

답변

0

이 같은 것을 할 수있는 :

def xtendFunc() ''' 
/* DATE «dateString()» */ 
''' 

또는

def xtendFunc() { 
var = '''/* DATE «dateString()» */''' 
return var 
} 

합니다 ('날짜 열()'기능은 가정을 같은 클래스에서) Xtend에서 템플릿 표현식을 사용하여 호출됩니다. (3 개의 인용 부호 ''... '' '로 묶음). 첫 번째 경우에는 val (Xtend의 ​​최종 변수)에 함수의 결과를 포함 할 수 있습니다. 그런 다음 다른 템플릿 COM_C : COM_Def_C에 다른 함수를 사용합니다. 결과를 변수에 추가하고 간단한 java를 사용하여 파일에 기록하십시오.