feat(lexer): add operators
This commit is contained in:
43
src/lexer.py
43
src/lexer.py
@@ -75,15 +75,40 @@ class Lexer:
|
|||||||
def scan_token(self):
|
def scan_token(self):
|
||||||
char: str = self.advance()
|
char: str = self.advance()
|
||||||
match char:
|
match char:
|
||||||
case "(": self.add_token(TokenType.LEFT_PAREN)
|
case "(":
|
||||||
case ")": self.add_token(TokenType.RIGHT_PAREN)
|
self.add_token(TokenType.LEFT_PAREN)
|
||||||
case "{": self.add_token(TokenType.LEFT_BRACE)
|
case ")":
|
||||||
case "}": self.add_token(TokenType.RIGHT_BRACE)
|
self.add_token(TokenType.RIGHT_PAREN)
|
||||||
case ",": self.add_token(TokenType.COMMA)
|
case "{":
|
||||||
case ".": self.add_token(TokenType.DOT)
|
self.add_token(TokenType.LEFT_BRACE)
|
||||||
case ";": self.add_token(TokenType.SEMICOLON)
|
case "}":
|
||||||
case ":": self.add_token(TokenType.COLON)
|
self.add_token(TokenType.RIGHT_BRACE)
|
||||||
case _: self.error("Unexpected character")
|
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
|
return None
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user