Skip to content

Rational Agent と ThinkEngine

Itsuki Noda edited this page Feb 21, 2015 · 6 revisions

Rule Syntax

基本 syntax

 <expr> ::= <object> | <atom> | <array>
 <object> ::= { "":<head>, <slot>:<expr>, <slot>:<expr>,... }
 <head> ::= 文字列
 <atom> ::= true | false | null | 文字列
 <array> ::= [ <expr>, <expr>, ... ]

Special Forms

if 式

 {"":"if",
  "cond":<expr>,
  "then":<expr>,
  "else":<expr>}

または

 {"":"if",
  "cond":<expr>,
  "then":<expr>}
  • "cond"<expr> を評価し、その返り値が false もしくは null でなければ、"then"<expr> を実行。 そうでなければ、"else"<expr> を実行。
  • 戻り値は、最後に実行した <expr> の値。

and 式

 {"":"and",
  "body":[<expr>,<expr>,...]}
  • "body" の配列に含まれる <expr> を順に評価していき、其の戻り値が false もしくは null の場合はそこで実行を終わる。
  • 戻り値は、最後に実行した <expr> の値。

or 式

 {"":"or",
  "body":[<expr>,<expr>,...]}
  • "body" の配列に含まれる <expr> を順に評価していき、其の戻り値が false もしくは null 以外の場合はそこで実行を終わる。
  • 戻り値は、最後に実行した <expr> の値。

not 式

 {"":"not",
  "body":<expr>}
  • "body"<expr> を評価し、その戻り値が false もしくは null 時は true を、それ以外の場合は falseを返す。

proc 式

 {"":"proc",
  "body":[<expr>,<expr>,...]}

もしくは

 [<expr>,<expr>,<expr>,...]
  • <expr> を前から順に、最後まで評価していく。
  • 戻り値は、最後に実行した <expr>

true 式

 true

もしくは

 {"":true}
  • かならず true を返す。

false 式

 false

もしくは

 {"":false}
  • かならず false を返す。

null 式

 null

もしくは

 {"":null}
  • かならず null を返す。

quote 式

 {"":quote,
  "value":<expr>}
  • <expr>を評価せずにそのままの値を返す。
Clone this wiki locally