diff options
| author | bculkin2442 <bjculkin@mix.wvu.edu> | 2017-03-10 10:07:09 -0500 |
|---|---|---|
| committer | bculkin2442 <bjculkin@mix.wvu.edu> | 2017-03-10 10:07:09 -0500 |
| commit | 1bbfc754a6c6cecca5d58f080f3b9f4278e1ef89 (patch) | |
| tree | c78c6cae493d0afc1ffbb259f31493431b9eda57 | |
| parent | 8bbe036d2b3cb6b8f65d9b417285665eaf23c202 (diff) | |
Cleanliness
| -rw-r--r-- | dice-lang/src/bjc/dicelang/DoubleMatcher.java | 58 | ||||
| -rw-r--r-- | dice-lang/src/bjc/dicelang/Tokenizer.java | 18 | ||||
| -rw-r--r-- | dice-lang/src/bjc/dicelang/scl/StreamControlEngine.java | 10 |
3 files changed, 14 insertions, 72 deletions
diff --git a/dice-lang/src/bjc/dicelang/DoubleMatcher.java b/dice-lang/src/bjc/dicelang/DoubleMatcher.java deleted file mode 100644 index 75df9c7..0000000 --- a/dice-lang/src/bjc/dicelang/DoubleMatcher.java +++ /dev/null @@ -1,58 +0,0 @@ -package bjc.dicelang; - -import java.util.regex.Pattern; - -/** - * Checks if a string would pass Double.parseDouble. - * - * Uses a regex from the javadoc for Double.valueOf() - */ -public class DoubleMatcher { - private static final String Digits = - "(\\p{Digit}+)"; - private static final String HexDigits = - "(\\p{XDigit}+)"; - - // an exponent is 'e' or 'E' followed by an optionally - // signed decimal integer. - private static final String Exp = - "[eE][+-]?" + Digits; - - private static final String fpRegex = - ("[\\x00-\\x20]*" + - // Optional leading "whitespace" - "[+-]?(" + // Optional sign character - "NaN|" + // "NaN" string - "Infinity|" + // "Infinity" string - - // A decimal floating-point string representing a finite positive - // number without a leading sign has at most five basic pieces: - // Digits . Digits ExponentPart FloatTypeSuffix - // - // Since this method allows integer-only strings as input - // in addition to strings of floating-point literals, the - // two sub-patterns below are simplifications of the grammar - // productions from section 3.10.2 of - // The Java™ Language Specification. - - // Digits ._opt Digits_opt ExponentPart_opt FloatTypeSuffix_opt - "((("+Digits+"(\\.)?("+Digits+"?)("+Exp+")?)|"+ - - // . Digits ExponentPart_opt FloatTypeSuffix_opt - "(\\.("+Digits+")("+Exp+")?)|"+ - - // Hexadecimal strings - "((" + - // 0[xX] HexDigits ._opt BinaryExponent FloatTypeSuffix_opt - "(0[xX]" + HexDigits + "(\\.)?)|" + - - // 0[xX] HexDigits_opt . HexDigits BinaryExponent FloatTypeSuffix_opt - "(0[xX]" + HexDigits + "?(\\.)" + HexDigits + ")" + - - ")[pP][+-]?" + Digits + "))" + - "[fFdD]?))" + - "[\\x00-\\x20]*");// Optional trailing "whitespace" - - public static final Pattern floatingLiteral = Pattern.compile("\\A" + fpRegex + "\\Z"); - -} diff --git a/dice-lang/src/bjc/dicelang/Tokenizer.java b/dice-lang/src/bjc/dicelang/Tokenizer.java index f13023c..6bb4f86 100644 --- a/dice-lang/src/bjc/dicelang/Tokenizer.java +++ b/dice-lang/src/bjc/dicelang/Tokenizer.java @@ -1,16 +1,18 @@ package bjc.dicelang;
-import static bjc.dicelang.Errors.ErrorKey.*;
-import static bjc.dicelang.Token.Type.*;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
import bjc.dicelang.dice.DiceBox;
+
import bjc.utils.funcdata.FunctionalMap;
import bjc.utils.funcdata.IMap;
import bjc.utils.funcutils.StringUtils;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import static bjc.dicelang.Errors.ErrorKey.*;
+import static bjc.dicelang.Token.Type.*;
+
+
public class Tokenizer {
// Literal tokens for tokenization
private IMap<String, Token.Type> litTokens;
@@ -105,7 +107,7 @@ public class Tokenizer { private Token tokenizeLiteral(String token, IMap<String, String> stringLts) {
Token tk = Token.NIL_TOKEN;
- if(intMatcher.matcher(token).matches()) {
+ if(StringUtils.isInt(token)) {
tk = new Token(INT_LIT, Long.parseLong(token));
} else if(hexadecimalMatcher.matcher(token).matches()) {
String newToken = token.substring(0, 1) + token.substring(token.indexOf('x'));
@@ -127,7 +129,7 @@ public class Tokenizer { Errors.inst.printError(EK_TOK_INVFLEX, flexNum, Integer.toString(parseBase));
return Token.NIL_TOKEN;
}
- } else if(DoubleMatcher.floatingLiteral.matcher(token).matches()) {
+ } else if(StringUtils.isDouble(token)) {
tk = new Token(FLOAT_LIT, Double.parseDouble(token));
} else if(DiceBox.isValidExpression(token)) {
tk = new Token(DICE_LIT, DiceBox.parseExpression(token));
diff --git a/dice-lang/src/bjc/dicelang/scl/StreamControlEngine.java b/dice-lang/src/bjc/dicelang/scl/StreamControlEngine.java index fff8b3e..4e125f9 100644 --- a/dice-lang/src/bjc/dicelang/scl/StreamControlEngine.java +++ b/dice-lang/src/bjc/dicelang/scl/StreamControlEngine.java @@ -1,12 +1,12 @@ package bjc.dicelang.scl; -import bjc.dicelang.DoubleMatcher; import bjc.dicelang.Errors; import bjc.utils.esodata.Stack; import bjc.utils.esodata.Tape; import bjc.utils.funcdata.IList; import bjc.utils.funcdata.FunctionalList; +import bjc.utils.funcutils.StringUtils; import java.util.HashMap; import java.util.Map; @@ -157,9 +157,9 @@ public class StreamControlEngine { return new Token(BLIT, true); } else if(token.equals("false")) { return new Token(BLIT, false); - } else if(intLitPattern.matcher(token).matches()) { + } else if(StringUtils.isInt(token)) { return new Token(ILIT, Long.parseLong(token)); - } else if(DoubleMatcher.floatingLiteral.matcher(token).matches()) { + } else if(StringUtils.isDouble(token)) { return new Token(FLIT, Double.parseDouble(token)); } else { Errors.inst.printError(EK_SCL_INVTOKEN, token); @@ -167,8 +167,6 @@ public class StreamControlEngine { } } - private static final Pattern intLitPattern = Pattern.compile("\\A[+\\-]?\\d+\\Z"); - private static final Map<String, Token.Type> litTokens; private static final Map<String, Token.Type> builtinWords; @@ -494,7 +492,7 @@ public class StreamControlEngine { */ n += 1; - curStack.push(new Token(SLIT, sb.toString())); + curStack.push(new Token(SLIT, StringUtils.descapeString(sb.toString()))); return n; } |
