MPS 2025.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 つの親しか持つことができません。ノードを子として親ノードに追加するとすぐに、ノードは以前の親ノードから自動的に切り離されます。サブツリーを含むノードのコピーを作成すると便利な場合があります。既存のノードのコピーを作成するには、コピー操作を使用できます。例: node <> yourNode = myNode.copy

置換

AST 内のノードを別のノードのインスタンスに置き換えるには、「replacewith」操作を使用できます。置換と作成を同時に行う場合は、概念をパラメーターとして使用するショートカット操作「replace with new(Concept)」があります。

削除および切り離し操作

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

プロパティの操作

プロパティには、割り当て操作を使用して直接値を割り当てることができます。プロパティに対する remove() 操作は、その値をモデルから削除します。