diff --git a/expressions.txt b/expressions.txt
index f46bda32ccf334ee798b2b135980269a6f6628de..2b40ceaf50da3b0bfc6d612b6c9576e312e575a9 100644
--- a/expressions.txt
+++ b/expressions.txt
@@ -1 +1 @@
-x+2/5223+y+44+4+2^12/222
\ 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 85c780cd9be5f090a934fb42c37d54075032de2e..fcc6fa333dc8dce123c0c474f149f5d35d9e0ee2 100644
--- a/src/Parser.java
+++ b/src/Parser.java
@@ -101,6 +101,39 @@ 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;
+        }
         BinaryOperation operation;
         if(ts.get(1).getType()!= Lexer.TokenType.SPECIAL) {
             throw new ParserException("SyntaxError: unexpected operator: " + ts.get(1).getData());
@@ -111,6 +144,8 @@ public class Parser {
         String operator = ts.remove(0).getData();
         parseOperator(operator);
         Expression rightExpression = parseExpression(ts);
+
+         */
         return new BinaryOperation(leftExpression, operator, rightExpression);
     }
 
@@ -151,7 +186,7 @@ public class Parser {
         if (ts.size()>1) {
             //if the next token is of TokenType.SPECIAL, check if it's a comma
             //if it is, create a decimal
-            if(ts.get(0).getType() == Lexer.TokenType.SPECIAL) {
+            if(ts.get(1).getType() == Lexer.TokenType.SPECIAL) {
                 if(parseComma(ts)) {
                     value = parseDecimal(ts);
                 }
@@ -191,8 +226,8 @@ public class Parser {
             return new Number(data);
         }
 
-        parseDigitWithoutZero(data);
-        parseDigit(data);
+        parseDigitWithoutZero(data.substring(0,1));
+        parseDigit(data.substring(1));
         return new Number(data);
     }
 
@@ -219,9 +254,9 @@ public class Parser {
     }
 
     private Boolean parseComma(List<Lexer.Token> ts) throws ParserException {
-        String data = ts.get(0).getData();
+        String data = ts.get(1).getData();
         if(parseCharacter(data, ".")) {
-            if(ts.get(1).getType()!= Lexer.TokenType.NUMBER) {
+            if(ts.get(2).getType()!= Lexer.TokenType.NUMBER) {
                 throw new ParserException("SyntaxError: no number after comma");
             }
             return true;