From be50a8db3512c30ed18ffe0ec5150ef2e674ac79 Mon Sep 17 00:00:00 2001 From: LordBaryhobal Date: Mon, 18 May 2026 11:02:48 +0200 Subject: [PATCH] feat(parser): add operators to annotations lexer --- lexer/annotations.py | 17 +++++++++++++++++ lexer/midas.py | 5 +++++ lexer/token.py | 1 + 3 files changed, 23 insertions(+) diff --git a/lexer/annotations.py b/lexer/annotations.py index 3cc0431..f72f81a 100644 --- a/lexer/annotations.py +++ b/lexer/annotations.py @@ -14,6 +14,23 @@ class AnnotationLexer(Lexer): self.add_token(TokenType.LEFT_BRACKET) case "]": self.add_token(TokenType.RIGHT_BRACKET) + case "<": + self.add_token( + TokenType.LESS_EQUAL if self.match("=") else TokenType.LESS + ) + case ">": + self.add_token( + TokenType.GREATER_EQUAL if self.match("=") else TokenType.GREATER + ) + case "=": + self.add_token( + TokenType.EQUAL_EQUAL if self.match("=") else TokenType.EQUAL + ) + case "!": + if self.peek() == "=": + self.add_token(TokenType.BANG_EQUAL) + else: + self.error("Unexpected single bang. Did you mean '!=' ?") case ":": self.add_token(TokenType.COLON) case ",": diff --git a/lexer/midas.py b/lexer/midas.py index 16440da..86bfafe 100644 --- a/lexer/midas.py +++ b/lexer/midas.py @@ -31,6 +31,11 @@ class MidasLexer(Lexer): self.add_token( TokenType.EQUAL_EQUAL if self.match("=") else TokenType.EQUAL ) + case "!": + if self.peek() == "=": + self.add_token(TokenType.BANG_EQUAL) + else: + self.error("Unexpected single bang. Did you mean '!=' ?") case ":": self.add_token(TokenType.COLON) case ",": diff --git a/lexer/token.py b/lexer/token.py index 9b5bc13..70a7a1b 100644 --- a/lexer/token.py +++ b/lexer/token.py @@ -28,6 +28,7 @@ class TokenType(Enum): LESS_EQUAL = auto() EQUAL = auto() EQUAL_EQUAL = auto() + BANG_EQUAL = auto() # Literals IDENTIFIER = auto()