<DEFAULT> SKIP : {
" "
| "\t"
| "\n"
| "\r"
}
|
<DEFAULT> MORE : {
"//" : IN_SINGLE_LINE_COMMENT
| ";" : IN_SINGLE_LINE_COMMENT
| <"/**" ~["/"]> : IN_FORMAL_COMMENT
| "/*" : IN_MULTI_LINE_COMMENT
}
|
<IN_SINGLE_LINE_COMMENT> SPECIAL : {
<SINGLE_LINE_COMMENT: "\n" | "\r" | "\r\n"> : DEFAULT
}
|
<IN_FORMAL_COMMENT> SPECIAL : {
<FORMAL_COMMENT: "*/"> : DEFAULT
}
|
<IN_MULTI_LINE_COMMENT> SPECIAL : {
<MULTI_LINE_COMMENT: "*/"> : DEFAULT
}
|
<IN_SINGLE_LINE_COMMENT,IN_FORMAL_COMMENT,IN_MULTI_LINE_COMMENT> MORE : {
<~[]>
}
|
<DEFAULT> TOKEN : {
<LEFT_BRACKET: "(">
| <RIGHT_BRACKET: ")">
| <ALIAS: "@">
}
|
<DEFAULT> TOKEN : {
<DEFINE: "define">
| <DOMAIN: "domain">
| <REQUIREMENTS: ":requirements">
| <TYPES: ":types">
| <EITHER: "either">
| <CONSTANTS: ":constants">
| <PREDICATES: ":predicates">
| <FUNCTIONS: ":functions">
| <ACTION: ":action">
| <PARAMETERS: ":parameters">
| <PRECONDITION: ":precondition">
| <EFFECT: ":effect">
| <PREFERENCE: "preference">
| <WHEN: "when">
| <DURATIVE_ACTION: ":durative-action">
| <DURATION: ":duration">
| <CONDITION: ":condition">
| <DERIVED: ":derived">
| <PROBLEM: "problem">
| <P_DOMAIN: ":domain">
| <OBJECTS: ":objects">
| <INIT: ":init">
| <GOAL: ":goal">
| <METRIC: ":metric">
| <METHOD: ":method">
| <TASK: ":task">
| <ORDERED_SUBTASKS: ":ordered-subtasks">
| <ORDERED_TASKS: ":ordered-tasks">
| <TASKS: ":tasks">
| <SUBTASKS: ":subtasks">
| <ORDERING: ":ordering">
| <DURATIVE_METHOD: ":durative-method">
}
|
<DEFAULT> TOKEN : {
<STRIPS: ":strips">
| <TYPING: ":typing">
| <NEGATIVE_PRECONDITIONS: ":negative-preconditions">
| <DISJUNCTIVE_PRECONDITIONS: ":disjunctive-preconditions">
| <EQUALITY: ":equality">
| <EXISTENTIAL_PRECONDITIONS: ":existential-preconditions">
| <UNIVERSAL_PRECONDITIONS: ":universal-preconditions">
| <QUANTIFIED_PRECONDITIONS: ":quantified-preconditions">
| <CONDITIONAL_EFFECTS: ":conditional-effects">
| <ACTION_COSTS: ":action-costs">
| <FLUENTS: ":fluents">
| <NUMERIC_FLUENTS: ":numeric-fluents">
| <OBJECT_FLUENTS: ":object-fluents">
| <GOAL_UTILITIES: ":goal-utilities">
| <ADL: ":adl">
| <DURATIVE_ACTIONS: ":durative-actions">
| <DERIVED_PREDICATES: ":derived-predicates">
| <TIMED_INITIAL_LITERALS: ":timed-initial-literals">
| <PREFERENCES: ":preferences">
| <CONSTRAINTS: ":constraints">
| <CONTINUS_EFFECTS: ":continus-effects">
| <DURATION_INEQUALITIES: ":duration-inequalities">
| <HIERARCHY: ":hierarchy">
| <HTN: ":htn">
| <METHOD_PRECONDITIONS: ":method-preconditions">
| <METHOD_CONSTRAINTS: ":method-constraints">
}
|
<DEFAULT> TOKEN : {
<GREAT: ">">
| <LESS: "<">
| <GEQUAL: ">=">
| <LEQUAL: "<=">
| <EQUAL: "=">
}
|
<DEFAULT> TOKEN : {
<MUL: "*">
| <DIV: "/">
| <ADD: "+">
| <SUB: "-">
}
|
<DEFAULT> TOKEN : {
<ASSIGN: "assign">
| <SCALE_UP: "scale-up">
| <SCALE_DOWN: "scale-down">
| <INCREASE: "increase">
| <DECREASE: "decrease">
}
|
<DEFAULT> TOKEN : {
<OR: "or">
| <AND: "and">
| <IMPLY: "imply">
| <NOT: "not">
| <FORALL: "forall">
| <EXISTS: "exists">
}
|
<DEFAULT> TOKEN : {
<ALWAYS: "always">
| <SOMETIME: "sometime">
| <WITHIN: "within">
| <AT_MOST_ONCE: "at-most-once">
| <SOMETIME_AFTER: "sometime-after">
| <SOMETIME_BEFORE: "sometime-before">
| <ALWAYS_WITHIN: "always-within">
| <HOLD_DURING: "hold-during">
| <HOLD_AFTER: "hold-after">
| <HOLD_BEFORE: "hold-before">
| <HOLD_BETWEEN: "hold-between">
| <AT: "at">
| <START: "start">
| <END: "end">
| <OVER: "over">
| <ALL: "all">
| <TOTAL_TIME: "total-time">
| <TOTAL_COST: "total-cost">
| <MAXIMIZE: "maximize">
| <MINIMIZE: "minimize">
| <IS_VIOLATED: "is-violated">
}
|
<DEFAULT> TOKEN : {
<VAR_DURATION: "?duration">
| <CONTINUOUS_VARIABLE: "#t">
| <F_DURATION: "duration">
}
|
<DEFAULT> TOKEN : {
<NUMBER_TYPE: "number">
| <OBJECT_TYPE: "object">
}
|
<DEFAULT> TOKEN : {
<VARIABLE_SYMBOL: "?" <LETTER> (<LETTER> | <SEPARATOR> | <DIGIT>)*>
| <SYMBOL: <LETTER> (<LETTER> | "-" | <DIGIT>)*>
| <NUMBER: (<DIGIT>)+ ("." (<DIGIT>)*)?>
| <#DIGIT: ["0"-"9"]>
| <#LETTER: ["a"-"z","A"-"Z","_"]>
| <#SEPARATOR: ["_","-"]>
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| right_bracket | ::= | <RIGHT_BRACKET> |
| left_bracket | ::= | <LEFT_BRACKET> |
| domain | ::= | <LEFT_BRACKET> <DEFINE> <LEFT_BRACKET> <DOMAIN> domain_name right_bracket ( require_def )? ( type_def )? ( constants_def )? ( predicates_def )? ( functions_def )? ( pddl_const )? ( structure_def )+ right_bracket <EOF> |
| domain_and_problem | ::= | <LEFT_BRACKET> <DEFINE> <LEFT_BRACKET> <DOMAIN> domain_name <RIGHT_BRACKET> ( require_def )? ( type_def )? ( constants_def )? ( predicates_def )? ( functions_def )? ( pddl_const )? ( structure_def )+ <RIGHT_BRACKET> problem |
| require_def | ::= | left_bracket <REQUIREMENTS> ( require_key )+ right_bracket |
| require_key | ::= | ( <STRIPS> | <TYPING> | <NEGATIVE_PRECONDITIONS> | <DISJUNCTIVE_PRECONDITIONS> | <EQUALITY> | <EXISTENTIAL_PRECONDITIONS> | <UNIVERSAL_PRECONDITIONS> | <QUANTIFIED_PRECONDITIONS> | <CONDITIONAL_EFFECTS> | <FLUENTS> | <NUMERIC_FLUENTS> | <OBJECT_FLUENTS> | <GOAL_UTILITIES> | <ADL> | <ACTION_COSTS> | <DURATIVE_ACTIONS> | <DERIVED_PREDICATES> | <TIMED_INITIAL_LITERALS> | <PREFERENCES> | <CONSTRAINTS> | <CONTINUS_EFFECTS> | <DURATION_INEQUALITIES> | <HIERARCHY> | <METHOD_PRECONDITIONS> | <METHOD_CONSTRAINTS> ) |
| type_def | ::= | left_bracket <TYPES> typed_list right_bracket |
| typed_list | ::= | ( left_bracket right_bracket | ( primitive_type )* ( <SUB> type typed_list )? | ( constant )* ( <SUB> type typed_list )? | ( variable )* ( <SUB> type typed_list )? ) |
| type | ::= | ( left_bracket <EITHER> ( primitive_type )+ right_bracket | primitive_type ) |
| primitive_type | ::= | ( <OBJECT_TYPE> | <NUMBER_TYPE> | <SYMBOL> ) |
| constants_def | ::= | left_bracket <CONSTANTS> typed_list right_bracket |
| constant | ::= | ( <SYMBOL> | <AT> | <END> | <START> | <OVER> ) |
| predicates_def | ::= | left_bracket <PREDICATES> ( atomic_formula_skeleton )+ right_bracket |
| comp_task_def | ::= | <LEFT_BRACKET> <TASK> task_def <RIGHT_BRACKET> |
| task_def | ::= | task_symbol <PARAMETERS> left_bracket typed_list <RIGHT_BRACKET> |
| task_symbol | ::= | <SYMBOL> |
| atomic_formula_skeleton | ::= | <LEFT_BRACKET> predicate typed_list <RIGHT_BRACKET> |
| predicate | ::= | ( <SYMBOL> | <AT> | <END> | <START> | <OVER> ) |
| variable | ::= | <VARIABLE_SYMBOL> |
| functions_def | ::= | left_bracket <FUNCTIONS> function_typed_list right_bracket |
| atomic_function_skeleton | ::= | <LEFT_BRACKET> functor typed_list <RIGHT_BRACKET> |
| functor | ::= | ( <SYMBOL> | <TOTAL_COST> | <AT> | <END> | <START> | <OVER> ) |
| function_typed_list | ::= | ( atomic_function_skeleton )* ( <SUB> function_type function_typed_list )? |
| function_type | ::= | <NUMBER_TYPE> |
| | | type | |
| con_gd | ::= | ( and_con_gd | forall_con_gd | at_end_con_gd | always_con_gd | sometime_con_gd | within_con_gd | at_most_once_con_gd | sometime_after_con_gd | sometime_before_con_gd | always_within_con_gd | hold_during_con_gd | hold_after_con_gd ) |
| and_con_gd | ::= | <LEFT_BRACKET> <AND> ( con_gd )* <RIGHT_BRACKET> |
| forall_con_gd | ::= | <LEFT_BRACKET> <FORALL> <LEFT_BRACKET> typed_list <RIGHT_BRACKET> con_gd <RIGHT_BRACKET> |
| at_end_con_gd | ::= | <LEFT_BRACKET> <AT> <END> gd <RIGHT_BRACKET> |
| always_con_gd | ::= | <LEFT_BRACKET> <ALWAYS> gd <RIGHT_BRACKET> |
| sometime_con_gd | ::= | <LEFT_BRACKET> <SOMETIME> gd <RIGHT_BRACKET> |
| within_con_gd | ::= | <LEFT_BRACKET> <WITHIN> number gd <RIGHT_BRACKET> |
| at_most_once_con_gd | ::= | <LEFT_BRACKET> <AT_MOST_ONCE> gd <RIGHT_BRACKET> |
| sometime_after_con_gd | ::= | <LEFT_BRACKET> <SOMETIME_AFTER> gd gd <RIGHT_BRACKET> |
| sometime_before_con_gd | ::= | <LEFT_BRACKET> <SOMETIME_BEFORE> gd gd <RIGHT_BRACKET> |
| always_within_con_gd | ::= | <LEFT_BRACKET> <ALWAYS_WITHIN> number gd gd <RIGHT_BRACKET> |
| hold_during_con_gd | ::= | <LEFT_BRACKET> <HOLD_DURING> number number gd <RIGHT_BRACKET> |
| hold_after_con_gd | ::= | <LEFT_BRACKET> <HOLD_AFTER> number gd <RIGHT_BRACKET> |
| gd | ::= | ( atomic_formula | and_gd | or_gd | not_gd | imply_gd | exists_gd | forall_gd | equal_gd | f_comp ) |
| equal_gd | ::= | ( not_equal_atomic_formula | equal_atomic_formula ) |
| not_equal_atomic_formula | ::= | <LEFT_BRACKET> <NOT> equal_gd <RIGHT_BRACKET> |
| equal_atomic_formula | ::= | <LEFT_BRACKET> <EQUAL> term term <RIGHT_BRACKET> |
| and_gd | ::= | <LEFT_BRACKET> <AND> ( gd )* <RIGHT_BRACKET> |
| or_gd | ::= | <LEFT_BRACKET> <OR> ( gd )* <RIGHT_BRACKET> |
| not_gd | ::= | <LEFT_BRACKET> <NOT> gd <RIGHT_BRACKET> |
| imply_gd | ::= | <LEFT_BRACKET> <IMPLY> gd gd <RIGHT_BRACKET> |
| exists_gd | ::= | <LEFT_BRACKET> <EXISTS> <LEFT_BRACKET> typed_list <RIGHT_BRACKET> gd <RIGHT_BRACKET> |
| forall_gd | ::= | <LEFT_BRACKET> <FORALL> <LEFT_BRACKET> typed_list <RIGHT_BRACKET> gd <RIGHT_BRACKET> |
| atomic_formula | ::= | <LEFT_BRACKET> predicate ( ( constant )* | ( term )* ) <RIGHT_BRACKET> |
| term | ::= | ( constant | variable ) |
| literal | ::= | ( atomic_formula | not_atomic_formula ) |
| not_atomic_formula | ::= | <LEFT_BRACKET> <NOT> atomic_formula <RIGHT_BRACKET> |
| f_comp | ::= | binary_comp |
| binary_comp | ::= | ( greater_comp | less_comp | greater_equal_comp | less_equal_comp | equal_comp ) |
| greater_comp | ::= | <LEFT_BRACKET> <GREAT> f_exp f_exp <RIGHT_BRACKET> |
| greater_equal_comp | ::= | <LEFT_BRACKET> <GEQUAL> f_exp f_exp <RIGHT_BRACKET> |
| less_equal_comp | ::= | <LEFT_BRACKET> <LEQUAL> f_exp f_exp <RIGHT_BRACKET> |
| less_comp | ::= | <LEFT_BRACKET> <LESS> f_exp f_exp <RIGHT_BRACKET> |
| equal_comp | ::= | <LEFT_BRACKET> <EQUAL> f_exp f_exp <RIGHT_BRACKET> |
| f_exp | ::= | ( number | op | f_head ) |
| number | ::= | <NUMBER> |
| op | ::= | ( binary_operation | unary_op ) |
| binary_operation | ::= | ( add_op | substract_op | multiply_op | divide_op ) |
| add_op | ::= | <LEFT_BRACKET> <ADD> f_exp f_exp <RIGHT_BRACKET> |
| substract_op | ::= | <LEFT_BRACKET> <SUB> f_exp f_exp <RIGHT_BRACKET> |
| multiply_op | ::= | <LEFT_BRACKET> <MUL> f_exp f_exp <RIGHT_BRACKET> |
| divide_op | ::= | <LEFT_BRACKET> <DIV> f_exp f_exp <RIGHT_BRACKET> |
| unary_op | ::= | <LEFT_BRACKET> <SUB> f_exp <RIGHT_BRACKET> |
| f_head | ::= | <LEFT_BRACKET> functor ( term )* <RIGHT_BRACKET> |
| | | functor | |
| structure_def | ::= | ( action_def | durative_action_def | derived_def | htn_action_def | comp_task_def | method_def | durative_method_def ) |
| method_def | ::= | left_bracket <METHOD> method_name <PARAMETERS> <LEFT_BRACKET> typed_list <RIGHT_BRACKET> <TASK> task_formula ( <PRECONDITION> pre_gd )? task_network right_bracket |
| durative_method_def | ::= | left_bracket <DURATIVE_METHOD> method_name <PARAMETERS> <LEFT_BRACKET> typed_list <RIGHT_BRACKET> <TASK> task_formula ( <DURATION> method_duration_constraint )? ( <CONDITION> da_gd )? durative_task_network right_bracket |
| task_network | ::= | ( <TASKS> | <SUBTASKS> ) subtask_def ( <ORDERING> htn_ordering_constraints_def )? ( <CONSTRAINTS> htn_constraints_def )? |
| | | ( <ORDERED_TASKS> | <ORDERED_SUBTASKS> ) subtask_def ( <CONSTRAINTS> htn_constraints_def )? | |
| durative_task_network | ::= | ( <TASKS> | <SUBTASKS> ) subtask_def ( <ORDERING> durative_htn_ordering_constraints_def )? ( <CONSTRAINTS> htn_constraints_def )? |
| | | ( <ORDERED_TASKS> | <ORDERED_SUBTASKS> ) subtask_def ( <CONSTRAINTS> htn_constraints_def )? | |
| method_name | ::= | <SYMBOL> |
| subtask_def | ::= | ( subtask | and_subtask | <LEFT_BRACKET> <RIGHT_BRACKET> ) |
| and_subtask | ::= | <LEFT_BRACKET> <AND> ( subtask )* <RIGHT_BRACKET> |
| subtask | ::= | ( <LEFT_BRACKET> task_id_symbol task_formula <RIGHT_BRACKET> | task_formula ) |
| task_formula | ::= | <LEFT_BRACKET> task_symbol ( ( constant )* | ( term )* ) <RIGHT_BRACKET> |
| htn_ordering_constraints_def | ::= | ( empty_and | htn_ordering_constraint | and_ordering_constraints ) |
| durative_htn_ordering_constraints_def | ::= | ( empty_and | durative_htn_ordering_constraint | durative_and_ordering_constraints ) |
| and_ordering_constraints | ::= | <LEFT_BRACKET> <AND> ( htn_ordering_constraint )* <RIGHT_BRACKET> |
| durative_and_ordering_constraints | ::= | <LEFT_BRACKET> <AND> ( durative_htn_ordering_constraint )* <RIGHT_BRACKET> |
| htn_ordering_constraint | ::= | less_htn_ordering_constraint |
| durative_htn_ordering_constraint | ::= | ( less_htn_ordering_constraint | equal_htn_temporal_ordering_constraint | less_htn_temporal_ordering_constraint | less_or_equal_htn_temporal_ordering_constraint | great_htn_temporal_ordering_constraint | great_or_equal_htn_temporal_ordering_constraint | not_equal_htn_temporal_ordering_constraint ) |
| less_htn_ordering_constraint | ::= | <LEFT_BRACKET> <LESS> task_id task_id <RIGHT_BRACKET> |
| equal_htn_temporal_ordering_constraint | ::= | <LEFT_BRACKET> <EQUAL> timed_task_id timed_task_id <RIGHT_BRACKET> |
| less_htn_temporal_ordering_constraint | ::= | <LEFT_BRACKET> <LESS> timed_task_id timed_task_id <RIGHT_BRACKET> |
| less_or_equal_htn_temporal_ordering_constraint | ::= | <LEFT_BRACKET> <LEQUAL> timed_task_id timed_task_id <RIGHT_BRACKET> |
| great_htn_temporal_ordering_constraint | ::= | <LEFT_BRACKET> <GREAT> timed_task_id timed_task_id <RIGHT_BRACKET> |
| great_or_equal_htn_temporal_ordering_constraint | ::= | <LEFT_BRACKET> <GEQUAL> timed_task_id timed_task_id <RIGHT_BRACKET> |
| not_equal_htn_temporal_ordering_constraint | ::= | <LEFT_BRACKET> <NOT> equal_htn_temporal_ordering_constraint <RIGHT_BRACKET> |
| task_id_symbol | ::= | <SYMBOL> |
| task_id | ::= | task_id_symbol |
| timed_task_id | ::= | ( start_task_id | end_task_id ) |
| start_task_id | ::= | <LEFT_BRACKET> <START> task_id_symbol <RIGHT_BRACKET> |
| end_task_id | ::= | <LEFT_BRACKET> <END> task_id_symbol <RIGHT_BRACKET> |
| htn_constraints_def | ::= | ( empty_and | htn_constraint | and_htn_constraints ) |
| and_htn_constraints | ::= | <LEFT_BRACKET> <AND> ( htn_constraint )+ <RIGHT_BRACKET> |
| htn_constraint | ::= | ( equal_atomic_formula | not_equal_atomic_formula | hold_before_htn_constraint | hold_after_htn_constraint | hold_between_htn_constraint | hold_during_htn_constraint | at_end_htn_constraint | at_start_htn_constraint | always_htn_constraint | at_most_one_htn_constraint | sometime_htn_constraint | sometime_before_htn_constraint | sometime_after_htn_constraint ) |
| hold_before_htn_constraint | ::= | <LEFT_BRACKET> <HOLD_BEFORE> task_id gd <RIGHT_BRACKET> |
| hold_after_htn_constraint | ::= | <LEFT_BRACKET> <HOLD_AFTER> task_id effect <RIGHT_BRACKET> |
| hold_between_htn_constraint | ::= | <LEFT_BRACKET> <HOLD_BETWEEN> task_id task_id gd <RIGHT_BRACKET> |
| hold_during_htn_constraint | ::= | <LEFT_BRACKET> <HOLD_DURING> task_id task_id gd <RIGHT_BRACKET> |
| at_end_htn_constraint | ::= | <LEFT_BRACKET> <AT> <END> task_id effect <RIGHT_BRACKET> |
| at_start_htn_constraint | ::= | <LEFT_BRACKET> <AT> <START> task_id gd <RIGHT_BRACKET> |
| always_htn_constraint | ::= | <LEFT_BRACKET> <ALWAYS> task_id gd <RIGHT_BRACKET> |
| at_most_one_htn_constraint | ::= | <LEFT_BRACKET> <AT_MOST_ONCE> task_id gd <RIGHT_BRACKET> |
| sometime_htn_constraint | ::= | <LEFT_BRACKET> <SOMETIME> task_id gd <RIGHT_BRACKET> |
| sometime_before_htn_constraint | ::= | <LEFT_BRACKET> <SOMETIME_BEFORE> task_id gd <RIGHT_BRACKET> |
| sometime_after_htn_constraint | ::= | <LEFT_BRACKET> <SOMETIME_AFTER> task_id gd <RIGHT_BRACKET> |
| derived_def | ::= | left_bracket <DERIVED> atomic_formula_skeleton gd right_bracket |
| action_def | ::= | left_bracket <ACTION> action_name <PARAMETERS> <LEFT_BRACKET> typed_list <RIGHT_BRACKET> <PRECONDITION> pre_gd <EFFECT> effect right_bracket |
| htn_action_def | ::= | left_bracket <ACTION> action_name <PARAMETERS> <LEFT_BRACKET> typed_list <RIGHT_BRACKET> ( <PRECONDITION> pre_gd )? ( <EFFECT> effect )? right_bracket |
| action_name | ::= | <SYMBOL> |
| pre_gd | ::= | ( pref_gd | and_pre_gd | forall_pre_gd | empty_or | gd ) |
| empty_or | ::= | <LEFT_BRACKET> <RIGHT_BRACKET> |
| empty_and | ::= | <LEFT_BRACKET> <RIGHT_BRACKET> |
| and_pre_gd | ::= | <LEFT_BRACKET> <AND> ( pre_gd )* <RIGHT_BRACKET> |
| forall_pre_gd | ::= | <LEFT_BRACKET> <FORALL> <LEFT_BRACKET> typed_list <RIGHT_BRACKET> pre_gd <RIGHT_BRACKET> |
| pref_gd | ::= | <LEFT_BRACKET> <PREFERENCE> ( pref_name )? gd <RIGHT_BRACKET> |
| pref_name | ::= | <SYMBOL> |
| effect | ::= | ( empty_or | and_c_effect | c_effect ) |
| and_c_effect | ::= | <LEFT_BRACKET> <AND> ( c_effect )* <RIGHT_BRACKET> |
| c_effect | ::= | ( forall_effect | when_con_effect | p_effect ) |
| forall_effect | ::= | <LEFT_BRACKET> <FORALL> <LEFT_BRACKET> typed_list <RIGHT_BRACKET> effect <RIGHT_BRACKET> |
| when_con_effect | ::= | <LEFT_BRACKET> <WHEN> gd cond_effect <RIGHT_BRACKET> |
| cond_effect | ::= | ( and_p_effect | p_effect ) |
| and_p_effect | ::= | <LEFT_BRACKET> <AND> ( p_effect )* <RIGHT_BRACKET> |
| p_effect | ::= | ( assign_op | increase_total_cost | literal ) |
| increase_total_cost | ::= | <LEFT_BRACKET> <INCREASE> total_cost numeric_term <RIGHT_BRACKET> |
| total_cost | ::= | <LEFT_BRACKET> <TOTAL_COST> <RIGHT_BRACKET> |
| numeric_term | ::= | ( f_head | number ) |
| assign_op | ::= | ( assign | scale_up | scale_down | increase | decrease ) |
| assign | ::= | <LEFT_BRACKET> <ASSIGN> f_head f_exp <RIGHT_BRACKET> |
| scale_up | ::= | <LEFT_BRACKET> <SCALE_UP> f_head f_exp <RIGHT_BRACKET> |
| scale_down | ::= | <LEFT_BRACKET> <SCALE_DOWN> f_head f_exp <RIGHT_BRACKET> |
| increase | ::= | <LEFT_BRACKET> <INCREASE> f_head f_exp <RIGHT_BRACKET> |
| decrease | ::= | <LEFT_BRACKET> <DECREASE> f_head f_exp <RIGHT_BRACKET> |
| durative_action_def | ::= | left_bracket <DURATIVE_ACTION> da_symbol <PARAMETERS> <LEFT_BRACKET> typed_list <RIGHT_BRACKET> <DURATION> duration_constraint <CONDITION> da_gd <EFFECT> da_effect right_bracket |
| da_symbol | ::= | <SYMBOL> |
| duration_constraint | ::= | ( empty_or | and_simple_duration_constraint | simple_duration_constraint ) |
| and_simple_duration_constraint | ::= | <LEFT_BRACKET> <AND> ( simple_duration_constraint )+ <RIGHT_BRACKET> |
| simple_duration_constraint | ::= | ( d_op | at_simple_duration_constraint ) |
| at_simple_duration_constraint | ::= | ( at_start_simple_duration_constraint | at_end_simple_duration_constraint ) |
| at_start_simple_duration_constraint | ::= | <LEFT_BRACKET> <AT> <START> simple_duration_constraint <RIGHT_BRACKET> |
| at_end_simple_duration_constraint | ::= | <LEFT_BRACKET> <AT> <END> simple_duration_constraint <RIGHT_BRACKET> |
| d_op | ::= | ( equal_d_op | gequal_d_op | lequal_d_op ) |
| equal_d_op | ::= | <LEFT_BRACKET> <EQUAL> var_duration d_value <RIGHT_BRACKET> |
| gequal_d_op | ::= | <LEFT_BRACKET> <GEQUAL> var_duration d_value <RIGHT_BRACKET> |
| lequal_d_op | ::= | <LEFT_BRACKET> <LEQUAL> var_duration d_value <RIGHT_BRACKET> |
| var_duration | ::= | <VAR_DURATION> |
| d_value | ::= | ( number | f_exp ) |
| method_duration_constraint | ::= | ( empty_or | simple_method_duration_constraint | and_simple_method_duration_constraint ) |
| and_simple_method_duration_constraint | ::= | <LEFT_BRACKET> <AND> ( simple_method_duration_constraint )+ <RIGHT_BRACKET> |
| simple_method_duration_constraint | ::= | ( equal_method_duration_constraint | great_method_duration_constraint | great_or_equal_method_duration_constraint | less_method_duration_constraint | less_or_equal_method_duration_constraint | at_simple_duration_constraint ) |
| equal_method_duration_constraint | ::= | <LEFT_BRACKET> <EQUAL> duration d_value <RIGHT_BRACKET> |
| great_method_duration_constraint | ::= | <LEFT_BRACKET> <GREAT> duration d_value <RIGHT_BRACKET> |
| great_or_equal_method_duration_constraint | ::= | <LEFT_BRACKET> <GEQUAL> duration d_value <RIGHT_BRACKET> |
| less_method_duration_constraint | ::= | <LEFT_BRACKET> <LESS> duration d_value <RIGHT_BRACKET> |
| less_or_equal_method_duration_constraint | ::= | <LEFT_BRACKET> <LEQUAL> duration d_value <RIGHT_BRACKET> |
| duration | ::= | ( var_duration | f_duration ) |
| f_duration | ::= | <LEFT_BRACKET> <F_DURATION> task_id_symbol <RIGHT_BRACKET> |
| temporal_simple_method_duration_constraint | ::= | ( at_start_simple_method_duration_constraint | at_end_simple_method_duration_constraint ) |
| at_start_simple_method_duration_constraint | ::= | <LEFT_BRACKET> <AT> <START> simple_duration_constraint <RIGHT_BRACKET> |
| at_end_simple_method_duration_constraint | ::= | <LEFT_BRACKET> <AT> <END> simple_duration_constraint <RIGHT_BRACKET> |
| da_gd | ::= | ( pref_timed_gd | and_da_gd | forall_da_gd ) |
| forall_da_gd | ::= | <LEFT_BRACKET> <FORALL> <LEFT_BRACKET> typed_list <RIGHT_BRACKET> da_gd <RIGHT_BRACKET> |
| and_da_gd | ::= | <LEFT_BRACKET> <AND> ( da_gd )* <RIGHT_BRACKET> |
| pref_timed_gd | ::= | ( timed_gd | named_pref_timed_gd ) |
| named_pref_timed_gd | ::= | <LEFT_BRACKET> <PREFERENCE> ( pref_name )? timed_gd <RIGHT_BRACKET> |
| timed_gd | ::= | ( at_timed_gd | over_timed_gd ) |
| over_timed_gd | ::= | <LEFT_BRACKET> <OVER> <ALL> gd <RIGHT_BRACKET> |
| at_timed_gd | ::= | ( at_start_timed_gd | at_end_timed_gd ) |
| at_start_timed_gd | ::= | <LEFT_BRACKET> <AT> <START> gd <RIGHT_BRACKET> |
| at_end_timed_gd | ::= | <LEFT_BRACKET> <AT> <END> gd <RIGHT_BRACKET> |
| da_effect | ::= | ( empty_and | and_da_effect | timed_effect | forall_da_effect | when_da_effect | da_assign_op ) |
| da_assign_op | ::= | ( da_assign | da_scale_up | da_scale_down | da_increase | da_decrease ) |
| da_assign | ::= | <LEFT_BRACKET> <ASSIGN> ( ( f_head f_exp_da ) | ( f_exp_da f_head ) ) <RIGHT_BRACKET> |
| da_scale_up | ::= | <LEFT_BRACKET> <SCALE_UP> ( ( f_head f_exp_da ) | ( f_exp_da f_head ) ) <RIGHT_BRACKET> |
| da_scale_down | ::= | <LEFT_BRACKET> <SCALE_DOWN> ( ( f_head f_exp_da ) | ( f_exp_da f_head ) ) <RIGHT_BRACKET> |
| da_increase | ::= | <LEFT_BRACKET> <INCREASE> ( ( f_head f_exp_da ) | ( f_exp_da f_head ) ) <RIGHT_BRACKET> |
| da_decrease | ::= | <LEFT_BRACKET> <DECREASE> ( ( f_head f_exp_da ) | ( f_exp_da f_head ) ) <RIGHT_BRACKET> |
| when_da_effect | ::= | <LEFT_BRACKET> <WHEN> da_gd da_effect <RIGHT_BRACKET> |
| forall_da_effect | ::= | <LEFT_BRACKET> <FORALL> <LEFT_BRACKET> typed_list <RIGHT_BRACKET> da_effect <RIGHT_BRACKET> |
| and_da_effect | ::= | <LEFT_BRACKET> <AND> ( da_effect )* <RIGHT_BRACKET> |
| timed_effect | ::= | ( at_a_effect | assign_op_t ) |
| at_f_assign_da | ::= | ( at_start_f_assign_da | at_end_f_assign_da ) |
| at_start_f_assign_da | ::= | <LEFT_BRACKET> <AT> <START> f_assign_da <RIGHT_BRACKET> |
| at_end_f_assign_da | ::= | <LEFT_BRACKET> <AT> <END> f_assign_da <RIGHT_BRACKET> |
| at_a_effect | ::= | ( at_start_a_effect | at_end_a_effect ) |
| a_effect | ::= | ( f_assign_da | literal | when_con_effect | forall_effect ) |
| at_start_a_effect | ::= | <LEFT_BRACKET> <AT> <START> a_effect <RIGHT_BRACKET> |
| at_end_a_effect | ::= | <LEFT_BRACKET> <AT> <END> a_effect <RIGHT_BRACKET> |
| assign_op_t | ::= | ( increase_assign_op_t | decrease_assign_op_t ) |
| increase_assign_op_t | ::= | <LEFT_BRACKET> <INCREASE> f_head f_exp_t <RIGHT_BRACKET> |
| decrease_assign_op_t | ::= | <LEFT_BRACKET> <DECREASE> f_head f_exp_t <RIGHT_BRACKET> |
| f_exp_t | ::= | ( <LEFT_BRACKET> <MUL> continuous_variable f_exp <RIGHT_BRACKET> | <LEFT_BRACKET> <MUL> f_exp continuous_variable <RIGHT_BRACKET> | continuous_variable ) |
| continuous_variable | ::= | <CONTINUOUS_VARIABLE> |
| f_assign_da | ::= | ( da_assign | da_scale_up | da_scale_down | da_increase | da_decrease ) |
| f_exp_da | ::= | ( da_op | var_duration | f_exp ) |
| da_op | ::= | ( da_add_op | da_substract_op | da_multiply_op | da_divide_op ) |
| da_add_op | ::= | <LEFT_BRACKET> <ADD> ( ( f_head f_exp_da ) | ( f_exp_da f_head ) ) <RIGHT_BRACKET> |
| da_substract_op | ::= | <LEFT_BRACKET> <SUB> ( ( f_head ( f_exp_da )? ) | ( ( f_exp_da )? f_head ) ) <RIGHT_BRACKET> |
| da_multiply_op | ::= | <LEFT_BRACKET> <MUL> ( ( f_head f_exp_da ) | ( f_exp_da f_head ) ) <RIGHT_BRACKET> |
| da_divide_op | ::= | <LEFT_BRACKET> <DIV> ( ( f_head f_exp_da ) | ( f_exp_da f_head ) ) <RIGHT_BRACKET> |
| problem | ::= | ( htn_problem | pddl_problem ) |
| pddl_problem | ::= | <LEFT_BRACKET> <DEFINE> <LEFT_BRACKET> <PROBLEM> problem_name <RIGHT_BRACKET> <LEFT_BRACKET> <P_DOMAIN> domain_problem_name <RIGHT_BRACKET> ( require_def )? ( object_declaration )? init goal ( pddl_const )? ( metric_spec )? <RIGHT_BRACKET> <EOF> |
| htn_problem | ::= | <LEFT_BRACKET> <DEFINE> <LEFT_BRACKET> <PROBLEM> problem_name <RIGHT_BRACKET> <LEFT_BRACKET> <P_DOMAIN> domain_problem_name <RIGHT_BRACKET> ( require_def )? ( object_declaration )? <LEFT_BRACKET> <HTN> ( <PARAMETERS> <LEFT_BRACKET> typed_list <RIGHT_BRACKET> )? ( task_network | durative_task_network ) <RIGHT_BRACKET> init ( goal )? ( metric_spec )? <RIGHT_BRACKET> <EOF> |
| problem_name | ::= | <SYMBOL> |
| domain_problem_name | ::= | <SYMBOL> |
| domain_name | ::= | <SYMBOL> |
| object_declaration | ::= | left_bracket <OBJECTS> typed_list right_bracket |
| init | ::= | left_bracket <INIT> ( init_el )* right_bracket |
| init_el | ::= | ( timed_literal | literal | equal_init_el ) |
| equal_init_el | ::= | <LEFT_BRACKET> <EQUAL> constant_f_head number <RIGHT_BRACKET> |
| timed_literal | ::= | <LEFT_BRACKET> <AT> number literal <RIGHT_BRACKET> |
| goal | ::= | left_bracket <GOAL> pddl_goal right_bracket |
| pddl_goal | ::= | pre_gd |
| pddl_const | ::= | left_bracket <CONSTRAINTS> pref_con_gd right_bracket |
| pref_con_gd | ::= | ( and_pref_con_gd | forall_pref_con_gd | named_pref_con_gd | con_gd ) |
| and_pref_con_gd | ::= | <LEFT_BRACKET> <AND> ( pref_con_gd )* <RIGHT_BRACKET> |
| named_pref_con_gd | ::= | <LEFT_BRACKET> <PREFERENCE> ( pref_name )? con_gd <RIGHT_BRACKET> |
| forall_pref_con_gd | ::= | <LEFT_BRACKET> <FORALL> <LEFT_BRACKET> typed_list <RIGHT_BRACKET> pref_con_gd <RIGHT_BRACKET> |
| metric_spec | ::= | ( maximize | minimize ) |
| maximize | ::= | <LEFT_BRACKET> <METRIC> <MAXIMIZE> metric_f_exp <RIGHT_BRACKET> |
| minimize | ::= | <LEFT_BRACKET> <METRIC> <MINIMIZE> metric_f_exp <RIGHT_BRACKET> |
| metric_f_exp | ::= | ( op_metric_f_exp | number | constant_f_head | total_time | violated_pref_exp ) |
| violated_pref_exp | ::= | <LEFT_BRACKET> <IS_VIOLATED> pref_name <RIGHT_BRACKET> |
| constant_f_head | ::= | <LEFT_BRACKET> functor ( constant )* <RIGHT_BRACKET> |
| total_time | ::= | ( <LEFT_BRACKET> <TOTAL_TIME> <RIGHT_BRACKET> | <TOTAL_TIME> ) |
| op_metric_f_exp | ::= | ( add_op_metric_f_exp | substract_op_metric_f_exp | multi_op_metric_f_exp | div_op_metric_f_exp ) |
| add_op_metric_f_exp | ::= | <LEFT_BRACKET> <ADD> metric_f_exp ( metric_f_exp )+ <RIGHT_BRACKET> |
| substract_op_metric_f_exp | ::= | <LEFT_BRACKET> <SUB> metric_f_exp ( metric_f_exp )? <RIGHT_BRACKET> |
| div_op_metric_f_exp | ::= | <LEFT_BRACKET> <DIV> metric_f_exp metric_f_exp <RIGHT_BRACKET> |
| multi_op_metric_f_exp | ::= | <LEFT_BRACKET> <MUL> metric_f_exp ( metric_f_exp )+ <RIGHT_BRACKET> |