Пример #1
0
 def visit_Compare(self, node):
     self.generic_visit(node)
     all_compare = zip(node.ops, node.comparators)
     for op, comp in all_compare:
         self.combine(
             node,
             comp,
             unary_op=lambda x: ExpressionType(operator_to_lambda[type(op)],
                                               [self.result[node.left], x]))
Пример #2
0
 def visit_AugAssign(self, node):
     self.visit(node.value)
     if isinstance(node.target, ast.Subscript):
         if self.visit_AssignedSubscript(node.target):
             for alias in self.strict_aliases[node.target.value].aliases:
                 fake = ast.Subscript(alias, node.target.value, ast.Store())
                 # We don't check more aliasing as it is a fake node.
                 self.combine(
                     fake,
                     node.value,
                     lambda x, y: x + ExpressionType(
                         operator_to_lambda[type(node.op)], [x, y]),
                     register=True)
     # We don't support aliasing on subscript
     self.combine(node.target,
                  node.value,
                  lambda x, y: x + ExpressionType(
                      operator_to_lambda[type(node.op)], [x, y]),
                  register=True,
                  aliasing_type=isinstance(node.target, ast.Name))
Пример #3
0
 def F(x, y):
     return ExpressionType(operator_to_lambda[type(node.op)],
                           [x, y])
Пример #4
0
 def f(x):
     return ExpressionType(lambda a, b: "{0}[{1}]".format(a, b),
                           [x, self.result[node.slice]])