From: ahmedsamyh Date: Mon, 18 Nov 2024 16:01:41 +0000 (+0500) Subject: Can Parse '#'. X-Git-Url: https://www.git.momoyon.org/?a=commitdiff_plain;h=f0b9dfa47ba4ddc8177faf38e2d645afeca48c69;p=lang.git Can Parse '#'. - No longer append 'None' to tokens. - Updated tests. --- diff --git a/.gitignore b/.gitignore index 73d41de..a6e9d26 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ test.sh +lang.sh diff --git a/main.py b/main.py index 4178323..2c802f7 100644 --- a/main.py +++ b/main.py @@ -60,6 +60,7 @@ class TokenType(IntEnum): COLON = auto() SEMICOLON = auto() DOT = auto() + HASH = auto() LEFT_SQUARE_BRACE = auto() RIGHT_SQUARE_BRACE = auto() @@ -91,6 +92,7 @@ token_type_as_str_map: { TokenType : str } = { TokenType.COLON : "Colon", TokenType.SEMICOLON : "Semicolon", TokenType.DOT : "Dot", + TokenType.HASH : "Hash", TokenType.LEFT_SQUARE_BRACE : "Left Square Brace", TokenType.RIGHT_SQUARE_BRACE : "Right Square Brace", TokenType.NUMBER : "Number" @@ -291,6 +293,9 @@ class Parser: elif c == '.': loc = Loc(self.filename, self.line, self.row()) return Token(TokenType.DOT, self.consume_char(), loc) + elif c == '#': + loc = Loc(self.filename, self.line, self.row()) + return Token(TokenType.HASH, self.consume_char(), loc) elif c.isdigit(): num, loc = self.consume_number() return Token(TokenType.NUMBER, num, loc) @@ -313,10 +318,9 @@ def main(): tokens: [Token] = [] token = parser.next_token() - tokens.append(token) while token != None: - token = parser.next_token() tokens.append(token) + token = parser.next_token() for t in tokens: pprint.pp(str(t)) diff --git a/tests/02-string.momo.test b/tests/02-string.momo.test index 42e0ee9..80e60a7 100644 --- a/tests/02-string.momo.test +++ b/tests/02-string.momo.test @@ -1,2 +1 @@ "Token (String, 'This is a long ass string', ./tests/02-string.momo:1:0)" -'None' diff --git a/tests/03-whitespaced-string.momo.test b/tests/03-whitespaced-string.momo.test index 5523e7f..aecc6b6 100644 --- a/tests/03-whitespaced-string.momo.test +++ b/tests/03-whitespaced-string.momo.test @@ -1,3 +1,2 @@ ("Token (String, 'This is a long ass string', " './tests/03-whitespaced-string.momo:3:0)') -'None' diff --git a/tests/04-identifier.momo.test b/tests/04-identifier.momo.test index 0436921..d6c9899 100644 --- a/tests/04-identifier.momo.test +++ b/tests/04-identifier.momo.test @@ -1,2 +1 @@ "Token (Ident, 'foo', ./tests/04-identifier.momo:1:4)" -'None' diff --git a/tests/05-multiple-identifiers.momo.test b/tests/05-multiple-identifiers.momo.test index 665fb25..8dbb042 100644 --- a/tests/05-multiple-identifiers.momo.test +++ b/tests/05-multiple-identifiers.momo.test @@ -1,4 +1,3 @@ "Token (Ident, 'foo', ./tests/05-multiple-identifiers.momo:1:3)" "Token (Ident, 'bar', ./tests/05-multiple-identifiers.momo:2:1)" "Token (Ident, 'baz', ./tests/05-multiple-identifiers.momo:2:5)" -'None' diff --git a/tests/06-single-char-symbols.momo.test b/tests/06-single-char-symbols.momo.test index 78b6e3c..013b553 100644 --- a/tests/06-single-char-symbols.momo.test +++ b/tests/06-single-char-symbols.momo.test @@ -22,4 +22,3 @@ "Token (Colon, ':', ./tests/06-single-char-symbols.momo:5:2)" "Token (Semicolon, ';', ./tests/06-single-char-symbols.momo:5:4)" "Token (Dot, '.', ./tests/06-single-char-symbols.momo:5:6)" -'None' diff --git a/tests/07-numbers.momo.test b/tests/07-numbers.momo.test index 164c751..87abb27 100644 --- a/tests/07-numbers.momo.test +++ b/tests/07-numbers.momo.test @@ -1,3 +1,2 @@ "Token (Number, '69', ./tests/07-numbers.momo:1:1)" "Token (Number, '100', ./tests/07-numbers.momo:3:1)" -'None' diff --git a/tests/08-floating-point-numbers.momo.test b/tests/08-floating-point-numbers.momo.test index a254459..70ba7c3 100644 --- a/tests/08-floating-point-numbers.momo.test +++ b/tests/08-floating-point-numbers.momo.test @@ -1,4 +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)" -'None'