генерация кода с помощью Xtend

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

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

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

Спасибо и С уважением, Хемал Бавиши


person Hemal Bavishi    schedule 13.11.2014    source источник
comment
У меня есть некоторая подсказка по этому поводу. В отличие от XP, где вы определяете тип файла, вы получаете данные в буфер, а затем вам нужно сбросить данные в файл. Так работает другой движок, например JET. Я постараюсь задокументировать разницу между XPand и XTend и загрузить то же самое. Мне нравится эта технология, и я скоро загружу пример. Наслаждаться:)   -  person Hemal Bavishi    schedule 14.11.2014


Ответы (1)


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

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

or

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

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

person Sujju    schedule 24.11.2014