Esempio n. 1
0
 def _trace_print_function(self, existing_node):
     values = existing_node.args
     message_format = 'print(' + ', '.join(['%r'] * len(values)) + ') '
     return self._create_bare_context_call('add_message', [
         BinOp(left=Str(message_format),
               op=Mod(),
               right=Tuple(elts=values, ctx=Load())),
         Num(existing_node.lineno)
     ])
Esempio n. 2
0
 def visit_Print(self, node):
     existing_node = self.generic_visit(node)
     values = existing_node.values
     message_format = 'print' + ','.join([' %r']*len(values)) + ' '
     return self._create_context_call('add_message',
                                      [BinOp(left=Str(message_format),
                                             op=Mod(),
                                             right=Tuple(elts=values,
                                                         ctx=Load())),
                                       Num(existing_node.lineno)])
Esempio n. 3
0
 def expression(p):
     left = p[0]
     right = p[2]
     operator = p[1]
     if operator.gettokentype() == 'SUM':
         return Sum(left, right)
     elif operator.gettokentype() == 'SUB':
         return Sub(left, right)
     elif operator.gettokentype() == 'MUL':
         return Mul(left, right)
     elif operator.gettokentype() == 'DIV':
         return Div(left, right)
     elif operator.gettokentype() == 'POW':
         return Pow(left, right)
     elif operator.gettokentype() == 'MOD':
         return Mod(left, right)
Esempio n. 4
0
 def _trace_print_function(self, existing_node):
     values = list(existing_node.args)
     formats = ['%r'] * len(values)
     if existing_node.starargs is not None:
         values.append(existing_node.starargs)
         formats.append('*%r')
     for keyword in existing_node.keywords:
         values.append(keyword.value)
         formats.append('{}=%r'.format(keyword.arg))
     message_format = 'print(' + ', '.join(formats) + ') '
     return self._create_bare_context_call('add_message',
                                           [BinOp(left=Str(message_format),
                                                  op=Mod(),
                                                  right=Tuple(elts=values,
                                                              ctx=Load())),
                                            Num(existing_node.lineno)])
Esempio n. 5
0
    def arith_expr(self, a):
        a, op, b = a

        op = {
            '+': Add(),
            '-': Sub(),
            '*': Mult(),
            '@': MatMult(),
            '/': Div(),
            '//': FloorDiv(),
            '%': Mod(),
            '&': BitAnd(),
            '|': BitOr(),
            '^': BitXor(),
            '<<': LShift(),
            '>>': RShift(),
        }.get(op, None)

        return BinOp(left=a, op=op, right=b)
Esempio n. 6
0
 def _trace_print_function(self, existing_node):
     starargs = getattr(existing_node, 'starargs', None)
     values = []
     formats = []
     for a in existing_node.args:
         if Starred is not None and isinstance(a, Starred):
             starargs = a.value
         else:
             values.append(a)
             formats.append('%r')
     if starargs is not None:
         values.append(starargs)
         formats.append('*%r')
     for keyword in existing_node.keywords:
         values.append(keyword.value)
         formats.append('{}=%r'.format(keyword.arg))
     message_format = 'print(' + ', '.join(formats) + ') '
     return self._create_bare_context_call('add_message',
                                           [BinOp(left=Str(message_format),
                                                  op=Mod(),
                                                  right=Tuple(elts=values,
                                                              ctx=Load())),
                                            Num(existing_node.lineno)])