BNF for CPAParser.jj

NON-TERMINALS

parseInput ::= ( cellProgram ) <EOF>
cellProgram ::= ( stateDescription )+
stateDescription ::= <STATE> ( <IDENTIFIER> ) <LBRACE> ( <COLOR> ( color ) )? ( <EMITS> ( emissionList ) )? <TRANSITIONS> ( transitionList ) <RBRACE>
color ::= ( ( number ) ( number ) ( number ) )
emissionList ::= ( ( emission ) ( <COMMA> emission )* )
emission ::= ( <LPAREN> ( <IDENTIFIER> ) <COMMA> ( number ) <RPAREN> )
transitionList ::= ( transition <SEMICOLON> )+
transition ::= ( ( chemicalConditionList )? <TO> ( ( division ) | ( stateChange ) ) )
division ::= ( <LPAREN> <IDENTIFIER> <COMMA> <IDENTIFIER> <RPAREN> typeCellDivision )
stateChange ::= ( <LPAREN> <IDENTIFIER> <RPAREN> )
chemicalConditionList ::= ( ( chemicalCondition ) ( <AND> chemicalCondition )* )
chemicalCondition ::= ( <LPAREN> number <LTE> <IDENTIFIER> <LTE> number <RPAREN> )
typeCellDivision ::= ( ( <AXIS> ) | ( <NORMALX> ) | ( <NORMALY> ) )
number ::= ( <INTEGER_LITERAL> )
| ( <FLOATING_POINT_LITERAL> )