package eu.wietsevenema.lang.oberon.interpreter; import eu.wietsevenema.lang.oberon.ast.types.VarType; import eu.wietsevenema.lang.oberon.exceptions.SymbolAlreadyDeclaredException; import eu.wietsevenema.lang.oberon.exceptions.SymbolNotDeclaredException; import eu.wietsevenema.lang.oberon.exceptions.TypeNotDeclaredException; public interface Scope { public abstract Scope getParent(); public abstract VarType lookupType(String symbol) throws TypeNotDeclaredException; public abstract void declareType(String symbol, VarType type); public abstract Procedure lookupProc(String symbol) throws SymbolNotDeclaredException; public abstract void declareProc(String symbol, Procedure proc) throws SymbolAlreadyDeclaredException; }