Closed loradd closed 2 years ago
See comment in #7.
@dataclass class Scope: symbols: Dict[str, List[Symbol]] = field(default_factory=list) parent: Optional['Scope'] = field(default=None) def lookup(self, symbol_name: str, symbol_type: type = Symbol) -> Optional[Symbol]: return next((symbol for symbol in self.symbols.get(symbol_name, []) if isinstance(symbol, symbol_type)), self.parent.lookup(symbol_name, symbol_type) if self.parent is not None else None) def add(self, symbol: Symbol): self.symbols[symbol.name] = self.symbols.get(symbol.name, []) + [symbol]
See comment in #7.