Files
Plasma/environment.py
SpookyDervish f9cd1dba29 VARIABLESSSS
2025-10-13 21:05:03 +11:00

23 lines
710 B
Python

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