Xtextを使用してドメイン固有の言語を実装したいと思っています。以下の例で考えてみましょう:Xtext親機能に要素を追加する
Spec:
'spec' '(' attrs=AttrAsgnList? ')';
AttrAsgnList:
attrs+=AttrAsgn (',' attrs+=AttrAsgn)*;
AttrAsgn:
name=ID '=' value=INT;
XTENDにこのでの作業を、一つは今(スペックオブジェクトを指定して)このような単一の属性にアクセスします。私はdidnの場合
for (a : spec.attrs.attrs) ...
私はあまりそれを好むだろう」属性にアクセスするたびに、2つのレベルを通過する必要があります。 ATTRS機能のスペックがリストになるように、これを防ぐために明白な方法は、スペックに全体AttrAsgnListルールをインライン化することです。しかし、私はこのような構造を私のDSLでかなり使う必要があります。それを繰り返しコピーするのは悪いスタイルです。
私は基本的に直接の親へattrsに機能を単一AttrAsgn要素を供給するための方法を探しています。それは可能ですか、間接指示で生活するか、それをインライン展開してすべてを膨らませることに悩まされていますか?何の問題
Spec:
'spec' '(' (attrs+=AttrAsgn (',' attrs+=AttrAsgn)*)? ')';
そして、いやそこにこのコピーを防ぎ、唯一のチャンスはIDerivedStateComputer
を通じてM2Mだろう
をペーストする直接的な方法はありませんが、それはあなたを意味してはならないあなたの場合