MPS 2020.1ヘルプ

SModel言語

SModel言語の目的は、MPSモデルを照会および変更することです。これにより、モデルのノード、属性、プロパティ、リンク、および他の多くの本質的な品質を調査できます。言語は、言語のいくつかの異なる側面(アクション、リファクタリング、ジェネレーター)をエンコードして、最も目立つものに名前を付ける必要があります。通常、BaseLanguageと組み合わせてjetbrains.mps.lang.smodel言語を使用します。

null値の扱い

SModel言語はnull値を非常に安全な方法で扱います。JavaやC#などのオブジェクト指向言語では、コード全体に散在するexpr == nullおよびexpr!= nullステートメントの形式でnull値を確認することが多くあります。これらはNULLポインタ例外を防ぐために必要です。ただし、同時にコードが乱雑になり、コードが読みにくくなります。この問題を軽減するために、MPSは自由値でnull値を扱います。例:プロパティにnullノードを要求すると、そのプロパティの型のデフォルト値に戻ります。nullノードにその子リストを要求すると、空のリストなどが表示されます。nullノードで振る舞いメソッドを呼び出すと、呼び出されたメソッドの戻り型がClassifierTypeまたはStringTypeの場合、null値が返されます。PrimitiveTypeの場合、そのタイプのデフォルト値が返されます。これはあなたの言語デザイナーとしての生活を楽にするはずです。

操作パラメータ

SModel言語の多くの操作はパラメータを受け入れます。操作の最後に<を入力してパラメータリストを開くと、パラメータを指定できます。例: myNode.ancestors <concept = IfStatement、concept = ForStatement>

これらの操作のパラメータとしての「+」記号は、「自分を含める」を意味します。操作が呼び出されているノードは、「+」、条件に合致するノードはまた、返される結果に含まれることを保証するときすなわち、-それはIfStatementであればたとえばmyNode.ancestors <concept = IfStatement、+>、MYNODEを返すことがあります。

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