MPS 2019.2ヘルプ

SModel言語

SModel言語の目的はMPSモデルを問い合わせて修正することです。次のことができます。はあなたのモデルのノード、属性、プロパティー、リンクそして他の多くの本質的な性質を調査します。言語はあなたの言語のいくつかの異なる側面をコード化するために必要とされます - 最も顕著なものを挙げるために、行動、リファクタリング、ジェネレータ。通常jetbrains.mps.lang.smodel言語をBaseLanguageと組み合わせて使用します。

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を返すことがあります。

最終更新日: 2019年8月30日