Unit |
::= |
( Signature )? ( Statement )* <EOF> |
Signature |
::= |
<SIGNATURE> IntLiteral IntLiteral <SEMICOLON> |
Statement |
::= |
Block |
|
| |
Declaration |
|
| |
ExpressionStatement |
|
| |
PrintStatement |
|
| |
DrawStatement |
|
| |
IfStatement |
|
| |
WhileStatement |
|
| |
ForStatement |
Block |
::= |
<LBRACE> ( Statement )* <RBRACE> |
Declaration |
::= |
<BOOLEAN> BooleanDeclaration <SEMICOLON> |
|
| |
<INT> IntDeclaration <SEMICOLON> |
|
| |
<DOUBLE> DoubleDeclaration <SEMICOLON> |
|
| |
<CLIFFORD> CliffordDeclaration <SEMICOLON> |
|
| |
<COLOR> ColorDeclaration <SEMICOLON> |
BooleanDeclaration |
::= |
<ID> ( <COMMA> BooleanDeclaration )? |
IntDeclaration |
::= |
<ID> ( <COMMA> IntDeclaration )? |
DoubleDeclaration |
::= |
<ID> ( <COMMA> DoubleDeclaration )? |
CliffordDeclaration |
::= |
<ID> ( <COMMA> CliffordDeclaration )? |
ColorDeclaration |
::= |
<ID> <LPAREN> DoubleLiteral <COMMA> DoubleLiteral <COMMA> DoubleLiteral <RPAREN> ( <COMMA> ColorDeclaration )? |
ExpressionStatement |
::= |
Expression <SEMICOLON> |
Expression |
::= |
Assignment |
|
| |
OrExpression |
Assignment |
::= |
<ID> ( <LBRAKET> Expression <RBRAKET> )? <ASSIGNMENT> Expression |
OrExpression |
::= |
AndExpression ( <OR> AndExpression )* |
AndExpression |
::= |
EqualityExpression ( <AND> EqualityExpression )* |
EqualityExpression |
::= |
RelationalExpression ( ( <EQUAL> | <UNEQUAL> ) RelationalExpression )* |
RelationalExpression |
::= |
Sum ( ( <GREATER> | <GREATEREQUAL> | <LOWER> | <LOWEREQUAL> ) Sum )* |
Sum |
::= |
Product ( ( <MINUS> | <PLUS> ) Product )* |
Product |
::= |
Unary ( ( <COMMUTATION> | <DIVISION> | <DUAL> | <LCONTRACTION> | <MEET> | <POWER> | <PRODUCT> | <RCONTRACTION> | <ROTATION> | <WPRODUCT> ) Unary )* |
Unary |
::= |
( <DUAL> | <MINUS> | <NOT> | <REVERSION> ) Unary |
|
| |
PrimaryExpression |
PrimaryExpression |
::= |
BooleanLiteral |
|
| |
IntLiteral |
|
| |
DoubleLiteral |
|
| |
BinaryLiteral |
|
| |
StringLiteral |
|
| |
Function |
|
| |
PointP3 |
|
| |
RotorP3 |
|
| |
Identifier |
|
| |
<LPAREN> Expression <RPAREN> |
BooleanLiteral |
::= |
( <FALSE> | <TRUE> ) |
IntLiteral |
::= |
<INTLITERAL> |
DoubleLiteral |
::= |
<DOUBLELITERAL> |
BinaryLiteral |
::= |
<BINARYLITERAL> |
StringLiteral |
::= |
<STRINGLITERAL> |
Function |
::= |
( <ABS> | <ACOS> | <ASIN> | <ATAN> | <COS> | <EXP> | <FLOOR> | <LOG> | <ROUND> | <SIN> | <SQRT> | <TAN> | <TODOUBLE> ) <LPAREN> Expression <RPAREN> |
PointP3 |
::= |
<POINTP3> <LPAREN> Expression <COMMA> Expression <COMMA> Expression <RPAREN> |
RotorP3 |
::= |
<ROTORP3> <LPAREN> Expression <COMMA> Expression <COMMA> Expression <COMMA> Expression <COMMA> Expression <COMMA> Expression <RPAREN> |
Identifier |
::= |
<ID> ( <LBRAKET> Expression <RBRAKET> )? |
PrintStatement |
::= |
<PRINT> Expression <SEMICOLON> |
DrawStatement |
::= |
<DRAW> <LPAREN> Expression <COMMA> Identifier ( <COMMA> Expression )? <RPAREN> <SEMICOLON> |
IfStatement |
::= |
<IF> <LPAREN> Expression <RPAREN> Statement ( <ELSE> Statement )? |
WhileStatement |
::= |
<WHILE> <LPAREN> Expression <RPAREN> Statement |
ForStatement |
::= |
<FOR> <LPAREN> OptionalExpression <SEMICOLON> Expression <SEMICOLON> OptionalExpression <RPAREN> Statement |
OptionalExpression |
::= |
( Expression )? |