CDLで記述されたコンフィギュレータ・ルールの構造
このトピックでは、CDLで記述されたルールの構文、セマンティクスおよび字句構造がどのように相互に関連するかについて概要を説明します。
このセクションの内容は次のとおりです:
-
ルール定義
-
ルール文
-
データ型
ルール定義
コンフィギュレータ・ルールには、名前、関連モデル、ルール・テキスト、ルール区分などのその他の属性があります。 ルール定義はCDLで記述され、ルールの意図を表す1つ以上の個々の文と、オプションのコメントで構成されます。
コンフィギュレータ・モデル作業領域で文ルールを作成する場合は、入力フィールドや選択フィールドに名前およびその他の属性を入力し、その目的用に提供されたテキスト・ボックスにルール定義を入力します。
ルール文
文は、オプションAが選択されたときに整数機能Xに10の値を追加するなど、ルールの目的を定義します。
ルール定義に複数の文をセミコロン(;)で区切る必要があります。 CDLでは、2種類の文がサポートされています: 明示的およびイテレータ。
CDL文はトークンとして解析されます。 CDLのすべてがトークンであり、空白文字とコメントは除きます。
文は、1つ以上の「条項」で構成されます。 句は、キーワードと1つ以上の「式」で構成されます。 キーワードは、CDL構文を決定し、言語のセマンティクスを組み込む事前定義されたトークンです。 CONSTRAIN、COMPATIBLE、REQUIRES、IMPLIES、LIKE、NOTなどはすべてキーワードの例です。
式は、ルール操作に関連する演算子とオペランドを含む文の一部です。 演算子は、論理演算、関数演算または数学演算のオペランドを含む、事前定義されたキーワード、関数または文字です。 演算子の例として、REQUIRESおよびプラス記号(+)があります。 オペランドには、式、リテラルまたは識別子を指定できます。 リテラルまたは識別子オペランドは、「シングルトン」または「コレクション」としてルールに存在できます。 ルールで参照されるモデル・ノードは、ルール関係者と呼ばれます。
リテラルは、数値、ブール(TrueまたはFalse)、テキストなど、特定のデータ型のトークンです。 リテラルの特定の値は、定数の概念と同等です。
識別子は、モデル・オブジェクトまたは仮パラメータを識別するトークンです。 識別子がモデル・オブジェクトを識別する場合、モデル・ノードまたは属性を参照し、文字と数字のシーケンスは文字で始まります。 このような種類の識別子は、参照と呼ばれます。 識別子が仮パラメータの場合、ローカル変数が識別され、イテレータ文で使用されます。 公式パラメータには、先頭にアンパサンド(&)が付きます。
読みやすく、操作の順序などの意味を伝えるために、CDLはセパレータをサポートしています。 セパレータは、トークン間に境界を設定し、いくつかの構文基準に基づいてそれらをグループ化することによって、ルールの構造を維持するトークンです。 セパレータは、文間のセミコロンや式を囲むカッコなどの単一文字です。
これらの文およびそれらに含まれるCDL要素の詳細は、CDL文で説明します。
データ型
CDLでルールを定義する際の有効なデータ型を次に示します:
-
INTEGER
-
DECIMAL
-
BOOLEAN
-
TEXT
-
ノード・タイプ
特定の状況では、変数のデータ型は、引数として想定される型と互換性がありません。 コンフィギュレータ・パーサーは、データ型間の明示的な変換またはキャストをサポートしていません。 パーサーは、互換性のある型間の暗黙的な変換を実行します。 詳細は、次の表を参照してください。
ルール定義のデータ型が間違っている場合、パーサーはタイプの不一致エラー・メッセージを返します。 無効なコレクションは、データ型を暗黙的に互換性のために変換できないコレクションを示しています。
次の表に、各ソース・データ型が暗黙的に変換するデータ型を示します。
ソース・データ型(または同じタイプのコレクション) |
暗黙的に(または同じタイプのコレクションに)変換されます |
---|---|
INTEGER |
DECIMAL |
Standard品目、オプション区分、モデル、オプション機能、オプションまたはブール機能のタイプのNODE |
BOOLEAN INTEGER DECIMAL ノード・タイプ |
タイプが整数機能のNODE |
INTEGER DECIMAL |
小数機能タイプのNODE |
DECIMAL |
特に指定しないかぎり、一致型へのすべての参照は暗黙的なデータ型変換を想定します。
ここではTEXTはデータ型として含まれていますが、静的コンテキストでのみ使用できます。 CONSTRAIN、ADDまたはSUBTRACT式の実際の本文では、TEXTリテラル、参照または式を使用できません。 コンフィギュレータ・コンパイラは、モデルをコンパイルするときにこの条件を検証します。