diff options
Diffstat (limited to 'calculator-java/src/main/java/ch/bfh/parser')
4 files changed, 5 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 e68983b..91effbd 100644 --- a/calculator-java/src/main/java/ch/bfh/parser/ExpressionParser.java +++ b/calculator-java/src/main/java/ch/bfh/parser/ExpressionParser.java @@ -71,6 +71,8 @@ class ExpressionParser extends Parser { continue loop; case Token.PAR: if (lastToken != null && lastToken.type == Token.PAL) { // if equal to '(' it means it was created by a Factor + if(parsers.size() == 0) + throw new ParserException("Empty parenthesis were found."); lastToken = token; break loop; } else diff --git a/calculator-java/src/main/java/ch/bfh/parser/FactorParser.java b/calculator-java/src/main/java/ch/bfh/parser/FactorParser.java index fd54cf4..282a05e 100644 --- a/calculator-java/src/main/java/ch/bfh/parser/FactorParser.java +++ b/calculator-java/src/main/java/ch/bfh/parser/FactorParser.java @@ -83,6 +83,7 @@ class FactorParser extends Parser { @Override public double getValue() { + if (expression != null) if (isNegative) return expression.getValue() * (-1); diff --git a/calculator-java/src/main/java/ch/bfh/parser/Parser.java b/calculator-java/src/main/java/ch/bfh/parser/Parser.java index 6a03fe1..496dadf 100644 --- a/calculator-java/src/main/java/ch/bfh/parser/Parser.java +++ b/calculator-java/src/main/java/ch/bfh/parser/Parser.java @@ -11,7 +11,7 @@ abstract class Parser{ protected CalculatorLexer cl; protected Token lastToken; - protected double value; + protected Double value = null; protected abstract void parse(); public abstract double getValue(); diff --git a/calculator-java/src/main/java/ch/bfh/parser/StatementParser.java b/calculator-java/src/main/java/ch/bfh/parser/StatementParser.java index 7bd0d14..0897df7 100644 --- a/calculator-java/src/main/java/ch/bfh/parser/StatementParser.java +++ b/calculator-java/src/main/java/ch/bfh/parser/StatementParser.java @@ -66,7 +66,7 @@ public class StatementParser extends Parser{ @Override public double getValue() { if (parsedExpression == null) - return 0.0; + throw new ParserException("Empty statement."); return parsedExpression.getValue(); } }
\ No newline at end of file |