MPS 2019.2ヘルプ

説明コメント

ノードに属性を追加する機能を活用する方法を学びます。この機能は、構造の章の属性のセクションで詳しく説明されています。このクックブックでは、電卓チュートリアル言語に簡単な追加機能を作成して、電卓定義の入力フィールドと出力フィールドに説明的なコメントを付けることができます。これらの説明コメントは、入力フィールドと出力フィールドに対応するSwingテキストフィールドに添付された「ポップアップツールチップ」の形式で、生成されたJavaコードに伝達されます。

計算機の言語

実験用のテストベッドとして計算機のチュートリアル言語を選択しました。MPSディストリビューションに付属のサンプルプロジェクトのセットにcalculator-tutorialプロジェクトが含まれています。続行する前に、チュートリアルをよく読んで言語に慣れることをお勧めします。

フィールドへの変更

入力フィールドと出力フィールドに説明的なコメントを追加するための機構の構築を始めましょう。私たちのアプローチは、生成されたコードだけでなくノードに追加されたときにそれらの外観に影響を与える注釈に基づいています。私たちの望む機能を可能にするいくつかの重要な要素があります。

  • どのノードが説明コメントを保持できるかを示すマーカーインターフェース

  • ノードが説明コメントを保持しているかどうか、および説明が何であるかを示すための注釈自体

  • キャレット配下のノードに説明コメントをすばやく追加および削除するためのキーボードショートカットを提供するアクション

  • 記述されたコンポーネントの視覚的な「ツールチップ」を生成するためにコード生成プロセスを更新する

すべてのコメント可能なノードをマークするための新しいインターフェースから始めます。

Marking the nodes(英語)

InputFieldおよびOutputField概念は両方新しいICanHaveDescriptionインターフェースを実行しなければなりません。

Implementing the ICanHaveDescription interface(英語)

DescriptionAnnotationのコンセプト

パズルの核心部分、つまり説明のコメントを指定するための入力フィールドと出力フィールドに起因する実際の注釈はまだ欠落しています: 今それを作成しましょう:

Creating the description(英語)


概念をNodeAttributeに拡張すると、MPSは帰属の詳細を説明する詳細な情報を提供するようにあなたにお勧めします。Alt + Enterからクイックフィックスを起動すると、カスタマイズに必要な情報が追加されます。

Invoking a quick-fix(英語)


属性の概念と同様にロールの値を設定することによって、新しい注釈の追加の品質を指定する必要があります。注釈のロールdescriptionCommentとして設定します。これは、ノードに説明注釈の注釈が付けられているかどうかを調べるために照会で使用する名前です。また、注釈はICanHaveDescriptionを実装しているノードにのみ起因することを示します。これは、InputFieldOutputFieldです。

Specifying additional qualities(英語)

説明注釈は説明の実際のテキストも格納する必要があります。- これには文字列プロパティーdescriptionTextを使用します

Adding the description text(英語)

説明注釈のエディターは、説明コメントを付けてノードの視覚的な振る舞いを定義する際の重要な要素です。注釈付きノードの前に「説明」定数を付け、実際の説明テキストを括弧で囲んで追加します。属性付きノードセルは、実際のノード(属性が関連付けられているノード)のエディターを表します。

Attaching to a node(英語)

さらなるエディターの機能強化

ノードの説明コメントのオンとオフを切り替えるために、新しいキーマップを作成します。

Creating a new key map(英語)

コードを編集するために、BaseLanguagesmodelの概念を使います。これらはデフォルトで利用可能です。そうでなかったら、Control/Cmd + L.を通してインポートしましょう私達はまた容易に初期化されたノードを作成するために行動言語を必要とするだろう。これは明示的にインポートする必要があるでしょう(Control + L)。

Adding an import statement(英語)

これでアクションを完了できます。


Completing the action(英語)

ICanHaveDescriptionを実装しているノードでControl + Alt + Shift + Dが押されたときはいつでも、アクションは説明注釈をノードに追加するか、またはノードから削除します。

キーマップは、Control + Alt + Shift + Dに反応するはずのすべてのフィールドに追加される必要があります。これはInputFieldOutputFieldの場合です。Control + Alt + Shift + Dキーの組み合わせに反応すべきエディターセルは、キーキャッププロパティーで指定されたキーマップを持っている必要があります。

Adding the key map to all fields(英語)

これまでどのようにしていますか?

コンパイル後、入力フィールドと出力フィールドの両方にControl + Alt + Shift + Dを使用して、説明コメントを切り替えることができます。

Toggling the description comment(英語)


ジェネレータを更新する

説明注釈は現在生成プロセス中に失われています。代わりに、コメント付きの入力フィールドと出力フィールドを表すテキストフィールドに対してSwingの「ツールチップ」を生成します。

Updating the generator

コードを生成するときは、現在電卓のすべての入力フィールドまたは出力フィールドを受け取り、それらのフィールドのJTextFieldを生成します。コンストラクターでは、生成されたJTextFieldごとに初期化コードも生成します。これが、説明コメント付きの入力フィールドまたは出力フィールドを表すJTextFieldにSwing "tooltip" をアタッチできる場所です。

Creating JTextFields(英語)

$IF$ノードマクロは、"tooltip" が説明コメント注釈が添付されたノードに対してのみ生成されることを保証します。

Adding a macro(英語)

「ツールチップ」のテキストのプロパティーマクロは、現在のノードにアタッチされている説明注釈descriptionTextを設定します。

Property macro(英語)

言語とサンドボックスソリューションを再構築した後、生成された電卓フォームには、説明注釈でマークされているフィールドに「ツールチップ」が添付されます。

Resulting tooltip

要約

ここでツアーを終えることができます。入力フィールドと出力フィールドの両方を説明注釈で記述することができます。生成されたコードには、そのような記述ごとに「ツールチップ」が含まれています。

最終更新日: 2019年8月30日

関連ページ:

構造

MPSはあなたの意図した言語のための文法を定義することからあなたを解放するため、明らかにあなたの言語の構造を指定するための異なる方法を必要とします。これは構造言語が便利になるところです。それはあなたに言語構造を定義するためのすべての手段を与えます。前に説明したように、MPSでコーディングするときは、...

汎用プレースホルダーと汎用コメント

汎用プレースホルダー:汎用プレースホルダーは、2つのノード間の空白を表し、任意のノードコレクションに追加できます。Control/Cmd + S+ Enterキーの組み合わせは、コレクション内の現在の位置にプレースホルダーを挿入します。プレースホルダは透過的に動作します - プレースホルダノードで補...

MPS電卓言語チュートリアル

このチュートリアル導入、テンプレートの実装、導入このチュートリアルでは、MPSでの言語デザインのさまざまな分野について説明します。単純なスタンドアロン言語の抽象的な構造を定義し、そのためのエディターを設計し、タイプを制限し、スコープを作成し、最後にJavaコードを生成するジェネレータを準備します。以...

要求追跡言語

このクックブックでは、要件追跡サンプルプロジェクトについて説明します。このサンプルプロジェクトは、言語にとらわれない要求追跡を実装しています。その過程で、いくつかの便利な言語構成要素が例示されています。異なる言語のノードに注釈を付けるノード属性、コンセプトごとの複数のエディター(プレゼンテーション)...

スコープ

カスタム言語要素のスコープを定義する2つの方法、継承 (階層)と参照アプローチを見ていきます。実験用のテストベッドとして計算機のチュートリアル言語を選択しました。MPSディストリビューションに付属のサンプルプロジェクトのセットにcalculator-tutorialプロジェクトが含まれています。2