def eval(self, st): new_st = SymbolTable(st) decFunc = new_st.getter(self.value) if len(decFunc.args) == len(self.args): for decVar, callVar in zip(decFunc.args, self.args): new_st.setter(decVar.getstr(), callVar.eval(new_st)) else: raise ValueError( f"error: Expected {len(decFunc.args)} arguments. got {len(self.args)}" ) decFunc.func_statements.eval(new_st) return new_st.getter(decFunc.value)
def eval(self, st): new_st = SymbolTable(st) decFunc = new_st.getter(self.value) if len(decFunc.args) == len(self.args): for decVar, callVar in zip(decFunc.args, self.args): new_st.setter(decVar.getstr(), callVar.eval(new_st)) else: raise ValueError( "AST Error (FuncCall): Expected {} arguments. got {}".format( len(decFunc.args), len(self.args))) decFunc.func_statements.eval(new_st) return new_st.getter(decFunc.value)