From 0a7958a014eb746390c1e602b0e67c1a43f94a33 Mon Sep 17 00:00:00 2001 From: Maƫl Gassmann Date: Sat, 12 Jun 2021 18:49:07 +0200 Subject: [~] Added empty expression error messages --- calculator-java/src/main/java/ch/bfh/parser/ExpressionParser.java | 2 ++ calculator-java/src/main/java/ch/bfh/parser/FactorParser.java | 1 + calculator-java/src/main/java/ch/bfh/parser/Parser.java | 2 +- calculator-java/src/main/java/ch/bfh/parser/StatementParser.java | 2 +- 4 files changed, 5 insertions(+), 2 deletions(-) (limited to 'calculator-java/src/main/java/ch/bfh') 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 -- cgit v1.2.3