aboutsummaryrefslogtreecommitdiff
path: root/calculator-java/src/main/java/ch/bfh/parser/ExpressionParser.java
diff options
context:
space:
mode:
authorMaël Gassmann <mael.gassmann@students.bfh.ch>2021-06-11 11:17:45 +0200
committerMaël Gassmann <mael.gassmann@students.bfh.ch>2021-06-11 11:17:45 +0200
commit403c6a951e890d3e1914779ee35576859a38d33e (patch)
treeff2d5182ad4e72b335624c61a7d48364de61807c /calculator-java/src/main/java/ch/bfh/parser/ExpressionParser.java
parent126a6c85b60ad07fa29ab48315f0f195fb45d854 (diff)
[+] implemented the 'shell' UI, [~] Small corrections had to be made in the parser
Diffstat (limited to 'calculator-java/src/main/java/ch/bfh/parser/ExpressionParser.java')
-rw-r--r--calculator-java/src/main/java/ch/bfh/parser/ExpressionParser.java8
1 files changed, 6 insertions, 2 deletions
diff --git a/calculator-java/src/main/java/ch/bfh/parser/ExpressionParser.java b/calculator-java/src/main/java/ch/bfh/parser/ExpressionParser.java
index 229e700..f96353e 100644
--- a/calculator-java/src/main/java/ch/bfh/parser/ExpressionParser.java
+++ b/calculator-java/src/main/java/ch/bfh/parser/ExpressionParser.java
@@ -49,6 +49,7 @@ public class ExpressionParser extends Parser {
case Token.SUB:
if (l != null && op == null) { // if the '-' sign is between two term (op)
op = token;
+ this.ops.add(op);
break;
} else if (l != null && r != null) { // if we already found a 'l op r' we roll
l = r;
@@ -69,7 +70,7 @@ public class ExpressionParser extends Parser {
}
continue loop;
case Token.PAR:
- if (lastToken.type == Token.PAL) { // if equal to '(' it means it was created by a Factor
+ if (lastToken != null && lastToken.type == Token.PAL) { // if equal to '(' it means it was created by a Factor
lastToken = token;
break loop;
} else
@@ -260,7 +261,10 @@ public class ExpressionParser extends Parser {
@Override
public double getValue(){
if (expression != null)
- return expression.getValue();
+ if (isNegative)
+ return expression.getValue()*(-1);
+ else
+ return expression.getValue();
if (isNegative)
return value*(-1);
return value;