MPS 2019.1ヘルプ

MPSユーザーズガイド

言語デザイナーのためのMPSユーザーガイド

MPSへようこそこのユーザーガイドはMPSの完全なリファレンスマニュアルであり、MPSが提供する多くの概念と使用パターンを案内し、システムの特定の側面に関する詳細を知る必要があるときはいつでも手に入れることができます。

トピック

  1. 基礎知識 - 基本概念の概要
  2. MPSの使用 - MPSと通信するためのインターフェースをよく理解してください
  3. 言語定義 - 言語を定義するには、いくつかの側面を指定する必要があります。各側面は、言語の一部、つまり許可されたAST構造、画面上の外観、型システム規則などを体系化したものです。

    アスペクト

    説明

    コアドキュメント

    構造

    ユーザーモデルで使用できるノードの種類(概念と呼ばれる)を定義します。プログラム(モデル)内の各ノードはその概念を表します。概念は、どのプロパティー、および参照ノードが持つことができるかを指定します。概念は他の概念を拡張してConceptInterfacesを実装することができます。

    構造
    SModel言語 - モデルへのプログラムによるアクセス
    オープンAPI - モデルにアクセスするためのAPIリファレンス
    引用符 - ASTスニペットの作成
    パターン - パターンマッチングノード用の言語
    コードからモデルとモジュールの依存関係を使う ビデオ - JetBrains MPSの概要、最初の実行: プロジェクト(英語) ビデオ - JetBrains MPSの概要: 構造(英語)

    制約

    構造で定義されている規則を超えて、ノード間の関係とプロパティーの許容値を制限します。

    制約は通常次のように定義します。
    - 参照のターゲットスコープ(参照が指すことができる許可されたノードの集合)
    - あるノードが別のノードの子/親/祖先になることができる状況
    - プロパティーの許容値
    - プロパティーアクセサーメソッド (Getter および Setter)

    制約 スコープ ビデオ - JetBrains MPSの紹介、パート3: 制約(英語)
    振る舞い

    OOPのクラスがメソッドを保持するのと同じように、概念はノード上で多相的に呼び出すことができるメソッドと静的メソッドを定義することができます。ノードは、このように彼らの特性や関係と一緒に行動を運ぶ。

    振る舞い ビデオ - JetBrains MPSの紹介、パート4: 振る舞い(英語)
    エディター

    編集可能な形式(つまりテキスト)からコンピューターが操作できるツリーのような構造にコードを変換するパーサを定義する代わりに、MPSは、ユーザが直接ASTを編集できるようにする投影エディターの概念を提供します。エディターアスペクトにより、言語設計者は自分のコンセプトコンセプトを編集するためのUIを作成できます。

    エディター
    ダイアグラム作成エディター
    変換メニュー言語
    コンテキストアシスタント
    コンテキストアクションツール エディタークックブック エディター言語生成API ビデオ - JetBrains MPSの紹介、パート5: エディター(英語)
    アクション

    アクションアスペクトは、コピー/貼り付けやノードの初期化など、高度なエディターの動作を指定する手段を提供します。

    エディター・アクション
    インテンション

    最近のすべてのIDEは、便利なキーショートカット(MPSではAlt + Enter)で利用可能なインスタントコードによる操作操作で開発者を支援します。言語の作者はインテンションの側面で彼らの言語のためにそのような小さなコード変換を定義することができます。

    インテンション ビデオ - JetBrains MPSの紹介、パート7: インテンション(英語)
    生成プログラム

    1つ以上の言語で記述されたモデルは、最終的には、Javaなどの一部のターゲット汎用言語およびプラットフォームの実行可能コードに変換されます。その過程で、モデルは徐々に変換され、最終的なレベルに達するまで概念が繰り返し抽象度の低い概念から置き換えられます。概念を変換するための規則とそれらの正しい順序付けは、生成プログラムの側面で定義されています。

    生成プログラム ジェネレーター計画

    ジェネレータークックブック
    インタープリタークックブックの作成
    ビデオ - JetBrains MPSの紹介、パート8: 生成プログラム(英語)

    TextGen

    生成プログラムが最終的なAST表現に到達した後のコード生成中に、TextGenフェーズが開始し、モデル内のすべてのノードをそれらのテキスト表現に変換し、結果のテキストソースファイルをディスクに保存します。

    TextGen

    ビデオ - JetBrains MPSの紹介、パート9: TextGen(英語)

    データフロー

    値の流れや言語構成要素を通じた制御の流れを理解することができれば、言語は到達不能コードnullポインタエラーの可能性などの課題を報告できます。言語設計者はデータフローアスペクトを利用して各概念のフローを定義することができ、MPSはそれを使用してプログラム全体のデータフローを計算します。

    データフロー

    データフロークックブック
    ビデオ - JetBrains MPSの紹介、パート10: データフロー(英語)

    型システム

    コードを型チェックする必要がある言語は、型システム規則を提供する必要があります。MPS型システムエンジンはその場でルールを評価し、ノードの型を計算してレポートします。
    計算されたタイプが予想と異なる場合は、エラーが発生します。
    モデルに関する非型システムアサーションを検証するために、いわゆるチェックルールをさらに定義することができます。

    型システム

    型システムクックブック
    型システムを使う
    型システムをデバッグする
    ビデオ - JetBrains MPSの紹介、パート11: 型システム(英語)

    リファクタリング

    最新のIDEでは、開発者はリファクタリングを通じてコードの構造をシームレスかつ完璧に変更できます。MPSは、言語デザイナーがそのようなリファクタリングを準備し、彼らの言語の一部にすることを可能にします。

    リファクタリング
    マイグレーション

    ある言語の新しいバージョンが一般に公開されると、その言語の前のバージョンを使用するプロジェクトは、新しい言語構成を使用するように移行する必要があります。言語の作者によって準備された 移行スクリプトは、ユーザーコードを操作して自動的にそれを言語の最新版に更新します。

    マイグレーション 分岐を伴う移行
    テスト

    言語定義のさまざまな側面を自動的にテストできます。言語作成者は、エディター、アクション、型システム、データフロー、または言語の制約が仕様に従って動作することを検証するテストを作成できます。

    テスト
    スクリプト

    TODO

    スクリプト
    付属品

    アクセサーリーモデルは、言語の側面として(推奨)、またはソリューションにある通常のモデルとして、2か所に保管できます。どちらの場合も、モデルを使用できるように言語ランタイム言語設定に追加する必要があります。典型的なユースケースは、その言語が使用されている任意の場所で利用可能になるConceptインスタンスのデフォルトライブラリーです。

    付属品
  4. IDEの統合 - MPSをカスタマイズする方法、言語固有の視覚的拡張を追加する方法、異なる永続化フォーマットを使用する方法など
  5. IDEツール - MPSが言語を操作するために提供するツール
  6. プラットフォーム言語 - すぐに使える言語をすぐに使える
  7. MPSプロジェクトの構築 - コマンドラインからの言語構築、Ant統合、継続的インテグレーション、プラグインの作成と使用、コードの難読化
  8. クックブック - クイック使い方ガイド
  9. 外部チュートリアルとガイド

最終更新日: 2019年7月5日

関連ページ:

MPSへのファストトラック - 習得するための10のステップ

ようこそ! このチュートリアルは、MPSにまったく慣れておらず、MPSの風景を見ながらのガイドツアーを好む開発者のために特別に設計されます。次に進むべき場所を示す明確なマークに従って、殴打された道を一度に1歩歩きます。情報は、より単純な概念からより複雑な概念へと進み、旅の終わりにMPSを理解し、あな...

MPSスクリーンキャスト

このページでは、JetBrains TVのMPSチャンネルで公開されているMPS関連のスクリーンキャストを一覧にして分類しています。カスタマーストーリー誰がどのようにMPSを使用します。MPSのMPSの使用方法を紹介しています。なぜJetBrains MPSなのか- 気にする必要がある人とその理由M...

基本的な考え方

この章では、MPSの基本的な概念(ノード、概念、および言語)について説明します。これらはMPSがどのように機能するかを正しく理解するための鍵です。それらはすべて他のものと組み合わされたときに意味をなさないため、それらについてすべて一緒に話さなければなりません。このセクションでは、各要素の本質について...

よくある質問 (FAQ)

DSL、LOP、プログラミング、DSLとは何ですか? 「本物の」プログラミング言語とどう違うのですか。DSLの利点は何ですか?なぜ気にする必要がありますか?、DSLと通常のコードはどのように連携していますか?、言語指向プログラミングとは、なぜ言語を拡張したいのですか?ライブラリーは十分ではないですか...

IDEの設定

MPSの多くの側面は設定ダイアログを通して設定することができます (Control + Alt + S / Cmd + ,)特定の設定項目にすばやく移動するには、左上隅にある便利なテキスト検索ボックスを使用します。フォーカスはデフォルトでテキストフィールドに設定されているため、入力を始めるだけで済み...

言語プラグインのインストール方法

MPSは他の言語でも簡単に拡張できます。言語は通常のzipファイルとしてパッケージされています。MPSプラグインディレクトリーに解凍し、再起動時にMPSがロードされます。言語プラグインをインストールする最も便利な方法は設定ダイアログ(Control + Alt + S / Cmd +)で利用可能なプ...