feat(parser): update lexer with new tokens

This commit is contained in:
2026-05-21 09:15:14 +02:00
parent 429d0d98fe
commit 98c3510bd4
3 changed files with 34 additions and 24 deletions

View File

@@ -3,7 +3,9 @@ from lexer.token import TokenType
KEYWORDS: dict[str, TokenType] = {
"type": TokenType.TYPE,
"op": TokenType.OP,
"constraint": TokenType.CONSTRAINT,
"predicate": TokenType.PREDICATE,
"extend": TokenType.EXTEND,
"where": TokenType.WHERE,
"true": TokenType.TRUE,
"false": TokenType.FALSE,
"none": TokenType.NONE,

View File

@@ -31,30 +31,32 @@ class MidasLexer(Lexer):
self.add_token(
TokenType.EQUAL_EQUAL if self.match("=") else TokenType.EQUAL
)
case "!":
if self.match("="):
self.add_token(TokenType.BANG_EQUAL)
else:
self.error("Unexpected single bang. Did you mean '!=' ?")
case "!" if self.match("="):
self.add_token(TokenType.BANG_EQUAL)
case ":":
self.add_token(TokenType.COLON)
case ",":
self.add_token(TokenType.COMMA)
case ".":
self.add_token(TokenType.DOT)
case "&":
self.add_token(TokenType.AND)
case "?":
self.add_token(TokenType.QMARK)
# case ",":
# self.add_token(TokenType.COMMA)
case "_":
self.add_token(TokenType.UNDERSCORE)
case "+":
self.add_token(TokenType.PLUS)
case "-" if self.match(">"):
self.add_token(TokenType.ARROW)
# case "+":
# self.add_token(TokenType.PLUS)
case "-":
self.add_token(TokenType.MINUS)
case "*":
self.add_token(TokenType.STAR)
case "/":
if self.match("/"):
self.scan_comment()
elif self.match("*"):
self.scan_comment_multiline()
else:
self.add_token(TokenType.SLASH)
# case "*":
# self.add_token(TokenType.STAR)
case "/" if self.match("/"):
self.scan_comment()
case "/" if self.match("*"):
self.scan_comment_multiline()
case "\n":
self.add_token(TokenType.NEWLINE)
case " " | "\r" | "\t":

View File

@@ -14,14 +14,18 @@ class TokenType(Enum):
LEFT_BRACE = auto()
RIGHT_BRACE = auto()
COLON = auto()
COMMA = auto()
# COMMA = auto()
UNDERSCORE = auto()
ARROW = auto()
AND = auto()
QMARK = auto()
DOT = auto()
# Operators
PLUS = auto()
# PLUS = auto()
MINUS = auto()
STAR = auto()
SLASH = auto()
# STAR = auto()
# SLASH = auto()
GREATER = auto()
GREATER_EQUAL = auto()
LESS = auto()
@@ -40,7 +44,9 @@ class TokenType(Enum):
# Keywords
TYPE = auto()
OP = auto()
CONSTRAINT = auto()
PREDICATE = auto()
EXTEND = auto()
WHERE = auto()
# Misc
COMMENT = auto()