From e4084937181a4f5331481e3099c3fe6dc3dcfe65 Mon Sep 17 00:00:00 2001 From: ahmedsamyh Date: Wed, 20 Nov 2024 11:04:09 +0500 Subject: [PATCH] TokenType.NUMBER splitted to TokenType.{INT, FLOAT} --- main.py | 11 ++++++----- tests/07-numbers.momo.test | 4 ++-- tests/08-floating-point-numbers.momo.test | 6 +++--- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/main.py b/main.py index b071625..4706e51 100644 --- a/main.py +++ b/main.py @@ -64,7 +64,8 @@ class TokenType(IntEnum): LEFT_SQUARE_BRACE = auto() RIGHT_SQUARE_BRACE = auto() - NUMBER = auto() + INT = auto() + FLOAT = auto() COUNT = auto() token_type_as_str_map: { TokenType : str } = { @@ -95,10 +96,11 @@ token_type_as_str_map: { TokenType : str } = { TokenType.HASH : "Hash", TokenType.LEFT_SQUARE_BRACE : "Left Square Brace", TokenType.RIGHT_SQUARE_BRACE : "Right Square Brace", - TokenType.NUMBER : "Number" + TokenType.INT : "Int", + TokenType.FLOAT : "Float", } # NOTE: TokenType.COUNT - 1 because auto() starts from 1 -assert len(token_type_as_str_map) == TokenType.COUNT-1 +assert len(token_type_as_str_map) == TokenType.COUNT-1, "Every TokenType is not handled in token_type_as_str_map" class Token: def __init__(self, typ: TokenType, lexeme: str, loc: Loc): @@ -195,7 +197,6 @@ class Lexer: return (number, number_loc) - def left_trim(self): while not self.eof() and self.current_char().isspace(): if self.current_char() == '\n': @@ -298,7 +299,7 @@ class Lexer: return Token(TokenType.HASH, self.consume_char(), loc) elif c.isdigit(): num, loc = self.consume_number() - return Token(TokenType.NUMBER, num, loc) + return Token(TokenType.FLOAT if num.find(".") != -1 else TokenType.INT, num, loc) else: fatal(f"Unrecognized character '{c}'") diff --git a/tests/07-numbers.momo.test b/tests/07-numbers.momo.test index 87abb27..9f1e6c2 100644 --- a/tests/07-numbers.momo.test +++ b/tests/07-numbers.momo.test @@ -1,2 +1,2 @@ -"Token (Number, '69', ./tests/07-numbers.momo:1:1)" -"Token (Number, '100', ./tests/07-numbers.momo:3:1)" +"Token (Int, '69', ./tests/07-numbers.momo:1:1)" +"Token (Int, '100', ./tests/07-numbers.momo:3:1)" diff --git a/tests/08-floating-point-numbers.momo.test b/tests/08-floating-point-numbers.momo.test index 70ba7c3..908ddcf 100644 --- a/tests/08-floating-point-numbers.momo.test +++ b/tests/08-floating-point-numbers.momo.test @@ -1,3 +1,3 @@ -"Token (Number, '69.0', ./tests/08-floating-point-numbers.momo:1:1)" -"Token (Number, '100.15134324', ./tests/08-floating-point-numbers.momo:2:1)" -"Token (Number, '420.11', ./tests/08-floating-point-numbers.momo:3:1)" +"Token (Float, '69.0', ./tests/08-floating-point-numbers.momo:1:1)" +"Token (Float, '100.15134324', ./tests/08-floating-point-numbers.momo:2:1)" +"Token (Float, '420.11', ./tests/08-floating-point-numbers.momo:3:1)" -- 2.39.5