if statements work
This commit is contained in:
33
lexer.py
33
lexer.py
@@ -95,8 +95,39 @@ class Lexer:
|
||||
tok = self.__new_token(TokenType.POW, self.current_char)
|
||||
case "%":
|
||||
tok = self.__new_token(TokenType.MODULUS, self.current_char)
|
||||
case "<":
|
||||
# Handle <=
|
||||
if self.__peek_char() == "=":
|
||||
ch = self.current_char
|
||||
self.__read_char()
|
||||
tok = self.__new_token(TokenType.LT_EQ, ch + self.current_char)
|
||||
else:
|
||||
tok = self.__new_token(TokenType.LT, self.current_char)
|
||||
case ">":
|
||||
# Handle >=
|
||||
if self.__peek_char() == "=":
|
||||
ch = self.current_char
|
||||
self.__read_char()
|
||||
tok = self.__new_token(TokenType.GT_EQ, ch + self.current_char)
|
||||
else:
|
||||
tok = self.__new_token(TokenType.GT, self.current_char)
|
||||
case "=":
|
||||
tok = self.__new_token(TokenType.EQ, self.current_char)
|
||||
# Handle ==
|
||||
if self.__peek_char() == "=":
|
||||
ch = self.current_char
|
||||
self.__read_char()
|
||||
tok = self.__new_token(TokenType.EQ_EQ, ch + self.current_char)
|
||||
else:
|
||||
tok = self.__new_token(TokenType.EQ, self.current_char)
|
||||
case "!":
|
||||
# Handle !=
|
||||
if self.__peek_char() == "=":
|
||||
ch = self.current_char
|
||||
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)
|
||||
case "(":
|
||||
tok = self.__new_token(TokenType.LPAREN, self.current_char)
|
||||
case ")":
|
||||
|
||||
Reference in New Issue
Block a user