summaryrefslogtreecommitdiff
path: root/base
diff options
context:
space:
mode:
authorstudent <student@69.161.224.78>2018-02-12 16:39:26 -0500
committerstudent <student@69.161.224.78>2018-02-12 16:39:26 -0500
commit26b0cf727656b4d5984f04d73566661644c78fdd (patch)
treeed74561644208a342d00ec0da901f6f186be361a /base
parentd74549cc7d871d32864d3a6dee944325a2ccc7bf (diff)
Refactor Token
Diffstat (limited to 'base')
-rw-r--r--base/src/bjc/dicelang/Evaluator.java2
-rw-r--r--base/src/bjc/dicelang/FloatToken.java40
-rw-r--r--base/src/bjc/dicelang/Token.java18
-rw-r--r--base/src/bjc/dicelang/Tokenizer.java2
4 files changed, 42 insertions, 20 deletions
diff --git a/base/src/bjc/dicelang/Evaluator.java b/base/src/bjc/dicelang/Evaluator.java
index 677aef4..aa2d2a0 100644
--- a/base/src/bjc/dicelang/Evaluator.java
+++ b/base/src/bjc/dicelang/Evaluator.java
@@ -575,7 +575,7 @@ public class Evaluator {
res = new EvaluatorResult(INT, tk.intValue);
break;
case FLOAT_LIT:
- res = new EvaluatorResult(FLOAT, tk.floatValue);
+ res = new EvaluatorResult(FLOAT, ((FloatToken)tk).floatValue);
break;
case DICE_LIT:
res = new EvaluatorResult(DICE, ((DiceToken) tk).diceValue);
diff --git a/base/src/bjc/dicelang/FloatToken.java b/base/src/bjc/dicelang/FloatToken.java
new file mode 100644
index 0000000..786df6e
--- /dev/null
+++ b/base/src/bjc/dicelang/FloatToken.java
@@ -0,0 +1,40 @@
+package bjc.dicelang;
+
+public class FloatToken extends Token {
+ public double floatValue;
+
+ public FloatToken(double val) {
+ super(Type.FLOAT_LIT);
+
+ floatValue = val;
+ }
+
+ @Override
+ public String toString() {
+ return super.toString() + "(" + floatValue + ")";
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ long temp;
+ temp = Double.doubleToLongBits(floatValue);
+ result = prime * result + (int) (temp ^ (temp >>> 32));
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (!super.equals(obj))
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ FloatToken other = (FloatToken) obj;
+ if (Double.doubleToLongBits(floatValue) != Double.doubleToLongBits(other.floatValue))
+ return false;
+ return true;
+ }
+}
diff --git a/base/src/bjc/dicelang/Token.java b/base/src/bjc/dicelang/Token.java
index b152185..b940925 100644
--- a/base/src/bjc/dicelang/Token.java
+++ b/base/src/bjc/dicelang/Token.java
@@ -1,6 +1,5 @@
package bjc.dicelang;
-import bjc.dicelang.dice.DiceExpression;
import bjc.utils.funcdata.IList;
/*
@@ -80,14 +79,6 @@ public class Token {
/*
* This is used for the following token types
- *
- * - FLOAT_LIT (float value)
- *
- */
- public double floatValue;
-
- /*
- * This is used for the following token types
*
* - TOKGROUP (the tokens in the group)
*
@@ -106,12 +97,6 @@ public class Token {
intValue = val;
}
- public Token(final Type typ, final double val) {
- this(typ);
-
- floatValue = val;
- }
-
public Token(final Type typ, final IList<Token> tkVals) {
this(typ);
@@ -132,9 +117,6 @@ public class Token {
case CBRACE:
return type.toString() + "(" + intValue + ")";
- case FLOAT_LIT:
- return type.toString() + "(" + floatValue + ")";
-
case TAGOP:
case TAGOPR:
case TOKGROUP:
diff --git a/base/src/bjc/dicelang/Tokenizer.java b/base/src/bjc/dicelang/Tokenizer.java
index b59c4be..3a6db22 100644
--- a/base/src/bjc/dicelang/Tokenizer.java
+++ b/base/src/bjc/dicelang/Tokenizer.java
@@ -147,7 +147,7 @@ public class Tokenizer {
return Token.NIL_TOKEN;
}
} else if (TokenUtils.isDouble(token)) {
- tk = new Token(FLOAT_LIT, Double.parseDouble(token));
+ tk = new FloatToken(Double.parseDouble(token));
} else if (DiceBox.isValidExpression(token)) {
tk = new DiceToken(DiceBox.parseExpression(token));
} else {