ParseCollageGrammar | ::= | ( ParseOption )* ParseGrammar ParseDerivation <EOF> |
ParseOption | ::= | <SET> ParseIdentifier <ASSIGN> ( ParsePoints | ParsePoint | ParseNumber | ParseString | ParseBoolean | ParsePart | ParseEdge ) |
| | <DISPLAY> ParseIdentifier ParseParameters | |
| | PtOperation | |
ParseGrammar | ::= | <GRAMMAR> ParseStartCollage ( ParseRule )* |
ParseStartCollage | ::= | <START> ParseCollage |
ParseCollage | ::= | ( ParseCollageElement )* <ENDCOLLAGE> |
ParseCollageElement | ::= | ParsePins |
| | ParsePart | |
| | ParseEdge | |
| | PtOperation | |
ParsePins | ::= | <PINS> ParsePoints |
ParsePart | ::= | <PART> ( PtOperation )? ( ParseLabel ParseIdentifier ParseParameters | <IDENTIFIER> ) ( PtOperation )? |
ParseParameters | ::= | <LPAREN> ( ParseParameter )* <RPAREN> |
ParseParameter | ::= | ParseIdentifier <ASSIGN> ( ParsePoints | ParsePoint | ParseNumber | ParseString ) |
ParseEdge | ::= | <EDGE> ( PtOperation )? ( ParseLabel ParsePoints | <IDENTIFIER> ) ( PtOperation )? |
ParseRule | ::= | <RULE> ( <LBRACKET> ParseLabel <RBRACKET> )? ParseLabel ( ParseRuleProb )? ParseCollage ( <CONTEXT> ( ParseAnyOf )? ( ParseDelete )? ParseCollage )? ( <NEGATIVE> <CONTEXT> ( ParseAnyOf )? ParseCollage )? ( <TABLE> ParseNumber )? |
ParseRuleProb | ::= | <PROB> ParseNumber |
ParseAnyOf | ::= | <ANY> <OF> |
ParseDelete | ::= | <DELETE> |
ParsePoints | ::= | <LBRACKET> ParsePointsTerm ( ( <PLUS> | <MINUS> | <STAR> | <SLASH> ) ParsePointTerm )? <RBRACKET> |
ParsePointsTerm | ::= | AddPoint ( AddPoint )+ |
| | <IDENTIFIER> | |
AddPoint | ::= | ParsePoint |
ParsePoint | ::= | <LPAREN> ParsePointTerm <PLUS> ParsePointTerm <RPAREN> |
| | <LPAREN> ParsePointTerm <MINUS> ParsePointTerm <RPAREN> | |
| | <LPAREN> ParsePointTerm <STAR> ParsePointTerm <RPAREN> | |
| | <LPAREN> ParsePointTerm <STAR> ParsePointTerm <RPAREN> | |
| | ParsePointTerm | |
ParsePointTerm | ::= | <LPAREN> ParseNumber <COMMA> ParseNumber ( <RPAREN> | <COMMA> ParseNumber <RPAREN> ) |
| | <IDENTIFIER> | |
ParseDerivation | ::= | <DERIVATION> ( ParseDerivEntry )* |
ParseDerivEntry | ::= | <UNTIL> ParseNumber <DO> ParseNumber |
PtOperation | ::= | <LBRACE> ( <PUSH> NewPartTrans | <POP> )* <RBRACE> |
NewPartTrans | ::= | <MAP> ParsePoints <TO> ParsePoints |
| | <TRANSLATE> ParsePoint | |
| | <SCALE> ParsePoint | |
| | <ROTATE> ( ParsePoint )? <BY> ParseNumber | |
ParseNumber | ::= | ( ParseProduct <PLUS> ParseNumber | ParseProduct <MINUS> ParseNumber | ParseProduct ) |
ParseProduct | ::= | ( ParseTerm <STAR> ParseProduct | ParseTerm <SLASH> ParseProduct | ParseTerm ) |
ParseTerm | ::= | ( <FLOATING_POINT_LITERAL> | <INTEGER_LITERAL> | <IDENTIFIER> | <LPAREN> ParseNumber <RPAREN> | <SIN> <LPAREN> ParseNumber <RPAREN> | <COS> <LPAREN> ParseNumber <RPAREN> | <TAN> <LPAREN> ParseNumber <RPAREN> | <ASIN> <LPAREN> ParseNumber <RPAREN> | <ACOS> <LPAREN> ParseNumber <RPAREN> | <ATAN> <LPAREN> ParseNumber <RPAREN> | <SQRT> <LPAREN> ParseNumber <RPAREN> | <LOG> <LPAREN> ParseNumber <RPAREN> | <EXP> <LPAREN> ParseNumber <RPAREN> | <POWER> <LPAREN> ParseNumber <COMMA> ParseNumber <RPAREN> | <MIN> <LPAREN> ParseNumber <COMMA> ParseNumber <RPAREN> | <MAX> <LPAREN> ParseNumber <COMMA> ParseNumber <RPAREN> | <ATAN2> <LPAREN> ParseNumber <COMMA> ParseNumber <RPAREN> | <RANDOM> ( <LPAREN> <RPAREN> )? | <EULER> ( <LPAREN> <RPAREN> )? | <PI> ( <LPAREN> <RPAREN> )? | <ABS> <LPAREN> ParseNumber <RPAREN> | <FLOOR> <LPAREN> ParseNumber <RPAREN> | <CEIL> <LPAREN> ParseNumber <RPAREN> | <RINT> <LPAREN> ParseNumber <RPAREN> | <RAD> <LPAREN> ParseNumber <RPAREN> ) |
ParseLabel | ::= | ( ParseString | ParseCharacter | ParseIdentifier ) |
ParseString | ::= | <STRING_LITERAL> |
ParseCharacter | ::= | <CHARACTER_LITERAL> |
ParseBoolean | ::= | <BOOL_TRUE> |
| | <BOOL_FALSE> | |
ParseIdentifier | ::= | <IDENTIFIER> |