agent | ::= | ( directive )* ( belief ( directive )* )* ( initial_goal ( directive )* )* ( plan ( belief )* ( directive )* )* <EOF> |
directive | ::= | "{" ( <TK_BEGIN> pred "}" agent | pred "}" ) |
belief | ::= | literal ( ":-" log_expr )? "." |
initial_goal | ::= | "!" literal "." |
plan | ::= | ( <TK_LABEL_AT> pred )? trigger ( ":" log_expr )? ( "<-" plan_body )? "." |
trigger | ::= | ( "+" | "-" | "^" ) ( ( "!" | "?" ) )? ( literal | var ) |
plan_body | ::= | ( stmtIF | stmtFOR | stmtWHILE | body_formula ) ( ";" )? ( plan_body )? |
stmtIF | ::= | <TK_IF> "(" log_expr ")" plan_term ( ( <TK_ELSE> )? plan_term )? |
stmtFOR | ::= | <TK_FOR> "(" log_expr ")" plan_term |
stmtWHILE | ::= | <TK_WHILE> "(" log_expr ")" plan_term |
body_formula | ::= | ( "!" | "!!" | "?" | "+" | ( "-" ( "+" )? ) )? log_expr |
plan_term | ::= | "{" ( ( <TK_LABEL_AT> pred )? trigger ( ":" log_expr )? ( ( "<-" | ";" ) )? )? ( plan_body )? "}" |
literal | ::= | ( ( ( <TK_NEG> )? pred ) | <TK_TRUE> | <TK_FALSE> ) |
pred | ::= | ( <ATOM> | <TK_BEGIN> | <TK_END> ) ( "(" terms ")" )? ( plan_term )* ( list )? |
terms | ::= | term ( "," term )* |
term | ::= | ( list | plan_term | log_expr ) |
list | ::= | "[" ( term_in_list ( "," term_in_list )* ( "|" ( <VAR> | <UNNAMEDVAR> | list ) )? )? "]" |
term_in_list | ::= | ( list | arithm_expr | string | plan_term ) |
log_expr | ::= | log_expr_trm ( "|" log_expr )? |
log_expr_trm | ::= | log_expr_factor ( "&" log_expr_trm )? |
log_expr_factor | ::= | ( <TK_NOT> log_expr_factor | rel_expr ) |
rel_expr | ::= | ( arithm_expr | string ) ( ( "<" | "<=" | ">" | ">=" | "==" | "\\==" | "=" | "=.." ) ( arithm_expr | string | list | plan_term ) )? |
arithm_expr | ::= | arithm_expr_trm ( ( "+" | "-" ) arithm_expr )? |
arithm_expr_trm | ::= | arithm_expr_factor ( ( "*" | "/" | <TK_INTDIV> | <TK_INTMOD> ) arithm_expr_trm )? |
arithm_expr_factor | ::= | arithm_expr_simple ( ( "**" ) arithm_expr_factor )? |
arithm_expr_simple | ::= | ( <NUMBER> | "-" arithm_expr_simple | "(" log_expr ")" | var | function ) |
function | ::= | literal |
var | ::= | ( <VAR> | <UNNAMEDVAR> ) ( list )? |
string | ::= | <STRING> |