2

Xtext DSL で C++ 型を参照するための解決策を考え出すのに数日を費やしました。この時点で、Java/JVM タイプを参照するための Xtext/Eclipse メカニズムに精通しています。

おそらく、JVM インポート メカニズムと同様のことを行うには、既存の (おそらく非常に大きな) CDT インデックスを Ecore として保存し、その Ecore を Xtext Grammar にインポートする必要があります。

私が検討しているもう 1 つの代替案は、既存の CDT インデックスへのプログラムによるフックです。このオプションは、実装するカスタム コードが増える可能性が高いという点で、より難しいようです。

Xtext grammar/DSL で C++ 型の参照を発見し、実装に成功した人はいますか? 例はありますか?より良い解決策の提案はありますか? さらに言えば、提案された解決策のいずれかが合理的/実行可能に見えますか?

ありがとうございました。

4

1 に答える 1

0

Xtext DSL で C++ または Xtext 以外の要素を実際に参照できるようにするには、参照可能な要素を Xtext のインデックスに入れる必要があります。

正しい方法は、CDT インデックスを含む IAllContainerState を用意し、C++ ファイルごとに IResourceDescription を作成することです。CDT インデックスには、含まれているリソース、タイプ、および名前に関する情報が含まれている必要があります。これは、スコーピングの章で説明されている概念にマップできます:

GenericResourceServiceProvider は、C++ リソースの IResourceServiceProvider に使用できます。

org.eclipse.xtext.resource.generic パッケージと、それを使用して .ecore モデルのインデックスを作成する方法をご覧ください。

于 2016-11-16T23:18:04.820 に答える