Example #1
0
    def eval(self, env, symbols):
        leq = [self.fun]
        req = map(lambda x: [x], self.args)
        env.envClosure(leq)
        map(lambda x: env.envClosure(x), req)
        rc = self.combinations(req)
        for l in leq:
            for r in rc:
                result = self.evalHelper(env, symbols, l, r)
                if result:
                    return result

        return "undefined"
Example #2
0
    def eval(self, env, symbols):
        result = Subscript(None)
        result.lhs = self.lhs.eval(env, symbols)
        result.rhs = self.rhs.eval(env, symbols)
        l = symbol.List(None)
        l.arg = result.lhs
        leq = [l]
        req = [result.rhs]
        env.envClosure(leq)
        env.envClosure(req)
        for r in req:
            if isinstance(r, Num):
                for l in leq:
                    if isinstance(l, Concat):
                        if r.val < len(l.elements):
                            return l.elements[r.val]
                        else:
                            return "subscript out of range"
        #TODO subscripts into constraints

        return result