MPS 2020.3 ヘルプ

モデルとモジュールの依存関係を使う FAQ



model m = node.model;

SModel sModel = m;

model m2 = sModel;

SModelInternal internalSModel = (SModelInternal) sModel;

SModule sModule = sModel.getModule();



SRepository sRepository = sModel.getRepository();

Iterable<SModule> modules = sRepository.getModules();
SModule module = sRepository.getModule(sModule.getModuleId());
SModule closuresRuntimeModule = sRepository.getModule( module reference /closures.runtime/.getModuleId());


if (module instanceof Language) {
Language language = (Language) module;
}




Language mpsBaseLanguage = (Language) module /jetbrains.mps.baseLanguage/;


sequence <SDependency> dependencies = m module.getDeclaredDependencies()


AbstractModule internalModule = (AbstractModule) sModule;
internalModule.getModuleDescriptor().getUsedLanguages().add( module reference /jetbrains.mps.baseLanguage/);


sequence <Dependency> internalDependencies = internalModule.getModuleDescriptor().getDependencies();
sequence <SModuleReference> usedModuleReferences = internalDependencies.select({~it => it.getModuleRef(); });
internalModule.getModuleDescriptor().getDependencies().add( new Dependency( module reference /closures.runtime/, SDependencyScope. デフォルト , false ));


internalModule.getModuleDescriptor().getUsedDevkits().add( module reference /jetbrains.mps.devkit.general-purpose/);



Iterable<SModel> models = sModule.getModels();
sModule.getModel(sModel.getModelId());


internalSModel.importedModels();
internalSModel.addModelImport(sModel.getReference(), false );
internalSModel.deleteModelImport(sModel.getReference());


internalSModel.importedLanguages();
internalSModel.addLanguage(mpsBaseLanguage.getModuleReference());
internalSModel.addLanguage( module reference /jetbrains.mps.baseLanguage/);


internalSModel.importedDevkits();
internalSModel.addDevKit( module reference /jetbrains.mps.devkit.general-purpose/);
internalSModel.deleteDevKit( module reference /jetbrains.mps.devkit.general-purpose/);

関連ページ:

オープン API - コードからモデルにアクセスする

言語レポジトリ、プロジェクトモジュール、言語、モデルは、Open API を介してプログラム的に便利にアクセスできます。Open API を使用すると、モデルへのアクセスを制御したり、永続化などのいくつかの側面について独自の実装を提供したりすることもできます。これら 2 つの使用箇所の種類について個別に説明します。注意: このドキュメントは Open API の哲学の一般的な概要を説明し、API への便利なリンクを提供することを目的としています。使い方の技術的な詳細については相談してください .A...

パターン

パターン言語:パターン言語には、モデル構造のパターンを定義するという単一の目的があります。これらのパターンは、マッチングしたいノードの視覚的表現を形成します。ノードのプロパティ値がパターンで指定された値と等しい場合、パターンはノードと一致し、ノードの参照はパターンのものと同じターゲットを指し、対応する子はパターンの適切な子と一致します。また、パターンにはノード、参照、プロパティの変数を含めることができます。これらの変数は、任意のノード / 参照 / プロパティに一致します。それに加えて、変数は...