У меня есть простая DSL, которая должна генерировать асинхронный код для выражений (это самый простой пример, который я мог бы придумать для иллюстрации моей точки). Я просто добавил к scripting example в новое async
заявление:Как сгенерировать код для подтипа XExpression?
grammar org.xtext.scripting.Scripting with org.eclipse.xtext.xbase.Xbase
generate scripting "http://www.xtext.org/scripting/Scripting"
import "http://www.eclipse.org/xtext/xbase/Xbase" as xbase
Script returns xbase::XBlockExpression:
{Script}
(expressions+=XExpressionOrVarDeclaration ';'?)*;
XExpression returns xbase::XExpression:
super | Async
;
Async:
'async' expression=XExpression
;
Идея была бы что async
код выполняется в другом потоке.
Мой вопрос в том, как я могу сгенерировать код для Async.expression
с помощью ScriptingJvmModelInferrer
?
В простейшем случае я бы просто обернул код из Async.expression
вот так?
AsyncRunner.exec(new Runnable() {
@Override
public void run() {
// the Async.expression would end up here
}
})
Где этот крюк?
Я думаю, что я нашел пример в HTTPS : //eclipse.org/Xtext/documentation/207_template.html (язык шаблонов) см. раздел * Расширение компилятора * –