diff options
| author | Benjamin Culkin <bjculkin@sitri.goetia> | 2023-11-09 01:58:31 +0000 |
|---|---|---|
| committer | Benjamin Culkin <bjculkin@sitri.goetia> | 2023-11-09 01:58:31 +0000 |
| commit | 13a96e852f2fea4d3b3cb03cf803007b9b63041e (patch) | |
| tree | ea7bff952e92efa4b932526a9c84e8bc70de9a6d /base/src/bjc/dicelang/tokens | |
| parent | d9dcc94aa16a1609e47f8369dfe21a8d260887a9 (diff) | |
Add decimals
Add decimal literals and default to them over floats
Diffstat (limited to 'base/src/bjc/dicelang/tokens')
| -rw-r--r-- | base/src/bjc/dicelang/tokens/DecimalToken.java | 40 | ||||
| -rw-r--r-- | base/src/bjc/dicelang/tokens/Token.java | 6 |
2 files changed, 43 insertions, 3 deletions
diff --git a/base/src/bjc/dicelang/tokens/DecimalToken.java b/base/src/bjc/dicelang/tokens/DecimalToken.java new file mode 100644 index 0000000..8a7507f --- /dev/null +++ b/base/src/bjc/dicelang/tokens/DecimalToken.java @@ -0,0 +1,40 @@ +package bjc.dicelang.tokens; + +import java.math.BigDecimal; +import java.util.Objects; + +public class DecimalToken extends Token { + public BigDecimal val; + + public DecimalToken(BigDecimal val) { + super(Type.DEC_LIT); + + this.val = val; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = super.hashCode(); + result = prime * result + Objects.hash(val); + 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; + DecimalToken other = (DecimalToken) obj; + return Objects.equals(val, other.val); + } + + @Override + public String toString() { + return super.toString() + "(" + val.toString() + ")"; + } + +} diff --git a/base/src/bjc/dicelang/tokens/Token.java b/base/src/bjc/dicelang/tokens/Token.java index e8fc605..863adeb 100644 --- a/base/src/bjc/dicelang/tokens/Token.java +++ b/base/src/bjc/dicelang/tokens/Token.java @@ -10,7 +10,6 @@ import bjc.funcdata.ListEx; /** * Lexer token. */ -@SuppressWarnings("javadoc") public class Token { public final static Token NIL_TOKEN = new Token(Type.NIL); @@ -31,7 +30,7 @@ public class Token { /* * Literal tokens. */ - INT_LIT, FLOAT_LIT, STRING_LIT, VREF, DICE_LIT, + INT_LIT, DEC_LIT, FLOAT_LIT, STRING_LIT, VREF, DICE_LIT, /* * Dice operators. @@ -162,7 +161,8 @@ public class Token { @Override public int hashCode() { - // TODO Auto-generated method stub + // TODO: come up with a better way to implement this + // this is not a compliant hashCode implementation return super.hashCode(); } } |
