J'ai un simple DSL qui devrait générer du code asynchrone pour les expressions (c'est l'exemple le plus simple que j'ai pu trouver pour illustrer mon propos). Je viens d'ajouter à la scripting example une nouvelle déclaration async
:Comment générer du code pour un sous-type 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
;
L'idée serait que le code async
est exécuté dans un autre thread.
Ma question est, comment puis-je générer du code pour le Async.expression
en utilisant le ScriptingJvmModelInferrer
?
Dans le cas le plus simple, je voudrais juste envelopper le code de la Async.expression
comme ça?
AsyncRunner.exec(new Runnable() {
@Override
public void run() {
// the Async.expression would end up here
}
})
Où est le crochet pour faire cela?
Je crois avoir trouvé un exemple dans https : //eclipse.org/Xtext/documentation/207_template.html (Template Template) voir la section * Extension du compilateur * –