ARL と Java 7 の違い

ARL は、Java 7 によく似た構文を持つ読み取り専用のルール言語です。 ARL と Java 7 の違いを理解するには、本書にある ARL のキーワードと演算子のリストを参照してください。

集約

Java とは異なり、ARL には、ルール記述に使用される集約演算子があります。

匿名クラス

Java では、メソッドまたはコンストラクターの本体で直接匿名クラスを作成することができます。ARL では、匿名クラスを作成することはできません。

バッククォート

Java とは異なり、ARL では、Java で識別されるようには解析されない変数を指定するためにバッククォート (``) が使用されます。 次の例を参照してください。

String `the lazy dog` = "pluto";

キャスト演算子

C# の場合と同様に、キャスト演算子「as」を使用して、互換性のある参照タイプやヌル可能タイプの間で特定タイプの変換を実行できます。 次の例を参照してください。
AClass anObject = o as AClass;

goto

ARL では goto はサポートされていません。

内部クラス

A.this」という構文を使用すれば、エンクロージング・クラスのフィールドを参照できます (A はエンクロージング・クラスを表します)。 このメカニズムは、エンジンの特定クラスを参照するために拡張されています。 例えば、「ruleName」があいまいな場合は、次のコードをコーディングすることでルール名を出力できます。

if (RuleInstance.this != null)  note("ARL mapping of method M being called by rule "+ RuleInstance.this.ruleName);

ARL キーワード

次のリストは、ARL ルール言語におけるキーワードの完全なセットです。

abstract continue final in not queryTemplate select throw refresh
aggregate default finally insert null query signature throws retract
as do for instanceof operator once static transient void
assert else from interface out over stipulation true volatile
break enum goto match package repeatable strictfp try when
case evaluate groupby method priority restricts super typedef where
catch exists if modal private return switch update while
class explicit implements modify property rule synchronized updateEngineData xpath
conditionTemplate extends implicit native protected ruleset then updateGenerator xs
const false import new public ruleTemplate this updateGenerators  

ループ

foreach ループの構文は異なります。

スイッチ

各「case」セクションの終わりにキーワード「break」を使用する必要はありません。