]> www.git.momoyon.org Git - lang.git/commitdiff
Can parse [].
authorahmedsamyh <ahmedsamyh10@gmail.com>
Sat, 16 Nov 2024 18:07:11 +0000 (23:07 +0500)
committerahmedsamyh <ahmedsamyh10@gmail.com>
Sat, 16 Nov 2024 18:07:11 +0000 (23:07 +0500)
- Update tests.

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

index 305c98fcef81015c1fe04505f1954619211936ef..41c73a8ac5f562684106bf0b776aafb1a866ecca 100644 (file)
--- a/main.momo
+++ b/main.momo
@@ -1,5 +1,6 @@
-( ) {} ->
+() {} [] ->
 - + / * %
 = !
 >= > < <= != ==
 , : ;
+
diff --git a/main.py b/main.py
index 9e8f37617dca1a95217056786b6a03208de9dc50..c8be4752cf46fd66f18acdb2f5b8c9e9efd77d95 100644 (file)
--- a/main.py
+++ b/main.py
@@ -58,32 +58,36 @@ class TokenType(IntEnum):
     COMMA = auto()
     COLON = auto()
     SEMICOLON = auto()
+    LEFT_SQUARE_BRACE = auto()
+    RIGHT_SQUARE_BRACE = auto()
     COUNT = auto()
 
 token_type_as_str_map: { TokenType : str } = {
-    TokenType.IDENT         : "Ident",
-    TokenType.STRING        : "String",
-    TokenType.LEFT_PAREN    : "Left paren",
-    TokenType.RIGHT_PAREN   : "Right paren",
-    TokenType.MINUS         : "Minus",
-    TokenType.LEFT_BRACE    : "Left brace",
-    TokenType.RIGHT_BRACE   : "Right brace",
-    TokenType.RETURNER      : "Returner",
-    TokenType.PLUS          : "Plus",
-    TokenType.DIVIDE        : "Divide",
-    TokenType.MULTIPLY      : "Multiply",
-    TokenType.MODULUS       : "Modulus",
-    TokenType.EQUAL         : "Equal",
-    TokenType.NOT           : "Not",
-    TokenType.NOT_EQUAL     : "Not Equal",
-    TokenType.EQUAL_EQUAL   : "Equal Equal",
-    TokenType.GT            : "Greater Than",
-    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",
+    TokenType.IDENT                : "Ident",
+    TokenType.STRING               : "String",
+    TokenType.LEFT_PAREN           : "Left Paren",
+    TokenType.RIGHT_PAREN          : "Right Paren",
+    TokenType.MINUS                : "Minus",
+    TokenType.LEFT_BRACE           : "Left Brace",
+    TokenType.RIGHT_BRACE          : "Right Brace",
+    TokenType.RETURNER             : "Returner",
+    TokenType.PLUS                 : "Plus",
+    TokenType.DIVIDE               : "Divide",
+    TokenType.MULTIPLY             : "Multiply",
+    TokenType.MODULUS              : "Modulus",
+    TokenType.EQUAL                : "Equal",
+    TokenType.NOT                  : "Not",
+    TokenType.NOT_EQUAL            : "Not Equal",
+    TokenType.EQUAL_EQUAL          : "Equal Equal",
+    TokenType.GT                   : "Greater Than",
+    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",
+    TokenType.LEFT_SQUARE_BRACE    : "Left Square Brace",
+    TokenType.RIGHT_SQUARE_BRACE   : "Right Square Brace",
 }
 # NOTE: TokenType.COUNT - 1 because auto() starts from 1
 assert len(token_type_as_str_map) == TokenType.COUNT-1
@@ -251,6 +255,12 @@ class Parser:
         elif c == ';':
             loc = Loc(self.filename, self.line, self.row())
             return Token(TokenType.SEMICOLON, self.consume_char(), loc)
+        elif c == '[':
+            loc = Loc(self.filename, self.line, self.row())
+            return Token(TokenType.LEFT_SQUARE_BRACE, self.consume_char(), loc)
+        elif c == ']':
+            loc = Loc(self.filename, self.line, self.row())
+            return Token(TokenType.RIGHT_SQUARE_BRACE, self.consume_char(), loc)
         else:
             fatal(f"Unrecognized character '{c}'")
 
index 305c98fcef81015c1fe04505f1954619211936ef..41c73a8ac5f562684106bf0b776aafb1a866ecca 100644 (file)
@@ -1,5 +1,6 @@
-( ) {} ->
+() {} [] ->
 - + / * %
 = !
 >= > < <= != ==
 , : ;
+
index 64ba762262ff365596eac56a615f55f97a56db29..7ff8f6fba66035b00276c19640c3c7ced79f71ba 100644 (file)
@@ -1,8 +1,10 @@
-"Token (Left paren, '(', ./tests/06-single-char-symbols.momo:1:0)"
-"Token (Right paren, ')', ./tests/06-single-char-symbols.momo:1:2)"
-"Token (Left brace, '{', ./tests/06-single-char-symbols.momo:1:4)"
-"Token (Right brace, '}', ./tests/06-single-char-symbols.momo:1:5)"
-"Token (Returner, '->', ./tests/06-single-char-symbols.momo:1:7)"
+"Token (Left Paren, '(', ./tests/06-single-char-symbols.momo:1:0)"
+"Token (Right Paren, ')', ./tests/06-single-char-symbols.momo:1:1)"
+"Token (Left Brace, '{', ./tests/06-single-char-symbols.momo:1:3)"
+"Token (Right Brace, '}', ./tests/06-single-char-symbols.momo:1:4)"
+"Token (Left Square Brace, '[', ./tests/06-single-char-symbols.momo:1:6)"
+"Token (Right Square Brace, ']', ./tests/06-single-char-symbols.momo:1:7)"
+"Token (Returner, '->', ./tests/06-single-char-symbols.momo:1:9)"
 "Token (Minus, '-', ./tests/06-single-char-symbols.momo:2:0)"
 "Token (Plus, '+', ./tests/06-single-char-symbols.momo:2:2)"
 "Token (Divide, '/', ./tests/06-single-char-symbols.momo:2:4)"