2

相互参照を含む文法を作成する必要があります。これは無効である可能性があります。つまり、存在しないターゲットを指しています。このような参照を含むファイルでは、エラーは発生せず、警告のみが発生します。ジェネレータはこれを特別な場合として扱います。

XTextでこれを行うにはどうすればよいですか?

4

2 に答える 2

5

EMF に存在しないターゲットへの有効な相互参照を作成することはできません。

EReferences の代わりに EAttributes を使用することをお勧めします。

  • {YourDSL} 文法でfeature=IDごとにfeature=[EClass|ID]を変更します。
  • {YourDSL}ScopeProviderクラスの *scope_EClass_feature(context, reference)* メソッドで行われるようなスコープ計算ユーティリティを提供します。このスコープ メソッドは、指定された参照の eType を使用するだけなので、再実装は簡単です。
  • {YourDSL}ProposalProviderでこのスコープ計算ユーティリティを使用して、導入された EAttribute の値を提案します。
  • 必要に応じて、検証ルールでこのユーティリティを使用して、「有効」でない場合にこの EAttribute に警告/情報を追加できます。
  • 最後に、ジェネレーターでユーティリティを使用して、有効なターゲット eObject に基づいて出力を作成します。
于 2012-12-01T18:56:25.973 に答える