MPS 2020.1 ヘルプ

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

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

私達は MPS を学ぶことよりも世界に簡単な作業があることを認めます。言語設計は複雑な領域であり、投影編集は慣れる必要があります。DSL または言語ワークベンチの使用経験がある場合は大いに役立ちますが、このチュートリアルを理解するのに必要というわけではありません。道路上でより多くのバンプを期待してください。確かにそれらの多くがあるでしょう - MPS がそれ自身の問題とバグを持っていることも理由の一つです。かなりの時間がかかるかもしれない厳しい経験を求めています。

これまで多くの人がここを通って成功してきたことを忘れないでください。固執するなら、報われるでしょう - カスタムメイドの DSL を準備し、プロジェクトに統合しそして使って価値の高いソフトウェアを開発することができる言語デザイナーになるでしょう。

いい靴を履いて、しっかりとひもを締めて行きましょう。

ステップ 1 - なぜ MPS

未加工時間の引用 -15 分

MPS を学ぶための動機から始めましょう。

  1. まず最初に、MPS - なぜ JetBrains MPS(英語) についての 2 分間の概観ビデオをチェックしてください。そうすれば、このツールがあなたのプロジェクトに必要なものを提供しているかどうかを評価することができます。

  2. 当社の新しい VoiceMenu デモアプリケーション(英語)は、さまざまな専門分野の出身者に MPS の可能性を素早く理解させるために作成されました。この短いビデオを参照してください。

  3. 学術研究に関心がある場合は、MPS ユーザーが時間をかけて公開した MPS にあるすべての学術出版物のリスト(英語)も確認してください。

ステップ 2 - 手を汚す

推定生時間 -120 分

今すぐ MPS をお試しください ! MPS の Web サイトからダウンロードするをクリックして、準備された実践コースに進みます。無料のガイド付きオンラインチュートリアルに参加して、MPS をすぐにプレイし、コードを記述し、言語定義ビットを改善して、すべてがどのように機能するかを確認します。MPS があなたのためであるかどうか、それから何を期待できるかを評価できるように、物事を試すことに焦点が当てられています。理論の説明に費やす時間は最小限です。MPS が自分に適したツールであることがわかったら、後で MPS について深く掘り下げる時間は常にあります。それでは、せっかちな人のための JetBrains MPS(英語) にアクセスして、MPS について学びましょう。

ステップ 3 - プログラマーの観点からの MPS

未加工時間の引用 -15 分

MPS について読んだだけでは、実際に試してみることほどには教えてくれません。既にこれを行っているかもしれませんが、そうでない場合は、ダウンロードサイトから MPS を取得してインストールしてください。MPS をインストールすると、ファーストトラックを続行できます。

エディターを設定する

皆違います。MPS に付属するデフォルト設定が習慣に合わない場合は、いつでも環境設定(MacO、Ctrl+Alt+S を押す)または設定(Windows、Ctrl+Alt+S を押す、またはメニューファイル -> 設定に移動)で変更できます。変更される可能性が最も高い設定の 1 つは、エディター -> 一般セクションのフォントサイズです。

EditorConfig

安全にシートベルトを着用してください

キーボードショートカットを理解することで、優れた開発者を優れた開発者に変えることができます。MPS を学習すると、便利な MPS 機能をトリガーするさまざまなキーの組み合わせを内部化します。ただし、最初から覚えておくべきキーの組み合わせが 1 つあります。Ctrl+Z です。もう一度 - Ctrl+Z元に戻すアクションです。故意または誤って何か間違ったことを行って機能コードに戻りたい場合は、Ctrl+Z を使用してください。

ちょっとした乗車

プログラマーが試してみるのが好きなので、まず MPS エディターを試しに試してみませんか。MPS を起動してロボットカヤサンプルプロジェクトを開くと、すぐに最初の印象を得ることができます。このプロジェクトは仮想ロボットを指揮するための人工言語を定義します。ロボットは長方形の領域内を移動し、マークを落として収集し、周囲のセルで壁やマークを確認できます。スクリプトは、組み込みコマンドとその場で作成した新しいコマンドを使用して作成します。スクリプトを実行すると、Java で書かれたシミュレータが起動してプログラムの実行を視覚化します。

プロジェクトを開くには、新しい MPS を起動し、サンプルプロジェクトを開くボタンをクリックして robot_Kaja を選択します。サンプルプロジェクトはホーム / MPS サンプルフォルダーにインストールされています。

Robot open1

次のビデオは MPS 入門オンライントレーニング(英語)コースから借用しました。この教育用スクリーンキャスト(英語)は MPS を使い始めるのに役立ちます。見てみな。
ビデオが好きで、MPS の学習に真剣に取り組んでいるなら、MPS 入門オンライントレーニング(英語)への登録を検討してくださいそれはあなたに多数の実地演習を通してあなたに徹底的な指導を与えるでしょう、ライブトレーナーとあなたの進歩と質問について話し合うことができるでしょう。

ステップ 4 - 基本を学ぶ

推定生時間 -25 分

このビデオを見てください ! - 初めての実行(英語)それはあなたに MPS がどのように組織されているか、それがどのように働くか、どのようにユーザーが MPS とやり取りするべきかについての重要な情報を与えます。

  1. 注意深く MPS を評価しているなら、ビデオを見ている間、または MPS 使用箇所についての物語を読んでいる間あなたの頭の中に飛び出す多くの質問がなければなりません。これらの質問のいくつかがすでに MPS FAQ ページで答えられていると思います。見てみな

  2. Mikhail Barash による MPS の基礎に関する穏やかな紹介記事(英語)を参照してください。この記事を読むとすぐにすべての原則を理解できるため、これは現時点で間違いなくあなたの時間の価値があります。

  3. ちょっと立ち止まって、ノード、コンセプト、AST のような本質的な用語をリストしている短いページをさっと読んで、よく使われる用語をさらによく理解してください。

ステップ 5 - 投影編集のヒントとコツ

推定生時間 -25 分

先に進む前に、MPS の最も特徴的な機能 - プロジェクションエディター - を知っておく必要があります。ビデオをチェックする(英語)では、従来のテキストエディターと MPS プロジェクションエディターの違いをすべて説明し、このアプローチの多数の利点について説明します。

MPS でコードを編集するとき、あなたのコーディング習慣が MPS エディターの投影の性質を妨げる状況に遭遇するでしょう。実験の間にすでにそのような驚きを発見したと実にかなり確信しています。MPS のコードはテキストではありませんが、代わりに抽象構文(AST)の射影です。これにより、言語設計者にいくつかの利点があり、同時に、編集経験が一般的なテキストエディターとは若干異なり、制限が厳しくなります。これは利点であると考えられるかもしれないし、考えられないかもしれません。それにもかかわらず、射影編集への学習曲線があります。一般に、射影コードでは、エディターの助けを借りています。効率的な射影コーダになるためには、コード補完、ブロック選択、インテンションアクションがあなたの親友になるはずです。それには良い面も悪い面もあります。

  • 良い - MPS エディターでのプログラミングの 1 週間足らずで、人々は通常テキストベースの IDE で以前経験したコーディングの全速に戻ります

  • 悪い - 投影編集は中毒性が非常に高く、テキストベースのエディターは以前に考えられていたよりも説得力がなく、役に立たないと感じるかもしれません。

これから言語の設計に真剣に取り組むつもりです。MPS の学習に全力を注ぐ必要があるため、まだ躊躇している場合は、MPS の探索にさらに時間をかけるかどうかにかかわらず、先に進む前に次の資料を確認することを検討してください。すでに納得している場合は、次のステップに進んでください。

  • JetBrains MPS は、有償および学術プロジェクトの両方でソフトウェアベンダーによって採用されている効率的で信頼性の高い開発ツールです。MPS ベースの DSL は、立法モデリング、電気工学、保険業界、組み込みソフトウェア、医療システム、バイオインフォマティクス、データ分析など、幅広い分野で採用されています。「MPS ホームページの「When MPS」セクション」は、成功したプロジェクトのいくつかをリストし、使用されているテクノロジーの概要を示します。

  • また、少し速度を落として、ミハイルバラシ(英語)を使用して、MPS の優れたドメイン固有の言語に関する物語(英語)で MPS の周囲に素晴らしいものを構築するための独自のアイデアを生み出すこともできます。どういたしまして !

ステップ 6 - 言語設計者の観点からの MPS

未加工時間の引用 -20 分

今度は、ロボットのサンプル言語がどのように作成されたかについて興味があるはずです。もう一度ロボットカヤサンプルプロジェクトを開き、言語定義の基本を説明するスクリーンショット(英語)をプレイしてください。
あなたに JetBrains が提供するこの有料のコースの味を与える繰り返しますが、このビデオは MPS 入門オンライントレーニング(英語)から借用していますコース。
ビデオを見ながら、頻繁に一時停止して、サンプルプロジェクトを自分で参照してください。このようにして典型的な言語構造を理解し、その個々の部分の間の関係を見るでしょう。

この時点で、言語定義はいくつかの側面からなることを理解するべきです。これらのいくつかは必須です、いくつかはオプションです。

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

  • 制約 - 構造で定義されている規則を超えて、ノード間の関係とプロパティの許容値を制限します。制約は通常次のように定義します。

    • 参照の対象スコープ (参照が指すことができる許可されたノードのコレクション)

    • あるノードが別のノードの子 / 親 / 祖先になることができる状況

    • プロパティの許容値

    • プロパティアクセサーメソッド (Getter および Setter)

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

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

  • アクション - MPS エディターは基礎となる AST を直接操作するため、コピーペーストやノードの置き換えなどの一部の編集操作は、自明ではない AST の変更につながります。アクションアスペクトはそのようなカスタマイズされた AST 変換の定義を保持します。

  • インテンション - すべての最新の IDE は、便利なキーショートカット(MPS の Alt+Enter )で利用できるインスタントコード操作で開発者を支援します。言語の作成者は、インテンションの側面で自分の言語にこのような小さなコード変換を定義できます。

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

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

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

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

ステップ 7 - 図形チュートリアル

所要時間 - 2 時間

図形チュートリアルを使用すると、独自の言語をすばやく作成できます。MPS エントリレベルの図形チュートリアルを確認し、非プログラマーがグラフィカルな形状のシーンを構築できるようにする言語を構築します。

Tut1

Tut2

ステップ 8 - 計算機のチュートリアル

所要時間 - 8 時間

MPS で言語デザインについてより多くの詳細を見つけることに興味があるにちがいありませんか?すべての基本的な情報とある程度の経験を与えてくれたため、入門チュートリアルはあなたを深く掘り下げてサンプル言語をゼロから完全に構築する良い立場にあなたを残すべきでした。計算機のチュートリアルは言語創造のプロセスを通してあなたを案内します。空のプロジェクトから始めて、Java Swing ベースのビジュアルアプリケーションを構築するための言語に行き着きます。試してみて楽しみましょう。

JavaScript での電卓のチュートリアル

MPS は Java の生成に限定されないという実例として、計算を保持する HTML ページと JavaScript プログラムを生成する同様の計算機サンプルプロジェクト CalculatorJS(英語) を用意しました。GitHub で確認でき(英語)ます。

ステップ 9 - 依存関係とインポートされた言語の管理

所要時間 - 30 分

お気づきのとおり、MPS を使用すると、モデル間の依存関係を管理したり、言語をインポートしたりできます。これらを理解することが不可欠であるため、依存関係を正しくすることに関するユーザガイドの章を参照してください。それはあなたに依存関係とインポートされた言語との間の違いと設定 / 管理する方法を教えます。

ステップ 10 - Garage プロジェクトのチュートリアル

所要時間 - 5 時間

計算機のチュートリアルはあなたに言語デザインの優れた全体的な知識を与えてくれたはずです。今度はより徹底的な運動のための時間です。ガレージプロジェクトでは、相互に接続された複数の言語を作成し、再利用可能なプラグインとしてパッケージ化し、スタック言語を上下に重ねて配置します。このチュートリアルの複雑さを処理するために、Stepik プラットフォームをオンライン教育に活用します。無料の MPS 初級コース(英語)に登録してください。

進行状況を確認する

おめでとうございます ! 上記のチュートリアルと演習を完了することで、言語設計の世界に深刻な打撃を与えました。MPS の知識とコマンドは、スキル獲得の Dreyfus モデル(英語)上級初心者ステージのどこかで資格を得ることができます。これは間違いなくお祝いする良い機会であり、おそらくあなたの成功について私たちに知らせる(英語)こともできます。

はしごを上がる

スキル獲得の Dreyfus モデル(英語)の次のステージは有能です。その段階に達すると、具体的なガイドラインや監督なしで自分で作業できるようになります。しかしこれが起こるためには、MPS に関する様々な問題を解決するためにより多くの時間を費やす必要があります。実装する言語のアイデアがすでにある場合は、先に進んでください。そうでなければ、役に立つ小さな言語を考え出すようにしてください。1 つ以上の MPS サンプルを再実装してみて、どれほど厳密に得られたかを確認することもできます。あるいは、出発点としてサンプルを選択して先に進めてください - 言語機能の追加、ジェネレーターの実装、型システム規則の追加、編集経験の磨きなど - あなたにとって正しい挑戦のように感じるものは何でも。

さらに、MPS と言語デザインで有能になるためにこれらを試すべきです:

  1. JetBrains で MPS 上級コース(英語)を申請してください。オンラインとオンサイトの両方のオプションがあります。上級コースでは、以下について学びます。

    • 流暢でインテリジェントで使いやすいエディター

    • 自明ではないジェネレーターの実装

    • 型システム規則の定義

    • コード分析規則とクイックフィックスの指定

    • カスタマイズされた IDE と言語プラグインの構築

    • その他たくさんの

  2. 共通言語パターンを研究する

  3. クックブックを勉強して、言語デザインのさまざまな側面についてのあなたの知識を深めてください。

  4. 引用符と反引用符について知る

  5. ジェネレーターチュートリアルは MPS ジェネレーターが提供するより微妙なオプションをあなたに教えます。さまざまな種類のマクロ、ジェネレータースクリプト、ユーティリティモデルなどについて学びます。

  6. クロージャーコレクションコンセプト関数正規表現タプルsmodelビルド言語など、MPS にバンドルされている言語をよく理解してください。また、これらのプラットフォーム言語がどのように実装されているかを学ぶことで利益を得ることができます。インスピレーションを得たい言語要素に出会ったときはいつでも、その要素の背後にある概念の定義を開き、探索を開始してください。

  7. コマンドラインから MPS プロジェクトを構築する方法、IntelliJ IDEA および MPS プラグインに言語をパッケージする方法、プラグインの使用方法、およびスタンドアロン DSL IDE の構築方法を学ぶ

  8. すぐに必要とする情報を見つけることができるようにユーザーガイドの感触を得てください

  9. 心からキーボードショートカットのいくつかを学ぶ

  10. MPS コミュニティでアクティブになり、MPS マスタリーへの同じ道を歩んでいる人々のフォーラム(英語)の質問に答えてみてください

有能になった後、間違いなく経験を積むべきです。MPS を使って作業を進め、プロジェクトを流用すればするほど、スキル獲得の Dreyfus モデル(英語)スケールで早く上がることができます。MPS で熟練した、最終的にはエキスパートになるというゴールを自分で設定した場合は、次のことを検討してください。

  1. 次のような高度なトピックを勉強し練習する
    1. 使用箇所の検索
    2. MPS フレームワークを作る
    3. デバッガーの機能強化とカスタマイズ

    4. カスタム永続化
    5. 依存関係アナライザーおよびモジュール依存関係ツール

    6. カスタムデータフローアナライザ

    7. 拡張

  2. 異なるターゲット言語 / プラットフォームのベース言語を作成することにより、MPS がその領域に拡大するのを支援します - Python、Ruby、Dart、Haskell、Go など

  3. イベントで MPS について話す

  4. ドキュメントを進化させる手助け

  5. 貢献するコード(英語)から MPS プロジェクト

この経験レベルであなたをガイドするための詳細なドキュメントはそれほど多くなく、ほとんどの場合は自己主導でなければなりませんが、常にあなたに話し合い、助言を与え、協力します。

資料ソース

MPS マスタリーへの道のりに必要となるかもしれないドキュメントソースのリストはここにあります

ブック

Fabien Campagne が MPS Language Workbench:Volume I と Volume II の本を書きました。これらは電子的にもペーパーバックとしても購入できます。本は古いバージョンの MPS をカバーしていますが、その内容のほとんどは依然として関連しています。ここで入手します。

MPS Book Cover Volume1 small
cover Volume 2 v3 thumbnail website1 216x300

学術論文

出版物(英語)のページには、MPS および関連フィールドに関するすべての関連論文が集められています。

クックブック

実用的な情報や、言語設計の個々の側面に関するヒントやコツを少しだけ簡単にして、クックブックをいくつか試してみてください。

ユーザーガイド

本格的なリファレンスドキュメントは MPS に関する徹底的な情報を提供します。言語デザイナーのユーザーガイドをチェックしてください。

スクリーンキャスト

MPS チームは MPS の使用と言語設計の多くの側面を網羅したスクリーンキャストの大規模なコレクションを作成しました。それらをすべて MPS スクリーンキャストページでまたは JetBrains TV の MPS チャンネル(英語)で直接うまく分類されてチェックアウトすることができます。

ガイド付きトレーニング

MPS チームは、実践的な有償トレーニングを提供しています。詳細を確認してください:

一般的なドキュメント

MPS ドキュメントページはあなたにケーススタディ、チュートリアル、FAQ と MPS ドキュメントの他の部分へのすべての残りのポインターを与えます。

その他のサンプルプロジェクト

MPS には、言語開発の理解を深めるために一緒にプレイできるサンプルプロジェクトがいくつか付属しています。以下にリストされているようにおそらく順序で試してみることをお勧めします。彼らが何をしているのか、それらがどのように実装されているのか調べましょう。彼らはあなたに重要な教訓を教えるかもしれません。特定の機能がどのように実装されているのかわからない場合もあります。たぶん、以下の演習のうちの 1 つで答えを見つけるでしょう、、サンプルを再び訪れることができ、事はただクリックするでしょう。

これがあなたのために用意したサンプルのリストです:

言語拡張:

  • SampleJavaExtensions - ステートメント、金リテラルデシジョンテーブル定数定義を除き 、ループのための並列処理など、便利で小さな Java の機能強化のコレクション。このサンプルでは、既存の汎用言語をカスタム構文で拡張する方法を説明します。個々の拡張機能を紹介する短いスクリーンキャストを見る(英語)も好きかもしれません。

  • 複合 - 複素数を扱うための Java 拡張を定義します

  • XML リテラル - XML リテラルを第一級言語の要素として Java コードで直接使用できるようにします。言語は .xml の上に構築され、org.jdom.* API に生成されます。ユーザーが挿入した XML コードは、周囲の Java コンテキストを参照して、簡単にパラメーター化することができます。

  • 数学 - 複雑な数値、行列、区間、合計、積、その他の一般的な数学演算を自然な方法で入力できるように、Java の派手に見える数学言語拡張を提供します。

スタンドアロン言語

  • LanguagePatterns - MPS の共通言語パターンの実装を示すサンプル言語のセット。初心者が典型的な言語構成要素の具体的な実装を単独で見るのに役立ちます。このサンプルプロジェクトは徐々に新しいパターンで更新されています。

  • MultipleProjections - 概念ごとに複数の射影のメカニズムに焦点を当てた単純なステートマシン言語の例。この言語を使用するプログラマーは、ステートマシンの定義を進めるにつれて、事前定義されたいくつかの表記法をその場で切り替えることができます。利用可能な表記法はすべて言語またはその拡張で定義されています。

  • MultiTarget - 単一の言語を複数の異なるターゲット言語に生成する方法を説明します。

  • カスタムアスペクト - 言語定義のためにカスタムアスペクトを定義する方法を示します。詳細はカスタム言語アスペクトクックブックをチェックしてください。

  • クロスモデル生成 - クロスモデル生成を実現するためのカスタムジェネレータープランの使用方法を説明します。

  • コンポーネントの依存関係 - システムのコンポーネント間の依存関係を表現するための言語の最小限の例。これは、3 つの代替エディター表記を提供します。
    1. 原文の

    2. ダイアグラム

    この言語には XML ジェネレーターが付属しており、XML などの非命令型言語を生成する可能性を示しています。
  • カスタマイズデバッガー - 言語が BaseLanguage に拡張も生成もしない場合でも、Java デバッガーを使用して言語をフックする例。

  • マインドマップ - カスタマイズされたグラフィカルシンボルのセットを含む、ダイアグラム表記法を定義する直感的な例

  • ステートマシン(秘密区画言語 / DSL 本のサンプル) - ステートマシンテスト言語を含むステートマシン言語の例。始めるのを手助けするための概要スクリーンキャストが利用可能です(英語)

  • カスタムテストケース - 独自のテストを構築して MPS から実行する最小の例です。

  • 最も簡単な言語 - カスタマイズされたメッセージを出力する Hello World アプリケーションを生成する最小限の例です。言語生成の非常に基本を示します。

  • マイグレーション - smodel API と TransformStatement の両方を使用して相互接続された 2 つの言語を移行するための移行スクリプトの簡単な例。

  • ラムダ計算 - プロジェクションエディターと Java への生成を伴う、ラムダ計算をシミュレートする言語

  • 契約 - ビジネス指向の DSL の例

  • - 型システム型システムトレースツールで遊ぶことを可能にするために単純化された表現言語。この言語は、最小限のエディターサポートで、はっきりと構造化された型システム規則を使用して、MPS が型を計算する方法の中核を学ぶのに役立つことができる裸骨式の言語を提供します。型システムのデバッグのドキュメントを参照してください。

  • 固定長リーダー - バイナリデータ形式を記述するための言語の作成方法を示します。提供されたデータ形式の説明(設定と呼ばれる)を使用してバイナリデータから要素を抽出する仮想のランタイムライブラリ用のスタブが付属しています。

  • 高水準言語 - 言語定義言語のカスタムセットを定義する例。言語の構造とエディターを体系化するための独自の方法を定義する方法を説明します。

  • サンプル言語 - 彼らに定義と参照を含むルート概念の一般的なパターンを実装する方法を示す非常に直感的で最小限の例。このサンプルでは、Java クラス、メソッド定義、メソッド呼び出しをシミュレートします。ただし、このようなパターンは多くの言語で非常に頻繁に発生するため、調査に時間を費やすことは価値があります。また、このサンプルを見て回っている短いスクリーンキャストをチェックすることもできます。

  • 式言語 - エディターアクションやジェネレーターを含む式言語のサンプル定義

  • ノート 主催者 - タスク / 作業リストをシミュレートするビルドスクリプトを含む IntelliJ IDEA 用のサンプル DSL プラグイン。タスクにはさまざまな優先順位、状態、カテゴリがあり、カスタマイズすることもできます。タスクリストは、数種類の Swing UI コンポーネントを使用してフィルタリングすることができ、ユーザーはタスクリストのいくつかの代替の視覚化の中から選択することができます。ノードコレクションのフィルタリング、代替エディター、Swing コンポーネントのフォームに似た表記への直接組み込みの例として示しています。

  • 状態チャート - SCXML(英語) 規格の状態図を生成する状態図定義言語の例。

  • 要求追跡 (new) - 普遍的な、言語にとらわれない要求追跡言語の例。ソフトウェアプロジェクトのゴールは、提供されている要件追跡言語を使用して書かれた仕様書に取り込むことができます。関連する要件の記述は、これらの要件を実装する場所でコードに挿入できます。メンションは、任意の MPS 言語を使用するコードで使用できます。このサンプルは、単一の概念に対してノード属性、重要でないスコープ、複数の切り替え可能なエディターを備えています。

  • 属性 - text-gen およびジェネレーターの透過的な属性処理を説明するサンプル。2 つの CommentAttribute ノード属性の概念は、それらの text-gen がテキストに変換できるように、ジェネレーターをそのまま通過します。

  • サンプルファセット - make プロセスをインターセプトする単純な make ファセットを示しています。

  • 軽量 DSL - BaseLanguage クラスに埋め込まれた内部「軽量」DSL を構築するための jetbrains.mps.baselanguage.lightweightDSL 言語の使用例。

  • 加熱コントローラー - 架空の住宅用暖房制御装置の暖房計画を指定するための 2 つの表記法を提供する簡単な言語。デフォルトの表記法ではテキスト表現が可能ですが、言語拡張機能では代替の表形式表記法が提供されています。

  • 進捗インジケータ - アクションのプログレスバーを処理する適切な方法、アクションをキャンセル可能にしてバックグラウンドで実行できるようにする方法を説明する一連のアクション。

  • プロパティの永続性 - カスタム形式のスタブモデル実装の重要な例。このサンプルプロジェクトのカスタムモデルルートとカスタムモデルの実装により、プレーンプロパティファイルがモデルとして MPS にロードされます。詳細については、カスタム持続クックブックを参照してください。

  • XML の永続性 - ModelFactories とカスタムモデル実装を使用してカスタム永続性を実装する重要な例。プラグインには、3 つのソリューション(ビルドスクリプト、永続化実装、プラグイン記述子)が含まれています。カスタム永続性の実装は、XML ドキュメントをロード / 保存します。詳細については、カスタム持続クックブックを参照してください。

チュートリアルのサンプル:

関連ページ:

よくある質問 (FAQ)

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

基本的な考え方

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

用語集

MPS 用語集BaseLanguageJava 6 の投影クローン(Java 7 および 8 のオプションの拡張機能付き)。Java 仕様に準拠し、Java 6. と 1:1 の互換性があります。さらに、MPS は、日付、コレクション、クロージャなど、BaseLanguageに便利な拡張機能をいくつ...

図形 - MPS 入門チュートリアル

MPS に不慣れですぐにそれを試してみたいなら、これはあなたのための正しいチュートリアルです。2 時間以内に、新しい言語とその言語を使用する機能コードを入手できます。このチュートリアルでは、最初から始め、安全で便利な道を歩むことで、新しい言語のコア要素を設計します。すぐにフィニッシュラインに到達する...

依存関係を正しくする

目的、便利なキーボードショートカット、ソリューション、ソリューションモデル、プロジェクトへの外部 Java クラスと jar の追加 - ランタイムソリューション、言語、言語モデル / 側面、生成プログラム、目的 :モジュールとモデルは通常、さまざまな型の依存関係のネットワークによって相互接続されて...

共通言語パターン

この章では、MPS を学ぶ初心者がよく遭遇するであろう共通言語設計パターンについて説明します。私達は MPS ユーザーがオンラインフォーラムで確認する最も頻繁な質問としてこれらの時間を経て特定したため私達は容易な参照のために一箇所に答えをまとめることにした。言語パターン付きのサンプルプロジェクト、初...