diff options
author | Adrien Hopkins <ahopk127@my.yorku.ca> | 2021-12-02 16:55:05 -0500 |
---|---|---|
committer | Adrien Hopkins <ahopk127@my.yorku.ca> | 2021-12-02 16:55:05 -0500 |
commit | cc79db65bc347c50267d0a719278ef1d90cf6b1a (patch) | |
tree | 65717e8d7e75247ced380a72842c50b94fc61a0e /src/main/java/sevenUnits/utils/ExpressionParser.java | |
parent | c4ae6887c32ee8d2e9e8853ffd12721d4db2fd3b (diff) | |
parent | 9c30c3ad4d4658964e2bb2bb5be6c2eebbfbe8af (diff) |
Merge branch 'release-0.3.2'
Diffstat (limited to 'src/main/java/sevenUnits/utils/ExpressionParser.java')
-rw-r--r-- | src/main/java/sevenUnits/utils/ExpressionParser.java | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/main/java/sevenUnits/utils/ExpressionParser.java b/src/main/java/sevenUnits/utils/ExpressionParser.java index 1d3d44d..941c2a4 100644 --- a/src/main/java/sevenUnits/utils/ExpressionParser.java +++ b/src/main/java/sevenUnits/utils/ExpressionParser.java @@ -461,10 +461,12 @@ public final class ExpressionParser<T> { * * @param expression expression * @return expression in RPN + * @throws IllegalArgumentException if expression is invalid (e.g. + * "{@code 3 *}") * @since 2019-03-17 * @since v0.2.0 */ - private String convertExpressionToReversePolish(final String expression) { + String convertExpressionToReversePolish(final String expression) { Objects.requireNonNull(expression, "expression must not be null."); final List<String> components = new ArrayList<>(); @@ -541,6 +543,9 @@ public final class ExpressionParser<T> { switch (this .getTokenType(components.get(highestPriorityOperatorPosition))) { case UNARY_OPERATOR: + if (components.size() < 2) + throw new IllegalArgumentException( + "Invalid expression \"" + expression + "\""); final String unaryOperator = components .remove(highestPriorityOperatorPosition); final String operand = components @@ -549,6 +554,9 @@ public final class ExpressionParser<T> { operand + " " + unaryOperator); break; case BINARY_OPERATOR: + if (components.size() < 3) + throw new IllegalArgumentException( + "Invalid expression \"" + expression + "\""); final String binaryOperator = components .remove(highestPriorityOperatorPosition); final String operand1 = components @@ -672,7 +680,7 @@ public final class ExpressionParser<T> { * @since 2019-03-14 * @since v0.2.0 */ - private T parseReversePolishExpression(final String expression) { + T parseReversePolishExpression(final String expression) { Objects.requireNonNull(expression, "expression must not be null."); final Deque<T> stack = new ArrayDeque<>(); |