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