VARIABLESSSS

This commit is contained in:
SpookyDervish
2025-10-13 21:05:03 +11:00
parent 4e17674361
commit f9cd1dba29
17 changed files with 366 additions and 65 deletions

View File

@@ -8,6 +8,7 @@ class TokenType(Enum):
ILLEGAL = "ILLEGAL"
# Data types
IDENT = "IDENT"
INT = "INT"
FLOAT = "FLOAT"
@@ -19,6 +20,9 @@ class TokenType(Enum):
POW = "POW"
MODULUS = "MODULUS"
# Assignment symbols
EQ = "EQ"
# Symbols
LPAREN = "LPAREN"
RPAREN = "RPAREN"
@@ -29,6 +33,11 @@ class TokenType(Enum):
COLON = "COLON"
SEMICOLON = "SEMICOLON"
# Keywords
# Typing
TYPE = "TYPE"
class Token:
def __init__(self, type: TokenType, literal: Any, line_no: int, position: int) -> None:
self.type = type
@@ -40,4 +49,29 @@ class Token:
return f"token[{self.type} : {self.literal} : Line {self.line_no} : Position {self.position}]"
def __repr__(self) -> str:
return str(self)
return str(self)
KEYWORDS: dict[str, TokenType] = {
}
ALT_KEYWORDS: dict[str, TokenType] = {
}
TYPE_KEYWORDS: list[str] = ["Int", "Float", "String", "Bool", "List", "Nil"]
def lookup_ident(ident: str) -> TokenType:
tt: TokenType | None = KEYWORDS.get(ident)
if tt is not None:
return tt
tt: TokenType | None = ALT_KEYWORDS.get(ident)
if tt is not None:
return tt
if ident in TYPE_KEYWORDS:
return TokenType.TYPE
return TokenType.IDENT