MPS 2023.3 ヘルプ

用語集

MPS 用語集

抽象構文木 (AST)

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

BaseLanguage

Java 6 の射影クローン (Java 7 および 8 のオプションの拡張機能付き)。Java 仕様に準拠しており、Java 6 と 1:1 互換性があります。さらに、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 ファイルのスタブだけでなく、通常のモデルも含まれる場合があります。

構造

言語の抽象構文を定義する言語の側面。個々の概念の許容されるプロパティ、子、参照を指定します。これらの概念のインスタンスは「ノード」と呼ばれ、これらのルールに従う必要があります。

コンセプト

言語要素 (その抽象的および具体的な構造、動作、制約など) を記述する定義。その後、ノードの形式でインスタンス化されてプログラムを構成します。たとえば、IfStatement の概念では、if はブール式 Expression と最大 2 つの StatementList を保持すると述べています。

制約

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

振る舞い

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

エディター

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

スコープ

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

型システム

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

アクション

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

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

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

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

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

リファクタリング

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

仮想フォルダー

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