make expressions nestable

This commit is contained in:
2019-12-16 21:44:37 +01:00
parent de7625750e
commit 629f67b39c

View File

@@ -44,14 +44,21 @@ return_statement
;
expression
: atom MULT atom #multiplicationExpression
| atom op=(ADD | SUB) atom #additiveExpression
| atom MOD atom #moduloExpression
| SUB atom #unaryNegateExpression
| atom #atomExpression
: 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
| SUB expression #negateExpression
| functionCall #functionCallExpression
;
atom
: INTEGER_LITERAL #intAtom
| IDENT # variable
;
functionCall
: IDENT OPAR arguments CPAR
;
@@ -60,11 +67,6 @@ arguments
: (expression (COMMA expression)*)?
;
atom
: INTEGER_LITERAL #intAtom
| IDENT # variable
;
PRINT: 'print';
IF: 'if';
ELSE: 'else';
@@ -79,10 +81,11 @@ CPAR: ')';
COMMA: ',';
EQUAL: '=';
MULT: '*';
MUL: '*';
ADD: '+';
SUB: '-';
MOD: '%';
DIV: '/';
INTEGER_LITERAL
: [0-9]+