started work on assignment operators
This commit is contained in:
31
lexer.py
31
lexer.py
@@ -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 ")":
|
||||
|
||||
Reference in New Issue
Block a user