INTERFACEThis is not intended as a client interface, but as support for the implementation of various tree walk models. TheAST_WalkRep ; IMPORT AST; IMPORT AST_Iter AS Previous_View;
ASTWalk interface
provides one such model. All AST nodes, other than leaf nodes, must
provide an implementation of the walk method.
TYPE NODE = Previous_View.NODE OBJECT
METHODS
walk(handle: Handle) RAISES ANY := Null;
END;
REVEAL AST.NODE <: NODE;
TYPE
Handle <: Handle_public;
Handle_public = OBJECT
METHODS
Visit(n: AST.NODE) RAISES ANY;
END;
PROCEDURE Null(n: NODE; handle: Handle) RAISES {};
returns immediately; used as default method
END AST_WalkRep.The
walk method visits the children of self, in some order
determined by the concrete method. The connection to the callback
interface provided by ASTWalk is through handle, which provides
the Visit method. Each implementation of the walk method should
apply Visit to its children. The Visit method encapsulates the
callback and the application of walk to the child nodes.
Since the connection to ASTWalk is decoupled by the handle type,
it is possible to devise alternate implementations of the Visit
method without altering this interface or the implementations of
the walk methods.