def visitAugmentedAssignmentStatement()

in Extractors/Python/extractor/xmlnodegenerator.py [0:0]


    def visitAugmentedAssignmentStatement(self, assignmentStatement: ast.Assign):
        ''' Visits an augmented assignment statement
            AugAssign(expr target, operator op, expr value) '''
        result = ET.Element("AugmentedAssign")
        result.append(self.visitExpression(assignmentStatement.target))

        if isinstance(assignmentStatement.op, ast.Add):
            result.set("op", "Plus") # +=
        elif isinstance(assignmentStatement.op, ast.Sub):
            result.set("op", "Minus") # -=
        elif isinstance(assignmentStatement.op, ast.Mult):
            result.set("op", "Multiply") # *=
        elif isinstance(assignmentStatement.op, ast.Div):
            result.set("op", "Divide") # /=
        elif isinstance(assignmentStatement.op, ast.Mod):
            result.set("op", "Mod") # %=
        elif isinstance(assignmentStatement.op, ast.Pow):
            result.set("op", "Power") # **=
        elif isinstance(assignmentStatement.op, ast.LShift):
            result.set("op", "LeftShift") # >>=
        elif isinstance(assignmentStatement.op, ast.RShift):
            result.set("op", "RightShift") # <<=
        elif isinstance(assignmentStatement.op, ast.And):
            result.set("op", "And") # &=
        elif isinstance(assignmentStatement.op, ast.Or):
            result.set("op", "Or") # |=
        elif isinstance(assignmentStatement.op, ast.BitXor):
            result.set("op", "Xor") # ^=
        elif isinstance(assignmentStatement.op, ast.FloorDiv):
            result.set("op", "FloorDiv") # //=
        else:
            raise NotImplementedError("Unimplemented augmented operator: " + str(type(assignmentStatement.op)))

        result.append(self.visitExpression(assignmentStatement.value))
        return result