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