Example #1
0
            def makeAST(self, place, val):
                # check it's a valid place (discard result)
                compilePlace(place) 

                assertResult(val, "use in %s" % op)
                return ast.AugAssign(topy(place),
                                     op,
                                     topy(val))
Example #2
0
    def expr_stmt(self, nodelist):
        if not self.__template_type or not self.__template_type[-1]:
            return transformer.Transformer.expr_stmt(self, nodelist)

        # Instead of discarding objects on the stack, call
        # "IO_INSTANCE += obj".
        exprNode = self.com_node(nodelist[-1])
        if len(nodelist) == 1:
            lval = ast.Name(IO_INSTANCE)
            n = ast.AugAssign(lval, '+=', exprNode)
            if hasattr(exprNode, 'lineno'):
                n.lineno = exprNode.lineno
        elif nodelist[1][0] == token.EQUAL:
            nodes = []
            for i in range(0, len(nodelist) - 2, 2):
                nodes.append(self.com_assign(nodelist[i], OP_ASSIGN))
            n = ast.Assign(nodes, exprNode)
            n.lineno = nodelist[1][2]
        else:
            lval = self.com_augassign(nodelist[0])
            op = self.com_augassign_op(nodelist[1])
            n = ast.AugAssign(lval, op[1], exprNode)
            n.lineno = op[2]
        return n
Example #3
0
 def _do_AugAssignStatement(self, node):
     target = self.transform(node.Left)
     op = node.Operator.Symbol + '='
     expr = self.transform(node.Right)
     return ast.AugAssign(target, op, expr)