From b482b830079873688149665f34d6c4f67030084a Mon Sep 17 00:00:00 2001 From: serso Date: Sun, 24 Jan 2016 21:33:30 +0100 Subject: [PATCH] Minus/multiplication signs --- jscl/src/main/java/jscl/text/DoubleParser.java | 7 ++++--- jscl/src/main/java/jscl/text/MultiplyFactor.java | 2 +- jscl/src/main/java/jscl/text/PowerParser.java | 9 +++++---- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/jscl/src/main/java/jscl/text/DoubleParser.java b/jscl/src/main/java/jscl/text/DoubleParser.java index 18cff22c..a5edcf0e 100644 --- a/jscl/src/main/java/jscl/text/DoubleParser.java +++ b/jscl/src/main/java/jscl/text/DoubleParser.java @@ -191,14 +191,15 @@ class SignedInteger implements Parser { @Nonnull public String parse(@Nonnull Parameters p, Generic previousSumElement) throws ParseException { - int pos0 = p.position.intValue(); + final int pos0 = p.position.intValue(); final StringBuilder result = new StringBuilder(); ParserUtils.skipWhitespaces(p); - if (p.position.intValue() < p.expression.length() && (p.expression.charAt(p.position.intValue()) == '+' || p.expression.charAt(p.position.intValue()) == '-')) { - char c = p.expression.charAt(p.position.intValue()); + final int pos1 = p.position.intValue(); + if (pos1 < p.expression.length() && (p.expression.charAt(pos1) == '+' || MinusParser.isMinus(p.expression.charAt(pos1)))) { + final char c = p.expression.charAt(pos1); p.position.increment(); result.append(c); } diff --git a/jscl/src/main/java/jscl/text/MultiplyFactor.java b/jscl/src/main/java/jscl/text/MultiplyFactor.java index 97f03e9c..92bddcbc 100644 --- a/jscl/src/main/java/jscl/text/MultiplyFactor.java +++ b/jscl/src/main/java/jscl/text/MultiplyFactor.java @@ -14,7 +14,7 @@ class MultiplyFactor implements Parser { public static final Parser parser = new MultiplyFactor(); - private static boolean isMultiplication(char c) { + static boolean isMultiplication(char c) { return c == '*' || c == '×' || c == '∙'; } diff --git a/jscl/src/main/java/jscl/text/PowerParser.java b/jscl/src/main/java/jscl/text/PowerParser.java index 164f1f1d..92a851af 100644 --- a/jscl/src/main/java/jscl/text/PowerParser.java +++ b/jscl/src/main/java/jscl/text/PowerParser.java @@ -6,6 +6,8 @@ import jscl.text.msg.Messages; import javax.annotation.Nonnull; import javax.annotation.Nullable; +import static jscl.text.MultiplyFactor.isMultiplication; + /** * User: serso * Date: 10/27/11 @@ -27,7 +29,7 @@ class PowerParser implements Parser { if (p.position.intValue() < p.expression.length() && p.expression.charAt(p.position.intValue()) == '^') { p.position.increment(); } else { - if (isDoubleStar(p.expression, p.position)) { + if (isDoubleStar(p.expression, p.position.intValue())) { p.position.increment(); p.position.increment(); } else { @@ -38,8 +40,7 @@ class PowerParser implements Parser { return null; } - private boolean isDoubleStar(@Nonnull String string, @Nonnull MutableInt position) { - final int i = position.intValue(); - return i < string.length() && i + 1 < string.length() && string.charAt(i) == '*' && string.charAt(i + 1) == '*'; + private boolean isDoubleStar(@Nonnull String string, int position) { + return position + 1 < string.length() && isMultiplication(string.charAt(position)) && isMultiplication(string.charAt(position + 1)); } }