MPS 2024.1 ヘルプ

カスタムアスペクト

構造エディター型システムなどの通常の言語アスペクトと並んで、言語生産者はカスタム言語アスペクト(たとえば、インタープリター、代替型システムなど)を作成し、言語ランタイムに生成してから実行することができます。コードからこれらの生成されたアスペクトを使用してください。

カスタムアスペクトとは何ですか?

Screen-Shot-2015-09-30-at-20-37-45.png

MPS の言語定義は、構造エディター型システムジェネレーター (1) などの側面のコレクションと考えることができます。

言語の各アスペクトは、個別のアスペクトモデルで定義されます。例: 言語 L のエディターの側面は、L.editor モデルで定義されています。

アスペクトは言語のアスペクトランタイム (2) に生成できます。これは、実行時、つまり言語が MPS 内で使用されているときにこのアスペクトを表します。生成されたクラスは、対応するサブシステムによって (3) LanguageRuntime.getAspect() を介して取得され、さらに (4) で使用できます。

カスタムアスペクト記述子

言語アスペクトの IDE 部分は、SimpleLanguageAspectDescriptor によって記述されます。SimpleLanguageAspectDescriptor は、言語のプラグインモデルで作成できます。

アスペクト名

アスペクトの名前他の言語でこの名前を持つモデルを作成することは可能でしょう、そのモデルは与えられた他の言語のためのこの局面のモデルとして考えられるでしょう。

主な言語

アスペクトの「主要」言語はこのアスペクトを記述するモデルに自動的にインポートされ、これらの言語の概念は「新規ノード」メニューの上に表示されます。

追加言語

現在は実装されていません。これらは、この種のアスペクトモデルでユーザーが使用することを望んでいる可能性がある言語です(ただしそうは思わないかもしれません)。それらはアスペクトに関するいくつかの「ヒント」で示されます。これは発見の目的のためだけのものです。editor.tables 言語は、「エディター」の側面にとってはそのような「追加の言語」かもしれません。

ヘルプ URL

この URL はこの概念のコンテキストヘルプを表示するために使用されます。

アイコン

この種のアスペクトモデルの近くの論理ビューに表示するアイコン。

クックブック

SimpleLanguageAspectDescriptor の概念は、この側面の IDE 統合のみを対象としています。ジェネレーター部分を実装してアスペクトのランタイムを生成する方法と、対応するサブシステムから生成されたコードを使用する方法については、カスタム言語アスペクトクックブックを参照してください。

関連ページ:

カスタム言語アスペクトクックブック

構造、エディター、型システムなどの通常の言語アスペクトと並んで、言語生産者はカスタム言語アスペクト(たとえば、インタープリター、代替型システムなど)を作成し、言語ランタイムに生成してから実行することができます。コードからこれらの生成されたアスペクトを使用してください。カスタムアスペクトとは何ですか? MPS の言語定義は、構造、エディター、型システム、ジェネレーターといったアスペクトの集まりと考えることができます。各アスペクトは、対応するアスペクトサブシステムによって使用される宣言で構成されていま...

軽量 DSL

MPS コア言語を何年にもわたって進化させてきたため、IDE 統合のための言語記述 DSL の繰り返しパターンを認識するようになりました。概念的には、それらは、いくつかの高レベルのインターフェースを実装するプレーンクラスによって表現される高レベルの構造のように見え、動作しました。言語指向プログラミングの良い伝統では、これらのパターンを言語に反映し、プレーンな BaseLanguage クラスの上に薄い抽象化として再実装することにしました。このような抽象化を可能にするために、新しい軽量 DSL 言語が作...

リファクタリング

リファクタリングのサポートは、すべての成熟した言語の IDE 機能の非常に重要な部分です。MPS は、リファクタリングアクションの開発を簡素化するためのいくつかの機能を提供します。簡単なリファクタリングは、jetbrains.mps.lang.refactoring 言語を使用して記述できます。この言語を使用してリファクタリングを作成した後、次の手順を使用して、ユーザーがリファクタリングを利用できるようにし、呼び出し可能にする必要があります。リファクタリング用の UI アクションを作成します。これ...