MPS 2020.3 ヘルプ

エディターのアクション

MPS エディターには、完了アクション、ノード作成ポリシーにかなり実用的なデフォルトがあります。しかし、カスタマイズしたい場合は、アクション言語を使用しなければなりません。

ノードファクトリ

ノードが別のノードに置き換えられる場合、置き換えられるノードが保持する値を使用して、置き換えノードの作成プロセスをパラメーター化するか、モデル内の置き換えノードの将来の位置を反映することも役立つ場合があります。ノードファクトリはまさにそれを提供します。置換アクションで、または新しい初期化ノード <>新しい初期化ノードを設定する初期化された新しいノードを追加する初期化された新しいノードに置き換えます新しい初期化インスタンス <> メソッドのいずれかを介して新しいノードを作成する必要があるときに呼び出されるハンドラーのセットを作成します。

簡単に言うと、ノードファクトリを使用すると、新しいノードのインスタンス化をカスタマイズできます。ノードファクトリを作成するには、最初に新しいノードファクトリルートノードを作成する必要があります。このルート内で、概念のノードファクトリを作成できます。各ノードファクトリは、次のパラメーターを持つノード作成ブロックで構成されます: newNode(作成されたノード)、sampleNode(現在置換されているノード、null の場合もあります)、囲んでいるノード(モデルで newNode の親になるノード)、とモデル。ノードファクトリハンドラーは、新しいノードがモデルに挿入される前に呼び出されます。

ノードファクトリの概念継承階層を利用して繰り返しを減らすことができます。

Ac6

貼り付けラッパー

これらを使用すると、ノードのその他のコンテキストへの貼り付けをカスタマイズできます。例: BaseLanguageLocalVariableDeclaration をコピーして、クラスのフィールドにする ClassConcept に貼り付けた場合、単純な変換は、ローカル VariableDeclaration から新しい FieldDeclaration を作成することをトリガーする必要があります。

Ac10

コピー & ペーストハンドラー

これらはあなたにコピーされているかクリップボードから貼り付けられているモデルの部分をカスタマイズする可能性を与えます。

Ac11

コピー プリプロセッサーブロック gets のコピーパラメーターには、元のパラメーターノードの正確なディープコピーが含まれています。オリジナルとは異なり、コピーはモデルから切り離されているため、親ノードはありません。

Ac12

貼り付けポストプロセッサーのタスクは、通常、参照を再解決して、新しいコンテキストで有効な宣言を指すようにすることです。

関連ページ:

変換メニュー言語

概要:変換メニュー言語は、エディターのさまざまな場所に表示されるサブメニューとアクションの階層構造を記述する変換メニューを定義するために使用されます。現在、変換メニューが表示される可能性のある場所がいくつかあります。サイド変換メニュー、代替メニュー、コンテキストアシスタント、およびコンテキストアクションツールです。言語設計者とプラグイン作成者は、変換メニュー言語の拡張に記載されているように、追加の場所を定義し、場所ごとに必須またはオプションの機能(アイコンやツールチップなど)を指定できます。メ

SModel 言語修正オペレーション

修正操作 :フィーチャー変更SModel で最も一般的に使用される変更操作は、機能を変更することです。プロパティの値を設定したり、0..1 または 1 カーディナリティーの子ノードまたは参照ノードを割り当てたりするには、(=を使用した)直接代入または集合演算を使用できます。子を 0..n または 1

エディター

言語のための構造が定義されたら、おそらく行って、開発者がそれを使って便利に AST を構築できるようにするための手段を作成するでしょう。AST を直接操作しても、直感的にも生産的にもなりません。AST を隠してユーザーに快適で直感的な対話を提供することは、言語エディターにとってのロールです。エディターの概要:ノードのエディターは、そのビューおよびそのコントローラーとして機能します。エディターにノードが表示され、ユーザーはそれを変更、置換、削除などできます。異なる概念のノードは異なるエディターを...