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」を使用する必要はありません。