4

一部のxml形式で記述されたドメインモデルがあります。ドメイン モデルを考慮して、テスター/ドメインの専門家がテキストでデータを表現するのに役立つツール (および後でドメイン固有のテスト フレームワーク) を生成したいと考えています。IDE サポートは必須です (IDEA または Eclipse)。

たとえば、私はこの疑似モデルを持っています

User
fn string 120 chars mandatory
ln string 120 chars mandatory
address not-mandatory

Address
street mandatory
city mandatory

典型的な使用シナリオ:

user opens the IDE
creates a new file
when content assist invoked, should give options 'user', 'address' etc

If I choose user, furthur ctrl-space should give 'fn', 'ln', 'address' as options. 

これは xtext や jetbrains mps などで実行できることはわかっていますが、次の要件にどのテクノロジーが役立つかを知りたいです。

  1. モデルは実行時にシステムに供給されます (新規、更新、削除など)。そのため、静的な文法セットを持つことはできません。モデル/プロパティアシストが実行時に解決されるように、または少なくとも文法が生成されるように構造化するにはどうすればよいですか (その一部である可能性があります)
  2. 「文法」の 1 つのセットで作業しているときに、ターゲット サーバーを別のバージョン (モデルのセットが異なる可能性があります) にポイントすると、エディターで既存のファイルを検証し、エラーにフラグを立てる必要があります。
  3. xml、テキスト、またはサーバー ルックアップを介してデータ ファイルを取得します。
  4. モデルを他の形式に変換したり、Java/Groovy で解釈したりすることは、私にとって非常に重要です。

たとえば、次のデータファイルがあるかもしれません

user {
fn : Tom
ln : Jill 
hobby : movies
}

しかし、「趣味」プロパティを認識しないサーバーに対してこのファイルを検証する場合、エディタでそのプロパティにエラーをマークする必要があります。

この DSL/ツールキットにさらに多くの機能を追加する計画があります。どの技術がより適しているかヒントはありますか?

ありがとう

4

1 に答える 1

0

これは xtext や jetbrains mps などで実行できることはわかっていますが、次の要件にどのテクノロジーが役立つかを知りたいです。

XML ドメイン モデルの XML スキーマを持っている (または作成できる) という条件の下では、Xtext は要件に適していると思います。

  1. モデルは実行時にシステムに供給されます (新規、更新、削除など)。そのため、静的な文法セットを持つことはできません。モデル/プロパティアシストが実行時に解決されるように、または少なくとも文法が生成されるように構造化するにはどうすればよいですか (その一部である可能性があります)

私の理解が正しければ、XML データ モデルごとに特定の文法規則は実際には必要なく、データ モデルへの相互参照のみが必要です。

EMF は、XSD ファイルからの EMF Java クラスの生成をサポートしており、Xtext は、カスタム インデクサー (Xtext インターフェイス IDefaultResourceDescriptionStrategy) を使用して Xtext インデックスに XML ファイルを追加すると、XSD スキーマに準拠する XML ファイルを参照できます。したがって、DSL の文法などを使用して通常の Xtext プロジェクトを作成し、XML ドメイン モデルを参照する相互参照を使用できます。

  1. 1 つの「文法」セットで作業しているときに、ターゲット サーバーを別のバージョン (モデルのセットが異なる可能性があります) にポイントすると、エディターで既存のファイルを検証し、エラーにフラグを立てる必要があります。
  2. xml、テキスト、またはサーバー ルックアップを介してデータ ファイルを取得します。

EMF は URI を使用してリソースを識別するため、前述のように Ecore モデルを生成すると、http:// や file:// (または拡張可能なもの) の URI などを使用して XML ドメイン モデルをインポートできるはずです。内部的に URI に解決されます。

  1. モデルを他の形式に変換したり、Java/Groovy で解釈したりすることは、私にとって非常に重要です。

ここでは、要件に応じて、インタプリタ、Xbase 推論、またはジェネレータ (いずれも Xtend を使用して適切に実装できます) を作成することを選択できます。

(免責事項: 私は Xtext の主要な貢献者の 1 つである itemis の従業員です)

于 2016-09-27T14:23:28.667 に答える