12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #adptwv (* Pre-process with filter *)
- (*
-
- PASCAL BASED MINI-LISP
-
- File: PASN.RED - Trailer File
- ChangeDate: 5:39am Saturday, 26 September 1981
- By: M. L. Griss
- Add Hooks for CATCH/THROW
-
- All RIGHTS RESERVED
- COPYRIGHT (C) - 1981 - M. L. GRISS
- Computer Science Department
- University of Utah
-
- Do Not distribute with out written consent of M. L. Griss
-
- *)
- (* pasN.PAS ---- the last file to be appended, close CATCH, do init *)
- BEGIN (* Body of Catch *)
- IF initphase=0 THEN (* Kludge to get into scope of CATCH *)
- BEGIN init; initphase := 1; firstp; END
- ELSE BEGIN
- #p initphase:=initphase+1; (* ??? *)
- idspace[xthrowing].val := nilref;
- catch_stk:=st; (* Capture Stack *)
- catch_bstk:=idspace[xbstack].val; (* Capture Bstack *)
- xeval;
- #p initphase:=initphase-1; (* ??? *)
- (* Return Point *)
- #adv 9999:
- IF idspace[xthrowing].val <> nilref
- THEN BEGIN
- st:=catch_stk;
- r[2]:=catch_bstk;
- xunbindto; (* return value, old stack *)
- END;
- END
- END (* catch *);
- BEGIN (* Top Level *)
- initphase := 0;
- r[1] := nilref;
- Xcatch;
- #d break(tty);
- end.
|