Basic Name Conventions:
OP_FILE ::= /* empty */
| OP OP_FILE
OP ::= constantname ":v" PARDEC ":p" PRECONDS ":e" EFFECTS
PARDEC ::= /* empty */
| variablename* typename PARDEC
PRECONDS ::= /* empty */
| RESOURCE-REQ PRECONDS
| FACT PRECONDS
FACT ::= /* empty */
| [!] predicatename "(" NAMELIST ")"
| [!] "eq" "(" varname varname ")"
| [!] "eq" "(" varname constname ")"
NAMELIST ::= /* empty */
| constantname NAMELIST
| variablename NAMELIST
RESOURCE-REQ ::= COMPAR "(" rvarname number ")"
| COMPAR "(" rvarname database ")"
| COMPAR "(" rvarname database OP number ")"
EFFECTS ::= FACT* ";" COND-EFF QUANT-EFF RES-EFF "."
COND-EFF ::= /* empty */
| FACT+ "=>" FACT+ ";" COND-EFF
QUANT-EFF ::= /* empty */
| ALL PARDEC FACT* "=>" FACT+ ";" QUANT-EFF
RES-EFF ::= /* empty */
| rvarname ASSIGN number ";" RES-EFF
| rvarname ASSIGN database ";" RES-EFF
| rvarname ASSIGN database OP number ";" RES-EFF
| rvarname ASSIGN number "*" rvarname "+" number
";" RES-EFF
COMPAR ::= ">" | "=" | "<"
ASSIGN ::= "+=" | "-=" | ":="
OP ::= "+" | "-" | "*" | "/"
Effects are a possibly empty list of literals, followed by conditional
non-quantified effects, followed by universally quantified conditional
effects. The effect condition in quantified effects can be
empty. Resource effects are listed last. The last effect must be
followed by ".", not by ";." as the grammer suggests. No ADD and DEL
effects are allowed anymore. If you have a predicate without any
parameters, you still have to add the "()", as in arm-empty(). Names
should not be longer than 256 characters. Equality and Disequality
should never occur in effects. Examples of accepted operator files can
be found in our domain collection.