]> www.git.momoyon.org Git - lang.git/commitdiff
TokenType.NUMBER splitted to TokenType.{INT, FLOAT}
authorahmedsamyh <ahmedsamyh10@gmail.com>
Wed, 20 Nov 2024 06:04:09 +0000 (11:04 +0500)
committerahmedsamyh <ahmedsamyh10@gmail.com>
Wed, 20 Nov 2024 06:04:09 +0000 (11:04 +0500)
main.py
tests/07-numbers.momo.test
tests/08-floating-point-numbers.momo.test

diff --git a/main.py b/main.py
index b0716250f3d668913e6629988c07a61f84deffd9..4706e516cecaafdb6cebb4eaba98d2297463d9b9 100644 (file)
--- 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}'")
 
index 87abb27fedbf566fd739f35e6bf86cb531138f34..9f1e6c2bf0341db3180d41e2b0aaadd0c7ed4e4e 100644 (file)
@@ -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)"
index 70ba7c314554d623a3831a568deb59afeb2ecd38..908ddcf173746f256d5653270ff6bb67fb388fe3 100644 (file)
@@ -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)"