feat(lexer): add operators

This commit is contained in:
2026-02-05 03:03:05 +01:00
parent 225c467b5a
commit f9232a6bb2

View File

@@ -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