From f9232a6bb2fc450d31bffbc1b864344e049d8bcc Mon Sep 17 00:00:00 2001 From: LordBaryhobal Date: Thu, 5 Feb 2026 03:03:05 +0100 Subject: [PATCH] feat(lexer): add operators --- src/lexer.py | 43 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/src/lexer.py b/src/lexer.py index 3ae9fe3..e51105f 100644 --- a/src/lexer.py +++ b/src/lexer.py @@ -75,15 +75,40 @@ class Lexer: def scan_token(self): char: str = self.advance() match char: - case "(": self.add_token(TokenType.LEFT_PAREN) - case ")": self.add_token(TokenType.RIGHT_PAREN) - case "{": self.add_token(TokenType.LEFT_BRACE) - case "}": self.add_token(TokenType.RIGHT_BRACE) - case ",": self.add_token(TokenType.COMMA) - case ".": self.add_token(TokenType.DOT) - case ";": self.add_token(TokenType.SEMICOLON) - case ":": self.add_token(TokenType.COLON) - case _: self.error("Unexpected character") + case "(": + self.add_token(TokenType.LEFT_PAREN) + case ")": + self.add_token(TokenType.RIGHT_PAREN) + case "{": + self.add_token(TokenType.LEFT_BRACE) + case "}": + self.add_token(TokenType.RIGHT_BRACE) + case ",": + self.add_token(TokenType.COMMA) + case ".": + self.add_token(TokenType.DOT) + case ";": + self.add_token(TokenType.SEMICOLON) + case ":": + self.add_token(TokenType.COLON) + case "+": + self.add_token(TokenType.PLUS_EQUAL if self.match("=") else TokenType.PLUS) + case "-": + self.add_token(TokenType.MINUS_EQUAL if self.match("=") else TokenType.MINUS) + case "/": + self.add_token(TokenType.SLASH_EQUAL if self.match("=") else TokenType.SLASH) + case "*": + self.add_token(TokenType.STAR_EQUAL if self.match("=") else TokenType.STAR) + case "=": + self.add_token(TokenType.EQUAL_EQUAL if self.match("=") else TokenType.EQUAL) + case "!": + self.add_token(TokenType.BANG_EQUAL if self.match("=") else TokenType.BANG) + case ">": + self.add_token(TokenType.GREATER_EQUAL if self.match("=") else TokenType.GREATER) + case "<": + self.add_token(TokenType.LESS_EQUAL if self.match("=") else TokenType.LESS) + case _: + self.error("Unexpected character") return None