Implement operator precedence with and without parenthesis

This commit is contained in:
Marvin Kaiser
2020-02-03 16:35:29 +01:00
parent a2c9625691
commit 34253a70ba
5 changed files with 117 additions and 37 deletions

View File

@@ -65,19 +65,20 @@ return_statement
expression
: atom #atomExpression
| OPAR lhs=expression ADD rhs=expression CPAR #additionExpression
| OPAR lhs=expression SUB rhs=expression CPAR #substractionExpression
| OPAR lhs=expression MUL rhs=expression CPAR #multiplicationExpression
| OPAR lhs=expression DIV rhs=expression CPAR #divisionExpression
| OPAR lhs=expression MOD rhs=expression CPAR #moduloExpression
| OPAR lhs=expression EQEQ rhs=expression CPAR #equalityExpression
| OPAR lhs=expression NEQ rhs=expression CPAR #NotEqualityExpression
| OPAR lhs=expression LT rhs=expression CPAR #lessThanExpression
| OPAR lhs=expression GT rhs=expression CPAR #greaterThanExpression
| OPAR lhs=expression LTE rhs=expression CPAR #lessThanOrEqualToExpression
| OPAR lhs=expression GTE rhs=expression CPAR #GreaterThanOrEqualToExpression
| OPAR lhs=expression OR rhs=expression CPAR #OrExpression
| OPAR lhs=expression AND rhs=expression CPAR #AndExpression
| OPAR expression CPAR #parenthesisExpression
| lhs=expression MUL rhs=expression #multiplicationExpression
| lhs=expression DIV rhs=expression #divisionExpression
| lhs=expression MOD rhs=expression #moduloExpression
| lhs=expression ADD rhs=expression #additionExpression
| lhs=expression SUB rhs=expression #substractionExpression
| lhs=expression EQEQ rhs=expression #equalityExpression
| lhs=expression NEQ rhs=expression #NotEqualityExpression
| lhs=expression LT rhs=expression #lessThanExpression
| lhs=expression GT rhs=expression #greaterThanExpression
| lhs=expression LTE rhs=expression #lessThanOrEqualToExpression
| lhs=expression GTE rhs=expression #GreaterThanOrEqualToExpression
| lhs=expression OR rhs=expression #OrExpression
| lhs=expression AND rhs=expression #AndExpression
| SUB expression #negateExpression
| NOT expression #NotExpression
| functionCall #functionCallExpression