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))
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
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)