From 13a96e852f2fea4d3b3cb03cf803007b9b63041e Mon Sep 17 00:00:00 2001 From: Benjamin Culkin Date: Thu, 9 Nov 2023 01:58:31 +0000 Subject: Add decimals Add decimal literals and default to them over floats --- base/src/bjc/dicelang/Tokenizer.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'base/src/bjc/dicelang/Tokenizer.java') diff --git a/base/src/bjc/dicelang/Tokenizer.java b/base/src/bjc/dicelang/Tokenizer.java index 7aed861..5ddd82b 100644 --- a/base/src/bjc/dicelang/Tokenizer.java +++ b/base/src/bjc/dicelang/Tokenizer.java @@ -1,9 +1,11 @@ package bjc.dicelang; +import java.math.BigDecimal; import java.util.regex.Matcher; import java.util.regex.Pattern; import bjc.dicelang.dice.DiceBox; +import bjc.dicelang.tokens.DecimalToken; import bjc.dicelang.tokens.DiceToken; import bjc.dicelang.tokens.FloatToken; import bjc.dicelang.tokens.Token; @@ -165,8 +167,11 @@ public class Tokenizer { Errors.inst.printError(EK_TOK_INVFLEX, flexNum, Integer.toString(parseBase)); return Token.NIL_TOKEN; } + } else if (TokenUtils.isSuffixedDouble(token, "f")) { + String unsuffixedToken = token.substring(0, token.length() - 1); + tk = new FloatToken(Double.parseDouble(unsuffixedToken)); } else if (TokenUtils.isDouble(token)) { - tk = new FloatToken(Double.parseDouble(token)); + tk = new DecimalToken(new BigDecimal(token)); } else if (DiceBox.isValidExpression(token)) { tk = new DiceToken(DiceBox.parseExpression(token)); } else { -- cgit v1.2.3