機械翻訳について

CDL演算子

演算子は、Unicode文字で構成される事前定義済トークンです。 これを使用して、オペランド間で実行時に実行する操作を指定します。

使用できる演算子

演算子タイプ 演算子 説明
論理 AND
  • 2つのオペランドが必要です。
  • 各オペランドがtrueの場合、trueを返します。
論理 OR
  • 2つのオペランドが必要です。
  • いずれかのオペランドがtrueの場合、trueを返します。
論理 NOT
  • 1つのオペランドが必要です。
  • オペランドがtrueの場合、falseを返します。
  • オペランドがfalseの場合、trueを返します。
論理 REQUIRES
  • 2つのオペランドが必要です。
論理 IMPLIES
  • 2つのオペランドが必要です。
論理 EXCLUDES
  • 2つのオペランドが必要です。
論理 NEGATES
  • 2つのオペランドが必要です。
論理および比較 LIKE
  • 2つのテキスト・リテラル・オペランドが必要です。
  • 各オペランドの値が互いに一致する場合、trueが戻されます。 そうでない場合は、falseを返します。
論理および比較 相似でない
  • 2つのテキスト・リテラル・オペランドが必要です。
  • 各オペランドの値が一致しない場合、trueが戻されます。 そうでない場合は、falseを返します。
論理、算術および比較 =
  • 2つのオペランドが必要です。
  • 各オペランドの値が互いに一致する場合、trueが戻されます。 そうでない場合は、falseを返します。
論理、算術および比較 >
  • 2つのオペランドが必要です。
  • 最初のオペランドの値が2番目のオペランドの値より大きい場合、trueが戻されます。 そうでない場合は、falseを返します。
論理、算術および比較 <
  • 2つのオペランドが必要です。
  • 最初のオペランドの値が2番目のオペランドの値より小さい場合、trueが戻されます。 そうでない場合は、falseを返します。
論理、算術および比較 <>
  • 2つのオペランドが必要です。
  • 最初のオペランドの値が2番目のオペランドの値と等しい場合、trueが戻されます。 そうでない場合は、falseを返します。
論理、算術および比較 <=
  • 2つのオペランドが必要です。
  • 最初のオペランドの値が2番目のオペランドの値以下の場合、trueが戻されます。 そうでない場合は、falseを返します。
論理、算術および比較 >=
  • 2つのオペランドが必要です。
  • 最初のオペランドの値が2番目のオペランドの値以上である場合、trueが戻されます。 そうでない場合は、falseを返します。
計算 *
  • 数値オペランドで乗算を実行します。
計算 /
  • 数値オペランドで除算を実行します。
計算 -
  • 数値オペランドに対して算術減算を実行します。
計算 +
  • 数値オペランドに対して算術加算を実行します。
計算 ^
  • 数値オペランドに対して算術指数を実行します。
計算 %
  • 数値オペランドに対して演算モジュロを実行します。
テキスト +
  • テキスト文字列を連結します。
Other Assign(node)
  • ノードをシーケンス内のポイントに割り当てます。
  • ノードの詳細ページで「ドメイン順序」属性を指定すると、Oracle Configuratorによってノードが割り当てられます。 この属性を指定しない場合、コンフィギュレータは演算子タイプに従って暗黙的にノードを割り当てます。
  • この操作は、デフォルト・クラスまたは検索デシジョン・クラスのルールでのみ使用できます。
Other IncMin()
  • Assign(node)演算子と同様ですが、IncMin()は、ノードを割り当てる明示的または暗黙的な操作をオーバーライドし、かわりに、ノードを割り当てるための最小値を増やすバイナリ検索の使用を試みます。
  • この演算子は、整数または小数(数量を含む品目およびオプションを含む)で使用できます。
  • 状態、数量、値などのシステム属性を明示的に指定しない場合、コンフィギュレータは、この操作をノードのデフォルト・システム属性に適用します。
  • この操作を品目に対して使用する場合は、RelativeQuantity属性を代替として指定できます。
  • この操作は、デフォルト・クラスまたは検索デシジョン・クラスのルールでのみ使用できます。
Other ( )
  • 式をグループ化します。
Other ,
  • 引数を区切ります。
Other .
  • モデルの一部を参照します。
Other -
  • 正の値を負の値に変更するか、負の値を正の値に変更します。

演算子のデータ型

演算子 データ型
計算

整数

小数

論理 Boolean
比較 Boolean

各演算子の結果を別の演算子のオペランドとして使用できます。 これらの各演算子は、同じデータ型を使用する必要があります。 たとえば:

  • 演算子xが10進数で、演算子yが10進数の場合は、xの結果をyのオペランドとして使用できます。
  • 演算子xが10進数で、演算子yが10進数でない場合、xの結果をyのオペランドとして使用することはできません。

演算子の優先順位

コンフィギュレータは、次の演算子を処理する際にこの優先順位を使用します:

優先度 演算子 説明
1 (right) () カッコ
2 (right) . ナビゲーション
3 (right) ^ 算術パワー
4 単項+、 - NOT 単項プラスとマイナス、なし
5 (left) *, /, % 算術乗算と除算
6 (left) バイナリ+- 算術プラスとマイナス、テキスト連結
7 (left) <, >, =, <=, >=, <> LIKE, NOT LIKE 比較演算子
8 (left) AND 論理AND
9 (left) OR 論理OR
10 (left) DEFAULTS, EXCLUDES, NEGATES, IMPLIES, REQUIRES 論理演算子

2つ以上の演算子が同じ優先順位を持つ場合、コンフィギュレータはルールに表示されるとおりに演算子を左から右に処理します。

LIKE演算子およびNOT LIKE演算子

LIKE演算子およびNOT LIKE演算子を含めて、テキストを比較できます。

  • 静的コンテキストでのみ使用できます。 たとえば、イテレータのWHERE句を使用できます。
  • 演算子が定数文字列に評価される場合にのみ、ランタイム参加者でLIKEまたはNOT LIKEを使用できます。 コンフィギュレータは、モデルの保存時にこの条件を検証します。

LIKEを使用したブール値の取得

次の例について考えてみます:

a.attr.Value() LIKE "%eig%"

その仕組みは次のとおりです:

a.attrのテキストに次が含まれている場合 次にコンフィギュレータ返品
eig (a.attr =weighteightなど) true
Rein false

この例では、ユーザーがオプションAおよびオプションBを選択し、その属性の値がA1B1の場合、ルールによってCのすべてのオプションが選択されます:

Constrain Alltrue('A','B') implies &C
for all &C in {optionsof('C')}
where &C.userAttrs["Selections.AB Compatibility"] like "A1B1"

ユーザーがオプションAおよびオプションBを選択し、その属性の値がA1B1でない場合は、ルールによってCのすべてのオプションが選択されます:

Constrain Alltrue('A','B') implies &C
for all &C in {optionsof('C')}
where not (&C.userAttrs["Selections.AB Compatibility"] like "A1B1" )

テキスト演算子の連結

+ (プラス記号)を使用して、テキストを連結できます。

  • 静的テキストでのみ使用できます。 たとえば、イテレータのWHERE句で使用できます。
  • 制約文またはコントリビュータ文が定数文字列に評価される場合にのみ、制約文またはコントリビュータ文の本文で使用します。 コンフィギュレータは、モデルの保存時にこの要件を検証します。

演算子の収集

Collectキーワードを使用してコレクションを作成し、コレクションを引数として使用できる演算子にコレクションを指定できます。 たとえば、AnyTrue(x, y, z)のかわりに、AnyTrue(COLLECT &c FOR ALL &c IN {x,y,z})を記述できます。