PocketMPSユーザーズガイド言語デザイナーのためのMPSユーザーガイドMPSへようこそこのユーザーガイドはMPSの完全なリファレンスドキュメントであり、MPSが提供する多くの概念と使用パターンを案内し、システムの特定の側面に関する詳細を知る必要があるときはいつでも手に入れることができます。ここに私達の新しい人たちのためのオファーがあります:私たちのMPSへのファストトラックチュートリアルを試してみてください。これはMPSが全く新しく、MPSの風景を案内するツアーを好むITプロフェッショナルのために特別に設計されます。次に進むべき場所を示す明確なマークに従って、一般的なやり方で進めます。情報は、より単純な概念からより複雑な概念へと進み、旅の終わりにMPSを理解し、あなたのプロジェクトでそれを効果的に使用できるようになるように構成されています。それからより詳細で構造化された情報のためにこのユーザーガイドに来ることができます。MPSがどのように構成されているか、それがどのように機能するか、ユーザーがどのようにしてそれと対話するべきかについての、初心者にとって重要な情報。どこかで立ち往生したときにあなたの方法を見つけるのを手助けするための秘訣。言語を定義するには、いくつかの側面を指定する必要があります。各側面は、言語の一部、つまり許可されたAST構造、画面上の外観、型システム規則などを体系化したものです。アスペクト説明コアドキュメント構造ユーザーモデルで使用できるノードの種類(概念と呼ばれる)を定義します。プログラム(モデル)内の各ノードはその概念を表します。概念は、どのプロパティ、子、および参照ノードが持つことができるかを指定します。概念は他の概念を拡張してConceptInterfacesを実装することができます。構造で定義されている規則を超えて、ノード間の関係とプロパティの許容値を制限します。制約は通常次のように定義します。制約(英語)振る舞いOOPのクラスがメソッドを保持するのと同じように、概念はノード上で多相的に呼び出すことができるメソッドと静的メソッドを定義することができます。ノードは、このように彼らの特性や関係と一緒に行動を運ぶ。編集可能な形式(つまりテキスト)からコンピューターが操作できるツリーのような構造にコードを変換するパーサを定義する代わりに、MPSは、ユーザが直接ASTを編集できるようにする投影エディターの概念を提供します。エディターアスペクトにより、言語設計者は自分のコンセプトコンセプトを編集するためのUIを作成できます。エディター(英語)アクションアクションアスペクトは、コピー/貼り付けやノードの初期化など、高度なエディターの動作を指定する手段を提供します。Enter)で利用可能なインスタントコードによる操作操作で開発者を支援します。言語の作者はインテンションの側面で彼らの言語のためにそのような小さなコード変換を定義することができます。インテンション(英語)生成プログラム1つ以上の言語で記述されたモデルは、最終的には、Javaなどの一部のターゲット汎用言語およびプラットフォームの実行可能コードに変換されます。その過程で、モデルは徐々に変換され、最終的なレベルに達するまで概念が繰り返し抽象度の低い概念から置き換えられます。概念を変換するための規則とそれらの正しい順序付けは、生成プログラムの側面で定義されています。生成プログラム(英語)TextGen生成プログラムが最終的なAST表現に到達した後のコード生成中に、TextGenフェーズが開始し、モデル内のすべてのノードをそれらのテキスト表現に変換し、結果のテキストソースファイルをディスクに保存します。値の流れや言語構成要素を通じた制御の流れを理解することができれば、言語は到達不能コードやnullポインタエラーの可能性などの課題を報告できます。言語設計者はデータフローアスペクトを利用して各概念のフローを定義することができ、MPSはそれを使用してプログラム全体のデータフローを計算します。データフロー(英語)型システムコードを型チェックする必要がある言語は、型システム規則を提供する必要があります。MPS型システムエンジンはその場でルールを評価し、ノードの型を計算してレポートします。計算されたタイプが予想と異なる場合は、エラーが発生します。モデルに関する非型システムアサーションを検証するために、いわゆるチェックルールをさらに定義することができます。型システム(英語)リファクタリング最新のIDEでは、開発者はリファクタリングを通じてコードの構造をシームレスかつ完璧に変更できます。MPSは、言語デザイナーがそのようなリファクタリングを準備し、彼らの言語の一部にすることを可能にします。リファクタリングマイグレーションある言語の新しいバージョンが一般に公開されると、その言語の前のバージョンを使用するプロジェクトは、新しい言語構成を使用するように移行する必要があります。移行スクリプトは、ユーザーコードを操作して自動的にそれを言語の最新版に更新します。マイグレーション分岐を伴う移行テスト言語定義のさまざまな側面を自動的にテストできます。言語作成者は、エディター、アクション、型システム、データフロー、または言語の制約が仕様に従って動作することを検証するテストを作成できます。テストスクリプトTODOスクリプト付属品アクセサーリーモデルは、言語の側面として(推奨)、またはソリューションにある通常のモデルとして、2か所に保管できます。どちらの場合も、モデルを使用できるように言語ランタイム言語設定に追加する必要があります。典型的なユースケースは、その言語が使用されている任意の場所で利用可能になるConceptインスタンスのデフォルトライブラリです。要件追跡サンプルプロジェクトの見学ツアー。ノード属性、複数の投影法とスコープについて学びます。このチュートリアルは、MPSにまったく慣れておらず、MPSの風景を見ながらのガイドツアーを好む開発者のために特別に設計されます。次に進むべき場所を示す明確なマークに従って、殴打された道を一度に1歩歩きます。MPS関連のスクリーンキャストをリストおよび分類しています。カスタマーストーリー:誰がどのようにMPSを使用します。MPSのMPSの使用方法を紹介しています。MPSについての概要ビデオ。誰が気に...基本的な考え方この章では、MPSの基本的な概念(ノード、概念、および言語)について説明します。これらはMPSがどのように機能するかを正しく理解するための鍵です。それらはすべて他のものと組み合わされたときに意味をなさないため、それらについてすべて一緒に話さなければなりません。「本物の」プログラミング言語とどう違うのですか。介して、MPSの多くの側面を構成できます。特定の構成アイテムにすばやく移動するには、左上の便利なテキスト検索ボックスを使用できます。フォーカスはデフォルトでテキストフィールドに設定されているため、入力を開始できます。検索が個々の画面に深く入り込んでいることに注意してくださ...言語プラグインのインストール方法MPSは他の言語でも簡単に拡張できます。言語は通常のzipファイルとしてパッケージされています。MPSプラグインディレクトリーに解凍し、再起動時にMPSがロードされます。利用可能なプラグインマネージャーを使用することです。