started work on assignment operators

This commit is contained in:
SpookyDervish
2025-10-17 06:21:33 +11:00
parent 1d6c3db5e4
commit 24fcbb3fb7
10 changed files with 229 additions and 137 deletions

View File

@@ -84,13 +84,33 @@ class Lexer:
match self.current_char:
case "+":
tok = self.__new_token(TokenType.PLUS, self.current_char)
if self.__peek_char() == "=":
ch = self.current_char
self.__read_char()
tok = self.__new_token(TokenType.PLUS_EQ, ch + self.current_char)
else:
tok = self.__new_token(TokenType.PLUS, self.current_char)
case "-":
tok = self.__new_token(TokenType.MINUS, self.current_char)
if self.__peek_char() == "=":
ch = self.current_char
self.__read_char()
tok = self.__new_token(TokenType.MINUS_EQ, ch + self.current_char)
else:
tok = self.__new_token(TokenType.MINUS, self.current_char)
case "*":
tok = self.__new_token(TokenType.ASTERISK, self.current_char)
if self.__peek_char() == "=":
ch = self.current_char
self.__read_char()
tok = self.__new_token(TokenType.MUL_EQ, ch + self.current_char)
else:
tok = self.__new_token(TokenType.ASTERISK, self.current_char)
case "/":
tok = self.__new_token(TokenType.SLASH, self.current_char)
if self.__peek_char() == "=":
ch = self.current_char
self.__read_char()
tok = self.__new_token(TokenType.DIV_EQ, ch + self.current_char)
else:
tok = self.__new_token(TokenType.SLASH, self.current_char)
case "^":
tok = self.__new_token(TokenType.POW, self.current_char)
case "%":
@@ -126,8 +146,7 @@ class Lexer:
self.__read_char()
tok = self.__new_token(TokenType.NOT_EQ, ch + self.current_char)
else:
# TODO: handle BANG
tok = self.__new_token(TokenType.ILLEGAL, self.current_char)
tok = self.__new_token(TokenType.BANG, self.current_char)
case "(":
tok = self.__new_token(TokenType.LPAREN, self.current_char)
case ")":