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

23
environment.py Normal file
View File

@@ -0,0 +1,23 @@
from llvmlite import ir
class Environment:
def __init__(self, records: dict[str, tuple[ir.Value, ir.Type]] = None, parent = None, name: str = "global") -> None:
self.records: dict[str, tuple[ir.Value, ir.Type]] = records if records else {}
self.parent = parent
self.name: str = name
def define(self, name: str, value: ir.Value, _type: ir.Type) -> ir.Value:
self.records[name] = (value, _type)
return value
def lookup(self, name: str) -> tuple[ir.Value, ir.Type]:
return self.__resolve(name)
def __resolve(self, name: str) -> tuple[ir.Value, ir.Type]:
if name in self.records:
return self.records[name]
elif self.parent:
return self.parent.__resolve(name)
else:
return None