# Abstract standard visitor
class Visitor
+ # What the visitor do when a node is visited
+ # Concrete visitors should redefine this method.
+ protected fun visit(e: nullable PNode) is abstract
+
# Ask the visitor to visit a given node.
# Usually automatically called by visit_all* methods.
- # Concrete visitors should redefine this method.
- fun visit(e: nullable PNode) is abstract
+ # This methos should not be redefined
+ fun enter_visit(e: nullable PNode)
+ do
+ var old = _current_node
+ _current_node = e
+ visit(e)
+ _current_node = old
+ end
+
+ # The current visited node
+ readable var _current_node: nullable PNode = null
end
$ end template