Fix bugs in number literals

This commit is contained in:
James Westman 2023-03-12 14:29:20 -05:00
parent fad3b35531
commit b636d9ed71
4 changed files with 29 additions and 27 deletions

View file

@ -41,8 +41,8 @@ _tokens = [
(TokenType.QUOTED, r'"(\\"|[^"\n])*"'),
(TokenType.QUOTED, r"'(\\'|[^'\n])*'"),
(TokenType.NUMBER, r"0x[A-Za-z0-9_]+"),
(TokenType.NUMBER, r"[-+]?[\d_]+(\.[\d_]+)?"),
(TokenType.NUMBER, r"[-+]?\.[\d_]+"),
(TokenType.NUMBER, r"[\d_]+(\.[\d_]+)?"),
(TokenType.NUMBER, r"\.[\d_]+"),
(TokenType.WHITESPACE, r"\s+"),
(TokenType.COMMENT, r"\/\*[\s\S]*?\*\/"),
(TokenType.COMMENT, r"\/\/[^\n]*"),
@ -71,7 +71,7 @@ class Token:
if string.startswith("0x"):
return int(string, 16)
else:
return float(string.replace("_", ""))
return float(string)
except:
raise CompileError(
f"{str(self)} is not a valid number literal", self.start, self.end