Xtext2.0をMWE1とXPandで使用していますが、MWE2とXTendの問題はまったく同じだと思います。
私のXtext文法は次のようになります(抜粋):
grammer org.test.Test with org.eclipse.xtext.common.Terminals
generate test "http://www.test.org/test/Test
Model :
"COMMON STUFF"
"{"
(formatterDefs+=FormatterDef)*
"}"
...
FormatterDef : "Formatter" name=ID ":" formatter=STRING;
このmwe定義を使用する場合(抜粋):
<component class="org.eclipse.xtext.mwe.Reader" path="${project.src.directory}/xtext/model/" >
<register class="org.test.TestStandaloneSetup"/>
<load slot='formatterDefs' type='FormatterDef'/>
</component>
<component class="org.eclipse.xpand2.Generator">
<metaModel class="org.eclipse.xtend.typesystem.emf.EmfRegistryMetaModel"/>
<expand value="templates::Formatter::formatterTxt FOREACH formatterDefs"/>
</component>
したがって、スロットformatterDefs
はすべてで埋められFormaterDef
、これがテンプレートに使用され、すべての思考が正常に機能します。
Model
しかし、文法で名前が付けられたモデルルート要素を必要とするテンプレートがいくつかあります。だから使ってみた
<load slot='formatterDefs' type='FormatterDef'/>
と
<expand value="templates::Main::main FOREACH model"/>
代わりは。
しかし、私はこの警告を受け取ります:
org.eclipse.xtext.mwe.SlotEntry-タイプ「モデル」のエクスポートされた要素が見つかりませんでした->スロット「モデル」は空です。
そして、スロットには空のリストが含まれています。
だから私の質問は:私のテンプレートにルートを取得するために、私は何をする必要がありますか?Model