def visitExpression()

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


    def visitExpression(self, expression):
        ''' Visits any expression '''
        if isinstance(expression, ast.Num):
            result = self.visitNumberLiteral(expression)
        elif isinstance(expression, ast.Str):
            result = self.visitStringLiteral(expression)
        elif isinstance(expression, ast.Bytes):
            result = self.visitBytesLiteral(expression)
        elif isinstance(expression, ast.BinOp):
            result = self.visitBinOpExpression(expression)
        elif isinstance(expression, ast.BoolOp):
            result = self.visitBoolOpExpression(expression)
        elif isinstance(expression, ast.UnaryOp):
            result = self.visitUnaryOpExpression(expression)
        elif isinstance(expression, ast.Compare):
            result = self.visitCompareExpression(expression)
        elif isinstance(expression, ast.IfExp):
            result = self.visitTernaryIfExpression(expression)
        elif isinstance(expression, ast.Name):
            result = self.visitName(expression)
        elif isinstance(expression, ast.NameConstant):
            result = self.visitNameConstant(expression)
        elif isinstance(expression, ast.List):
            result = self.visitList(expression)
        elif isinstance(expression, ast.Set):
            result = self.visitSet(expression)
        elif isinstance(expression, ast.Dict):
            result = self.visitDict(expression)
        elif isinstance(expression, ast.Tuple):
            result = self.visitTuple(expression)
        elif isinstance(expression, ast.ListComp):
            result = self.visitListComprehension(expression)
        elif isinstance(expression, ast.SetComp):
            result = self.visitSetComprehension(expression)
        elif isinstance(expression, ast.DictComp):
            result = self.visitDictComprehension(expression)
        elif isinstance(expression, ast.Call):
            result = self.visitCall(expression)
        elif isinstance(expression, ast.Subscript):
            result = self.visitSubscript(expression)
        elif isinstance(expression, ast.Slice):
            result = self.visitSlice(expression)
        elif isinstance(expression, ast.Ellipsis):
            result = self.visitEllipsis(expression)
        elif isinstance(expression, ast.Attribute):
            result = self.visitAttribute(expression)
        elif isinstance(expression, ast.Starred):
            result = self.visitStarred(expression)
        elif isinstance(expression, ast.GeneratorExp):
            result = self.visitGenerator(expression)
        elif isinstance(expression, ast.Lambda):
            result = self.visitLambda(expression)
        elif isinstance(expression, ast.Yield):
            result = self.visitYield(expression)
        elif isinstance(expression, ast.YieldFrom):
            result = self.visitYieldFrom(expression)
        elif isinstance(expression, ast.Await):
            result = self.visitAwait(expression)
        elif isinstance(expression, ast.JoinedStr):
            result = self.visitJoinedStr(expression)
        elif isinstance(expression, ast.FormattedValue):
            result = self.visitFormattedValue(expression)
        else:
            raise NotImplementedError("This expression type is not implemented: " + str(type(expression)))

        result.attrib["StartLine"] = str(expression.lineno)
        result.attrib["StartCol"] = str(expression.col_offset+1)
        # result.attrib["EndLine"] = str(statementNode.end_lineno)
        # result.attrib["EndCol"] = str(statementNode.end_col_offset)

        return result