From 3ecdfbdc7374e4aaae1f679c99fc55ba1b7eaf16 Mon Sep 17 00:00:00 2001
From: Kraemerd <Dominic_Daniel.Kraemer@Student.Reutlingen-University.de>
Date: Sun, 8 Jan 2023 19:01:29 +0100
Subject: [PATCH] fixed a bug, parser can now parse decimals in combination
 with operators

---
 expressions.txt |  2 +-
 src/Parser.java | 32 ++++++++++++++++++++++++++++++++
 2 files changed, 33 insertions(+), 1 deletion(-)

diff --git a/expressions.txt b/expressions.txt
index 2496a8c..2b40cea 100644
--- a/expressions.txt
+++ b/expressions.txt
@@ -1 +1 @@
-x+2/40+3*x
\ No newline at end of file
+40.2+3*x
\ No newline at end of file
diff --git a/src/Parser.java b/src/Parser.java
index bc9dd7c..fcc6fa3 100644
--- a/src/Parser.java
+++ b/src/Parser.java
@@ -101,6 +101,36 @@ public class Parser {
         if(ts.size()==1) {
             return null;
         }
+        int index;
+        for(index=0; index<ts.size(); index++) {
+            if(ts.get(index).getType()== Lexer.TokenType.SPECIAL) {
+                if(!parseCharacter(ts.get(index).getData(), ".")) {
+                    break;
+                }
+            }
+        }
+        if(index==ts.size()) {
+            return null;
+        }
+        //0
+        //1
+        //2
+        //3
+        //4 * => index=4
+
+        //5
+        //6
+        //7
+        List<Lexer.Token> leftList = new LinkedList<>();
+        for(int i=0; i<index; i++) {
+            leftList.add(ts.remove(0));
+        }
+        Expression leftExpression = parseExpression(leftList);
+        String operator = ts.remove(0).getData();
+        parseOperator(operator);
+        Expression rightExpression = parseExpression(ts);
+
+        /*
         if(parseCharacter(ts.get(1).getData(), ".")) {
             return null;
         }
@@ -114,6 +144,8 @@ public class Parser {
         String operator = ts.remove(0).getData();
         parseOperator(operator);
         Expression rightExpression = parseExpression(ts);
+
+         */
         return new BinaryOperation(leftExpression, operator, rightExpression);
     }
 
-- 
GitLab