MPS 2020.3 ヘルプ

用語集

MPS 用語集

抽象構文ツリー (AST)

ノードの階層を記述するツリーフォレストの形をしたメモリ(およびディスク)内のコードの論理表現。これらのノードは、親子関係という概念を持ちます。さらに、2 つのノードは、階層構造を横断する明示的な参照によって相互に接続できます。

BaseLanguage

Java 6 のプロジェクティブクローン(Java 7 および 8 のオプションの拡張機能付き)。これは、Java の仕様に従っており、1:1 Java 6. との互換性に加え、MPS は、日付コレクション閉鎖やその他多くの BaseLanguage には、いくつかの便利な拡張機能を提供します。

コード生成

あるモデル(AST)から別のモデルへのコードの変換プロセス。例: 一連のビジネスルールを記述するコードをプレーン Java に変換して、javac でコンパイルし、エンタープライズアプリケーションの一部として実行できるようにすることができます。
MPS でのコード生成には、2 つのフェーズがあります。最初に、一連のモデルからモデルへの変換により、プログラムの AST で使用される概念が徐々に減少し、基本概念の最終セットに到達します。次に、テキスト生成フェーズで AST がテキストファイルに変換されます。

DevKit

ユーザーの便宜上グループ化されている関連言語のパッケージ。

ドメイン固有言語 (DSL)

一般的な目的の言語と比較して単純さと表現力を高めることを目的として作成された、特定の問題領域専用の言語。

言語プラグイン

IntelliJ IDEA または MPS のいずれかの内部で言語を使用するために必要なすべての要素を含むパッケージ化されたライブラリ(zip ファイル)。

プロジェクションエディター

テキストエディターの動作をある程度模倣しながら、ユーザがコードの AST 表現を直接編集できるようにするエディター。ユーザーは画面上のテキストを見てそれを編集しますが、実際にはそのテキストは AST の錯覚(投影)にすぎません。

モジュール

MPS プロジェクトの最上位組織要素。通常は複数のモデルをグループ化します。ソリューション言語生成プログラムDevKit の 4 つの基本タイプがあり、他のモジュールに依存する可能性があります。

モデル

1 つ以上のルートノードにユーザーコードを保持する低レベルの組織要素。モデルは他のモデルに依存している可能性があり、モデルに保持されているコードを実装するために使用される言語も宣言しています。

ノード AST の基本的な構成要素各ノードは、文字列、整数、またはブール値のプロパティを保持し、モデルの階層構造に参加します。
ルートノード 親ノードを持たず、代わりにモデルに直接含まれるノード。

ランタイムソリューション

言語によって必要とされるソリューション。ライブラリとも呼ばれます。ランタイムソリューションには、MPS の外部にある Java ソース、クラス、または jar ファイルのスタブだけでなく、通常のモデルも含まれる場合があります。

構造

言語で使用できるすべてのタイプ(概念)の AST ノードをそれらの関係と共に定義する言語アスペクト。

コンセプト

構文要素の抽象的な構造を説明する定義。たとえば、IfStatement の概念では、if はブールと最大 2 つの StatementList を保持します。

制約

概念、それらの特性および関係に対する追加の制限を保持する言語の側面。

振る舞い

言語設計者が言語概念の動作を定義できるようにします。

エディター

個々の言語概念の視覚化定義を保持しています。画面上での概念の表示方法および編集方法はカスタマイズできるため、エディターはユーザーが言語と対話する方法を指定します。

スコープ

表示され、プログラム内の特定の位置に適用可能な一連の要素。通常、特定の種類のすべての要素のサブセットのみが、特定のプログラムの場所で使用できます。

型システム

プログラム内の概念の種類を検証および推論する一連の規則。

アクション

コードへの変更を実行する可能性があるユーザー起動コマンド。アクションはキーボードショートカットまたはメニュー項目に添付することができます。

インテンションアクション

Alt+Enter キーショートカットによってトリガーされる小さなポップアップウィンドウを通じて言語ユーザーに提供される状況依存アクション。これらのアクションは通常、carret のコードまたは選択したコードブロックに対して比較的ローカルなリファクタリングを実行します。

インテンションアクションで囲む

インテンションは、別の概念でブロックをラップする、選択したコードブロックに適用できます。たとえば、Try-Catch で囲みます。

リファクタリング

ユーザー操作によって引き起こされるコード構造の潜在的に実質的な自動化された変更。

仮想フォルダー ドット表記(a.b.c など)を使用して「名前空間」を表現するルートノードの文字列プロパティ。モデル内のルートノードを論理的にグループ化できます。