MPS 2024.3 ヘルプ

SModel クエリ言語

smodel.query 言語

jetbrains.mps.lang.smodel.query 言語は、MPS コンソール 使用するのと同じタイプのクエリを有効にします。

console-query.png

この言語は、クエリが実行されるスコープを制約する -statement で内部で 使用できます。スコープは、プロジェクト、モジュール、モデル、これらのシーケンスに制限できます。さらに、スコープにすべてのモデルを含めるか、読み取り専用モデルのみを含めるかを指定します。

smodelquery1.png

操作パラメーター

smodel.query 操作の動作は、操作名を使用して指定できる操作パラメーターを使用してわずかに変更できます。

smodelquery2.png

可能なパラメーターは次のとおりです。

スコープ - 各コマンドは -statement と 、周囲に指定された範囲で動作します。scope パラメーターは、単一のコマンドの操作スコープを変更します。

正確 -#instances 操作で使用して、子孫の概念のインスタンスを除く、指定された概念のインスタンスを見つけることができます

スコープ指定

クエリが実行されるスコープは、スコープパラメーターを使用して単一のクエリに対して明示的に指定できます。このオプションは、with ステートメントから派生したスコープをオーバーライドします。

スコープパラメーターは、モデルまたはモジュールのシーケンスで構成することも、SearchScope 型の任意の式にすることもできます。

smodelquery3.png

クエリの scope パラメーターが指定されていない場合、クエリは with ステートメントで囲まれたスコープで実行されます。混乱を避けるため、ネストされた with ステートメントはサポートされていません。とステートメントは、モデル、モジュール、それらのシーケンス、プロジェクト、既存の SearchScope オブジェクトからスコープを構築できます。

with ステートメントによって構築されたスコープには、必要に応じて、編集可能なモデルのみを含めることができるため、モデルを変更するすべての操作をそのスコープ内で安全に実行できます。

コンソールプラグインでの smodel クエリの使用

with ステートメントをラップせずに、クエリをコンソールで使用できます。明示的に指定されていないコンソール内のクエリのデフォルトスコープには、現在のプロジェクト内のすべての編集可能なモデルが含まれます。また、スコープを明示的に指定する場合、いくつかの追加オプションを使用できます。

smodel.query 言語で定義されたクエリ

#instances - 指定された概念のインスタンスの高速検索

#usages - 指定されたノードの使用箇所の高速検索

# モジュール - スコープ内のすべてのモジュール

# モデル - 範囲内のすべてのモデル

#node - スコープ内のすべてのノード

#references - スコープ内のすべての参照