summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbculkin2442 <bjculkin@mix.wvu.edu>2017-03-10 10:07:09 -0500
committerbculkin2442 <bjculkin@mix.wvu.edu>2017-03-10 10:07:09 -0500
commit1bbfc754a6c6cecca5d58f080f3b9f4278e1ef89 (patch)
treec78c6cae493d0afc1ffbb259f31493431b9eda57
parent8bbe036d2b3cb6b8f65d9b417285665eaf23c202 (diff)
Cleanliness
-rw-r--r--dice-lang/src/bjc/dicelang/DoubleMatcher.java58
-rw-r--r--dice-lang/src/bjc/dicelang/Tokenizer.java18
-rw-r--r--dice-lang/src/bjc/dicelang/scl/StreamControlEngine.java10
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;
}