def expression_nodes(expression):
        todo = [expression]
        while todo:
            expression = todo.pop()
            if expression is not None:
                yield expression
            if isinstance(expression, Expression):
                todo.extend(expression.get_source_expressions())
Recursively visit an expression object, yielding each node in turn.
dataset/ETHPy150Open KristianOellegaard/django-hvad/hvad/query.py/expression_nodes