MPS 2020.1 ヘルプ

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

修正操作

フィーチャー変更

SModel で最も一般的に使用される変更操作は、機能を変更することです。プロパティの値を設定したり、0..1 または 1 カーディナリティーの子ノードまたは参照ノードを割り当てたりするには、(= を使用した)直接代入または集合演算を使用できます。子を 0..n または 1..n の子コレクションに追加するには、コレクション言語から .add 操作を使用するか、または別のノードをパラメーターとして渡してノード <>次の兄弟を追加 / 前の兄弟を追加操作を呼び出すことができます。

以下に例を示します。

  • classDef.name = "NewClassName" ;

  • classDef.name.set( "NewClassName" );

  • myNode.condition = trueConstant;

  • node <InstanceMethodDeclaration> method = classDef.member.add new Initialized(InstanceMethodDeclaration);

ターゲットを参照リンクに設定するときは、ターゲットノードにアクセスする必要はありません。ターゲットへのポインタがあれば十分です。これは、参照リンクアクセス式に適用可能な set ptr 操作で可能です。

node.instanceMethodDeclaration.set ptr(Object->equals)

同様に、ノードが特定のノードであることを確認するために、利用可能な「is」操作があります。

node.parent.is(Object->equals);

新規ノード作成

新しいノードを作成する方法はいくつかあります。

  • 新規オペレーション : 新しいノード <Concept>()

  • モデルに対する新規インスタンス操作 : model.newInstance()

  • 概念に対する新しいインスタンス操作 : concept.newInstance()

  • 特徴式に適用された新規追加(コンセプト)および新しく設定する(コンセプト)操作

  • 新しいものと交換する(コンセプト)オペレーション

  • モデルに適用された新しいルートノード(概念)操作。この場合、概念は根付きやすいはずです

  • 既存のノードに新しい兄弟を追加する次の兄弟 <コンセプト> / 新しい前の兄弟 <概念> 操作

コピー

モデルのツリー形状を維持するために、1 つのノードは最大 1 つの親しか持つことができません。親ノードに子としてノードを追加するとすぐに、そのノードは以前の親ノードから自動的に切り離されます。そのため、サブツリーを含めてノードのコピーを作成すると便利です。既存のノードのコピーを作成するには、コピー操作を使用できます。例:node <> yourNode = myNode.copy

置換

AST 内のノードを別のノードのインスタンスと置き換えるには、' と置換する ' 操作を使用できます。同時に置き換えと作成をしたい場合は、ショートカット操作 ' 新しい(概念)に置き換えます ' があります。これは概念をパラメーターとして取ります。

削除および切り離し操作

モデルからノードを削除したい場合は、デタッチ操作を使用できます。それでも、後でデタッチノードをモデルに追加できます。

最終更新日 : 2020 年 6 月 18 日