| ID | ::= | <ID> | 
| IDT | ::= | <IDT> | 
| VALUE | ::= | ( <IDT> | <ID> | <NUMBER> ) | 
| Input | ::= | ( declarations )? <EOF> | 
| declarations | ::= | ( instanceTerm | varsDecls | ruleDecls | enumDecls | comment | parseExpression | consDecls )+ | 
| comment | ::= | ( "--" directive ) | 
| instanceTerm | ::= | ( <ID> <IDT> <IDT> ) | 
| directive | ::= | ( "@interval" "[" <NUMBER> "," <NUMBER> "]" | "@delta" <NUMBER> ) | 
| enumDecls | ::= | ( <DATA> IDT "=" IDT enumList ) | 
| enumList | ::= | ( "|" IDT )* | 
| consDecls | ::= | ( ID "::" IDT ID "=" VALUE ) | 
| varsDecls | ::= | ( ID "::" <DYNAMIC> IDT ID "=" <INITVAL> "\"" <ID> "\"" VALUE ) | 
| ruleDecls | ::= | ( ID "::" <RULE> ID "=" IfStmt ) | 
| IfStmt | ::= | <IF> logicExpression <THEN> stmt <ELSE> stmt | 
| stmt | ::= | ( ( <ASMSKIP> | ID ":=" logicExpression | IfStmt | <DO> ( stmt )+ ) ) | 
| parseExpression | ::= | <IF> logicExpression | 
| logicExpression | ::= | andLogicExpr ( <OR> andLogicExpr )* | 
| andLogicExpr | ::= | notExpr ( <AND> notExpr )* | 
| notExpr | ::= | ( <NOT> logicElement | logicElement ) | 
| logicElement | ::= | mathExpression ( <EQ> mathExpression | <NEQ> mathExpression | <LT> mathExpression | <LE> mathExpression | <GT> mathExpression | <GE> mathExpression )? | 
| mathExpression | ::= | mathTerm ( <PLUS> mathTerm | <MINUS> mathTerm )* | 
| mathTerm | ::= | unary ( <MULT> unary | <DIV> unary )* | 
| unary | ::= | <MINUS> mathElement | 
| | | mathElement | |
| mathElement | ::= | ( <NUMBER> | ID | IDT | "(" logicExpression ")" ) |