Exemple #1
0
    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)
Exemple #2
0
    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)