MPS 2020.1ヘルプ

SModel言語

The purpose of SModel language is to query and modify MPS models. It allows you to investigate nodes, attributes, properties, links and many other essential qualities of your models. The language is needed to encode several different aspects of your languages - actions, refactorings, generator, to name the most prominent ones. You typically use the jetbrains.mps.lang.smodel language in combination with 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を返すことがあります。

最終更新日: 2020年5月29日