From 1709cb30fbdecff9cb78ad65b06792f1b6cee3fa Mon Sep 17 00:00:00 2001 From: AidenRushbrooke <72034940+AidenRushbrooke@users.noreply.github.com> Date: Sun, 5 Dec 2021 20:52:33 +0000 Subject: Updated report grammar --- src/Compiler/Parser.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'src/Compiler/Parser.java') diff --git a/src/Compiler/Parser.java b/src/Compiler/Parser.java index 433035c..9f5e68d 100644 --- a/src/Compiler/Parser.java +++ b/src/Compiler/Parser.java @@ -408,7 +408,7 @@ public class Parser { */ private Expression equality(){ Expression createdExpression = logical(); - while (matchAndAdvance(TokenType.EQUALITY)){ + while (matchAndAdvance(TokenType.EQUALITY)||matchAndAdvance(TokenType.NOT_EQUAL)){ Token op = getPreviousToken(); Expression right = logical(); createdExpression = new Expression.Binary(createdExpression, op, right); @@ -471,9 +471,20 @@ public class Parser { * @return an expression of rank factor or lower */ private Expression factor(){ - Expression createdExpression = primary(); + Expression createdExpression = exponent(); //Check for multiplication or division expressions while (matchAndAdvance(TokenType.STAR)||matchAndAdvance(TokenType.SLASH)){ + Token op = getPreviousToken(); + Expression right = exponent(); + createdExpression = new Expression.Binary(createdExpression, op, right); + } + return createdExpression; + } + + private Expression exponent(){ + Expression createdExpression = primary(); + //Check for multiplication or division expressions + while (matchAndAdvance(TokenType.EXPONENT)){ Token op = getPreviousToken(); Expression right = primary(); createdExpression = new Expression.Binary(createdExpression, op, right); -- cgit v1.2.3