loki.ir.visitor
Visitor base classes for traversing the IR
Classes
A generic visitor class to traverse the IR tree. |
|
|
The basic visitor-class for traversing Loki's control flow tree. |
- class GenericVisitor
Bases:
object
A generic visitor class to traverse the IR tree.
To define handlers, subclasses should define
visit_Foo
methods for each classFoo
they want to handle. If a specific method for a classFoo
is not found, the MRO of the class is walked in order until a matching method is found. The method signature is:def visit_Foo(self, o, [*args, **kwargs]): pass
The handler is responsible for visiting the children (if any) of the node
o
.*args
and**kwargs
may be used to pass information up and down the call stack. You can also pass named keyword arguments, e.g.:def visit_Foo(self, o, parent=None, *args, **kwargs): pass
- default_args = {}
Dict of default keyword arguments for the visitor. These are not used by default in
visit()
, however, a caller may pass them explicitly tovisit()
by accessingdefault_args
. For example:v = FooVisitor() v.visit(node, **v.default_args)
- classmethod default_retval()
Default return value for handler methods.
This method returns an object to use to populate return values. If your visitor combines values in a tree-walk, it may be useful to provide an object to combine the results into.
default_retval()
may be defined by the visitor to be called to provide an empty object of appropriate type.- Return type:
None
- lookup_method(instance)
Look up a handler method for a visitee.
- Parameters:
instance – The instance to look up a method for.
- visit(o, *args, **kwargs)
Apply this
Visitor
to an IR tree.- Parameters:
o (
Node
) – The node to visit.*args – Optional arguments to pass to the visit methods.
**kwargs – Optional keyword arguments to pass to the visit methods.
- visit_object(o, **kwargs)
Fallback method for objects that do not match any handler.
- Parameters:
o – The object to visit.
**kwargs – Optional keyword arguments passed to the visit methods.
- Returns:
The default return value.
- Return type:
- class Visitor
Bases:
GenericVisitor
The basic visitor-class for traversing Loki’s control flow tree.
It enhances the generic visitor class
GenericVisitor
with the ability to recurse for all children of aNode
.- visit_tuple(o, **kwargs)
Visit all elements in a tuple and return the results as a tuple.
- visit_list(o, **kwargs)
Visit all elements in a tuple and return the results as a tuple.
- static reuse(o, *args, **kwargs)
A visit method to reuse a node, ignoring children.
- maybe_rebuild(o, *args, **kwargs)
A visit method that rebuilds nodes if their children have changed.
- always_rebuild(o, *args, **kwargs)
A visit method that always rebuilds nodes.