]> www.git.momoyon.org Git - lang.git/commitdiff
Can Parse , ; : too
authorahmedsamyh <ahmedsamyh10@gmail.com>
Sat, 16 Nov 2024 18:00:13 +0000 (23:00 +0500)
committerahmedsamyh <ahmedsamyh10@gmail.com>
Sat, 16 Nov 2024 18:00:13 +0000 (23:00 +0500)
- Update tests.

main.momo
main.py
tests/06-single-char-symbols.momo
tests/06-single-char-symbols.momo.test

index 0d54893525b24420a73258ddb3dbb02ee0f78963..305c98fcef81015c1fe04505f1954619211936ef 100644 (file)
--- a/main.momo
+++ b/main.momo
@@ -2,3 +2,4 @@
 - + / * %
 = !
 >= > < <= != ==
+, : ;
diff --git a/main.py b/main.py
index b53ec07cc8b192b8cb114af4c5c657d689a330ac..9e8f37617dca1a95217056786b6a03208de9dc50 100644 (file)
--- a/main.py
+++ b/main.py
@@ -55,6 +55,9 @@ class TokenType(IntEnum):
     LT = auto()
     GTE = auto()
     LTE = auto()
+    COMMA = auto()
+    COLON = auto()
+    SEMICOLON = auto()
     COUNT = auto()
 
 token_type_as_str_map: { TokenType : str } = {
@@ -78,6 +81,9 @@ token_type_as_str_map: { TokenType : str } = {
     TokenType.LT            : "Less Than",
     TokenType.GTE           : "Greater Than or Equal",
     TokenType.LTE           : "Less Than or Equal",
+    TokenType.COMMA         : "Comma",
+    TokenType.COLON         : "Colon",
+    TokenType.SEMICOLON     : "Semicolon",
 }
 # NOTE: TokenType.COUNT - 1 because auto() starts from 1
 assert len(token_type_as_str_map) == TokenType.COUNT-1
@@ -236,6 +242,15 @@ class Parser:
             if self.peek_next_char() == '=':
                 return Token(TokenType.LTE, self.consume_char() + self.consume_char(), loc)
             return Token(TokenType.LT, self.consume_char(), loc)
+        elif c == ',':
+            loc = Loc(self.filename, self.line, self.row())
+            return Token(TokenType.COMMA, self.consume_char(), loc)
+        elif c == ':':
+            loc = Loc(self.filename, self.line, self.row())
+            return Token(TokenType.COLON, self.consume_char(), loc)
+        elif c == ';':
+            loc = Loc(self.filename, self.line, self.row())
+            return Token(TokenType.SEMICOLON, self.consume_char(), loc)
         else:
             fatal(f"Unrecognized character '{c}'")
 
index 0d54893525b24420a73258ddb3dbb02ee0f78963..305c98fcef81015c1fe04505f1954619211936ef 100644 (file)
@@ -2,3 +2,4 @@
 - + / * %
 = !
 >= > < <= != ==
+, : ;
index bf87c030d64a6822ebc8d509fbb467a58a9246b9..64ba762262ff365596eac56a615f55f97a56db29 100644 (file)
@@ -16,4 +16,7 @@
 "Token (Less Than or Equal, '<=', ./tests/06-single-char-symbols.momo:4:7)"
 "Token (Not Equal, '!=', ./tests/06-single-char-symbols.momo:4:10)"
 "Token (Equal Equal, '==', ./tests/06-single-char-symbols.momo:4:13)"
+"Token (Comma, ',', ./tests/06-single-char-symbols.momo:5:0)"
+"Token (Colon, ':', ./tests/06-single-char-symbols.momo:5:2)"
+"Token (Semicolon, ';', ./tests/06-single-char-symbols.momo:5:4)"
 'None'