(* Copyright (C) 1989, Digital Equipment Corporation *) (* All rights reserved. *) (* See the file COPYRIGHT for a full description. *) (* File: Marker.i3 *) (* Last Modified On Fri Feb 9 19:44:56 1990 by kalsow *) (* Modified On Sat Jun 10 18:44:15 PDT 1989 by muller *) INTERFACE Marker; IMPORT String, Type, Variable; TYPE Prefix = String.T; Label = INTEGER; PROCEDURE Pop (); (* TRY-EXCEPT *) PROCEDURE PushTry (p: Prefix; x: Label); PROCEDURE PushTryElse (p: Prefix; x: Label); PROCEDURE EmitElse (p: Prefix; x: Label); (* TRY-FINALLY *) PROCEDURE PushFinally (p: Prefix; x: Label); PROCEDURE StartOfFinally (p: Prefix; x: Label); PROCEDURE MiddleOfFinally (p: Prefix; x: Label; VAR(*OUT*) returnSeen, exitSeen: BOOLEAN); PROCEDURE EndOfFinally (p: Prefix; x: Label; returnSeen, exitSeen: BOOLEAN); (* LOOP-EXIT *) PROCEDURE PushExit (p: Prefix; x: Label); PROCEDURE ExitOK (): BOOLEAN; PROCEDURE EmitExit (); (* TRY-PASSING (RAISES) *) PROCEDURE PushRaises (p: Prefix; x: Label); PROCEDURE StartRaises (p: Prefix; x: Label; t: Type.T); PROCEDURE EndRaises (t: Type.T); (* PROCEDURE-RETURN *) PROCEDURE PushProcedure (t: Type.T; v: Variable.T; inline := FALSE); PROCEDURE ReturnOK (): BOOLEAN; PROCEDURE ReturnVar (VAR(*OUT*) t: Type.T; VAR(*OUT*) v: Variable.T); PROCEDURE EmitReturn (); PROCEDURE Initialize (); END Marker.