Copyright (C) 1994, Digital Equipment Corp.
AST_Init supports the dynamic initialisation of an AST node.
INTERFACEAST_Init ; IMPORT AST; TYPE NODE = OBJECT METHODS init(): AST.NODE := Null; END; REVEAL AST.NODE <: NODE; PROCEDURE Null(n: NODE): AST.NODE;
Has no side effects and returns n. END AST_Init.Occasionally a particular type of AST node requires dynamic initialisation, and this can be achieved overriding the
init method
defined here. The default value is simply a no-op. Therefore the
conventional way to create an instance of an AST node, SomeNode, is
NEW(SomeNode).init(). Note that, since this init method returns
the type AST.NODE rather than SomeNode, the layer in which the
latter is defined might choose to redefine the init method to return
SomeNode, thus allowing declarations of the form:
VAR n := NEW(SomeNode).init();