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 操作で可能です。
同様に、ノードが特定のノードであることを確認するために、利用可能な「is」操作があります。
新規ノード作成
新しいノードを作成する方法はいくつかあります。
新規オペレーション: 新しいノード <Concept>()
モデルに対する新規インスタンス操作: model.newInstance()
概念に対する新しいインスタンス操作: concept.newInstance()
特徴式に適用された新規追加(コンセプト)および新しく設定する(コンセプト)操作
新しいものと交換する(コンセプト)オペレーション
モデルに適用された新しいルートノード(概念)操作。この場合、概念は根付きやすいはずです
既存のノードに新しい兄弟を追加する次の兄弟 <コンセプト>/ 新しい前の兄弟 <概念> 操作
コピー
モデルのツリー形状を維持するために、ノードは最大で 1 つの親しか持つことができません。ノードを子として親ノードに追加するとすぐに、ノードは以前の親ノードから自動的に切り離されます。サブツリーを含むノードのコピーを作成すると便利な場合があります。既存のノードのコピーを作成するには、コピー操作を使用できます。例: node <> yourNode = myNode.copy
置換
AST 内のノードを別のノードのインスタンスに置き換えるには、「replacewith」操作を使用できます。置換と作成を同時に行う場合は、概念をパラメーターとして使用するショートカット操作「replace with new(Concept)」があります。
削除および切り離し操作
モデルからノードを削除したい場合は、デタッチ操作を使用できます。それでも、後でデタッチノードをモデルに追加できます。
プロパティの操作
プロパティには、割り当て操作を使用して直接値を割り当てることができます。プロパティに対する remove() 操作は、その値をモデルから削除します。