MPS 2020.1 ヘルプ

Using_typesystem

言語の型システムを定義した場合、タイプチェッカーは自動的にそれをエディターで使用して、開いているノードをエラーと警告でハイライトします。また、エディターアクションやジェネレータークエリなど、クエリの型に関する情報を使用することもできます。ノードの型を使用することも、特定の型が別の型のサブタイプかどうかを知りたいこともあります。または、与えられた形式を持つ型のスーパータイプを見つけたいと思うかもしれません。

タイプ操作

type 操作を使用して、クエリ内のノードの種類を取得できます。<expr> .type を書くだけです。ここで、<expr> はノードに対して評価される式です。

推論規則および推論方法の中で型演算を 使用しないでください。推論規則は型の計算に使用され、型操作はすでに計算された型を返します。

サブタイプ式

ある型が別の型のサブタイプであるかどうかを調べるには、isSubtype 式を使用してくださいisSubtype( type1 :< type2 ) または isStrongSubtype( type1 :<< type2 ) と書くと、タイプ 1タイプ 2 のサブタイプである場合、またはタイプ 1タイプ 2 の強いサブタイプである場合は、それぞれ true が返されます

強制表現

強制発現の結果は、特定のタイプは、このタイプの指定されたフォーム(満足ある条件)を有するスーパータイプを有するかどうか、すなわち、所定の形式強制することができるかどうかを言うブール値です。条件は、概念宣言へ参照として記述することもできます。つまり、求めるスーパータイプはこの概念のインスタンスにする必要があります。またはパターンとして、目的のスーパータイプが一致する必要があります。
強制式coerce( type :< condition ) または coerceStrong( type :<< condition ) と書かれています。ここで、condition は上記で説明したものです。

強制ステートメント

強制ステートメントステートメントリストで構成され、特定のタイプを 特定の形式に強制できる場合に実行されます。それは次のように書かれています:

coerce ( type :< condition ) { ... } else { ... }

型が条件を満たすように強制できる場合は最初の(if)ブロックが実行され、それ以外の場合は else ブロックが実行されます。型が強制変換されるスーパー型は、強制文の最初のブロック内で使用できます。条件がパターンであり、型が強制変換されるスーパー型の一部と一致するパターン変数が含まれている場合は、そのようなパターン変数を強制ステートメントの最初のブロック内で使用することもできます。

マッチステートメント

match ステートメントはノードをパターンと比較します。そのパターンの変数には、一致したノードまたはその子から対応する値が割り当てられます。

Pattern3