(* Copyright (C) 1989, Digital Equipment Corporation *) (* All rights reserved. *) (* See the file COPYRIGHT for a full description. *) (* File: ExitStmt.m3 *) (* Last modified on Tue Apr 10 22:54:44 1990 by muller *) (* modified on Sat Feb 10 20:37:47 1990 by kalsow *) MODULE ExitStmt; IMPORT Stmt, StmtRep, Error, Token, Scanner, Marker; TYPE P = Stmt.T OBJECT METHODS bind := Bind; check := Check; precompile := Precompile; compile := Compile; END; PROCEDURE Parse (READONLY fail: Token.Set): Stmt.T = VAR p: P; BEGIN p := NEW (P); StmtRep.Init (p); Scanner.Match (Token.T.tEXIT, fail, Token.Set {}); RETURN p; END Parse; PROCEDURE Bind (<*UNUSED*> p: P) = BEGIN END Bind; PROCEDURE Check (<*UNUSED*> p: P) = BEGIN IF NOT Marker.ExitOK () THEN Error.Msg ("EXIT not contained in a loop"); END; END Check; PROCEDURE Precompile (<*UNUSED*> p: P) = BEGIN END Precompile; PROCEDURE Compile (<*UNUSED*> p: P): Stmt.Outcomes = BEGIN Marker.EmitExit (); RETURN Stmt.Outcomes {Stmt.Outcome.Exits}; END Compile; BEGIN END ExitStmt.