From 629f67b39cae2277b8eeab58242a4a63a879c1f0 Mon Sep 17 00:00:00 2001 From: nitrix Date: Mon, 16 Dec 2019 21:44:37 +0100 Subject: [PATCH] make expressions nestable --- .../antlr4/de/hsrm/compiler/Klang/Klang.g4 | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/main/antlr4/de/hsrm/compiler/Klang/Klang.g4 b/src/main/antlr4/de/hsrm/compiler/Klang/Klang.g4 index 9263309..a6dbbb7 100644 --- a/src/main/antlr4/de/hsrm/compiler/Klang/Klang.g4 +++ b/src/main/antlr4/de/hsrm/compiler/Klang/Klang.g4 @@ -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]+