MPS 2020.1ヘルプ

SModelクエリ言語

smodel.query言語

jetbrains.mps.lang.smodel.query言語は、 MPSコンソール が使用しているのと同じタイプの照会を可能にします。

console query

この言語は、 -statement内で使用できます。-statementは、クエリが実行される範囲を制限します。

smodelquery1

範囲は、プロジェクト、モジュール、モデル、またはこれらのシーケンスに制限できます。

操作パラメータ

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

smodelquery2

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

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

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

スコープ指定

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

scopeパラメータは、一連のモデルまたはモジュールから構成することも、SearchScope型の任意の式にすることもできます。

smodelquery3

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

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

smodelquery4

コンソールプラグインでsmodelクエリを使う

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

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

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

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

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

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

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

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

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