VARIABLESSSS
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user