| 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 ")" ) |