我有一個簡單的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
代碼在另一個線程中執行。
我的問題是,我如何使用ScriptingJvmModelInferrer
生成代碼爲Async.expression
?
在最簡單的情況下,我只是從這樣的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(模板語言)請參閱*擴展編譯器* –