Esempio n. 1
0
 def visit_BinOp(self, expr):
     left = self.visit(expr.left)
     right = self.visit(expr.right)
     if is_symbolic(left) or is_symbolic(right):
         op = self.op_map.get(type(expr.op))
         if op is None:
             raise NotImplementedError(
                 "'%r' operator not supported for symbols" % expr.op)
         return op(left, right)
     else:
         op = ast.BinOp(self._name('left'), expr.op, self._name('right'))
         return self._eval_ast(op, locals(), tag='visit_BinOp')
Esempio n. 2
0
 def visit_UnaryOp(self, expr):
     operand = self.visit(expr.operand)
     if is_symbolic(operand):
         op = self.op_map.get(type(expr.op))
         if op is None:
             raise NotImplementedError(
                 "'%r' operator not supported for symbols" % expr.op)
         return op(operand)
     else:
         op = ast.UnaryOp(expr.op, self._name('operand'))
         return self._eval_ast(op, locals(), tag='visit_UnaryOp')