制約規則
制約言語には、個々の制約のエラーメッセージを指定できないことや、同じ種類の制約に対して複数の個別のルールを定義できないことなど、いくつかの欠点があります。実験的な制約規則言語は、これらを克服しようとしています。これは、RulesConstraintsRules ルートの制約の側面で利用できます。

子 / 親 / 祖先 / ルートルールを指定できます
RulesConstraintsRules ルートは、最小限の視覚的なガイダンスを選択します。

定義はルールブロックに分割されます。これらのルールブロックはそれぞれ、次の 4 つのカテゴリのいずれか専用にする必要があります。
CanBeAncestor
CanBeChild
CanBeParent
CanBeRoot

各ルールブロックには、次の 2 つのタイプのメンバーが含まれます。

変数定義 - ルールで使用できる、再利用可能な事前計算された値
ルール定義 - 制約として評価する論理式。簡単に参照できるオプションの名前 (テストなど)、オプションのエラーメッセージ、およびオプションの適用性ガード式。

ルールブロックの暗黙的なパラメーター
各ルールブロックは、ルールで評価するためのコンテキストを取得するパラメーターを受け取ります。これらは完了メニューで使用できます。

これらのパラメーターは、ルールのエラーメッセージを形成するために使用することもできます。

ルールブロックの種類ごとに、異なる暗黙的パラメーターのセットが提供されます。
CanBeRoot - コンセプト、モデル
CanBeChild - childNode、parentNode、リンク
CanBeParent - childNode、parentNode、リンク、childConcept
CanBeAncestor - ancestorNode、parentNode、子孫ノード、子孫コンセプト、リンク
トレース制約ルールの評価
制約ルールの定義により、トレースを改善するために、「インスペクター」ウィンドウでログメッセージを指定できるようになります。

単一のログステートメントまたは BlockStatement を使用して、より複雑なロジックを含めることができます。
ハイライトする機能を指定する
制約ルールのエラーメッセージは、特定のノードのプロパティまたは参照を対象にすることができます。

ノード全体をハイライトするエラーの代わりに、プロパティまたは参照のみをハイライトするように構成できます。

「ハイライトする機能」プロパティは、エラーのハイライトを制限するように設定できます。

参照のプロパティを直接参照することも、式を使用して参照することもできます。


関連ページ:
制約
構造言語は、言語構造に対する高度な制約を表現するには不十分な場合があります。制約アスペクトは、そのような追加の制約を定義する方法を提供します。デフォルトの具体的な概念:抽象概念の場合、制約アスペクトを使用して、抽象概念のノードを作成する必要がある場合に代わりにどの概念を使用するかを示すことができます。例: 子コレクションが AbstractCommands を保持することになっていて、ユーザーが Enter キーを押して新しい子をコレクションに挿入すると、EmptyLine コンセプトのノードが...
振る舞い
構文ツリーの操作中に、タスクを簡素化し、機能を再利用するために、一般的な操作がユーティリティメソッドに抽出されることがよくあります。このようなユーティリティを静的メソッドに抽出したり、仮想メソッドでユーティリティコードを保持するノードラッパーを作成したりすることができます。ただし、MPS では、より優れたソリューションである動作言語の側面を利用できます。これにより、ノード上に仮想および非仮想インスタンスメソッド、静的メソッド、コンセプトインスタンスコンストラクターを作成できます。Behavior...