我们小组也在作OFBiz的开发,我正好负责rule engin这部分.在rule Engineer部分的源码中找到了Logikus 的部分语法,我想把这部分语法完整的说清楚.有感兴趣的朋友一起来作一下logikus语法说明书.我Email:yang_ali@163.net
Logikus语法如下:
axiom = structure (ruleDef | Empty);
structure = functor ('(' commaList(term) ')');
functor = '.' | LowercaseWord | UppercaseWord;
term = structure | Num | QuotedString | list | variable;
variable = LowercaseWord | UppercaseWord | '_';
重要:
ruleDef = ":-" commaList(condition);
condition = structure | not | evaluation | comparison | list;
not = "not" structure ;
evaluation = '#' '(' arg ',' arg ')';
comparison = operator '(' arg ',' arg ')';
arg = expression | functor;
operator = '<' | '>' | '=' | "<=" | ">=" | "!=" ;
expression = phrase ('+' phrase | '-' phrase)*;
phrase = factor ('*' factor | '/' factor)*;
factor = '(' expression ')' | Num | QuotedString | variable;
list = '[' (listContents | Empty) ']';
listContents = commaList(term) listTail;
listTail = ('|' (variable | list)) | Empty;
commaList(p) = p (',' p)*;