2014-11-13 3 views
0

Я реализую свою собственную DSL и использую Xtend для генерации кода C. Я разработал небольшой прототип с использованием XPand/Xtend, но теперь мне нужно преобразовать прототип в XTend.генерация кода с Xtend

В Xpand я использовал функцию «Создать» для создания файла C, но я не знаю, как я могу сделать подобное с помощью XTend. Любая помощь в этом отношении будет высоко оценена.

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

Спасибо и наилучшими пожеланиями, Hemal Bavishi

+0

У меня есть некоторый намек на это. В отличие от XPand, где вы определяете тип файла, вы получаете данные в буфере, а затем вам нужно сбрасывать данные в файл. Вот как работает другой движок JET. Я попытаюсь задокументировать разницу между XPand и XTend и загрузить ее. Мне нравится эта технология и скоро загружу этот пример. Наслаждаться:) –

ответ

0

Вы могли бы сделать что-то вроде этого:

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

или

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

(при условии 'DateString()' функция является в том же классе) Это в Xtend вызывается с использованием выражений шаблона (Закрыто в трех кавычках '' '' '' '' '). Вы можете скомпоновать результат функции в val (конечная переменная в Xtend) для первого случая. Затем используйте другую функцию для другого шаблона COM_C: COM_Def_C. Добавьте результат в переменную и напишите в файл с помощью простой java.