--- gforth/Attic/toolsext.fs 1994/12/15 12:35:15 1.4 +++ gforth/Attic/toolsext.fs 1997/02/06 21:23:06 1.9 @@ -1,5 +1,24 @@ \ Interpretative Structuren 16feb92py +\ Copyright (C) 1995 Free Software Foundation, Inc. + +\ This file is part of Gforth. + +\ Gforth is free software; you can redistribute it and/or +\ modify it under the terms of the GNU General Public License +\ as published by the Free Software Foundation; either version 2 +\ of the License, or (at your option) any later version. + +\ This program is distributed in the hope that it will be useful, +\ but WITHOUT ANY WARRANTY; without even the implied warranty of +\ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +\ GNU General Public License for more details. + +\ You should have received a copy of the GNU General Public License +\ along with this program; if not, write to the Free Software +\ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + Variable countif : dummy ; immediate @@ -7,20 +26,22 @@ Variable countif : scanIF f83find dup 0= IF drop ['] dummy >name THEN ; Create [struct]-search ' scanIF A, ' (reveal) A, ' drop A, -Create [struct]-voc NIL A, G [struct]-search T A, +Create [struct]-voc NIL A, [struct]-search A, NIL A, NIL A, : ?if countif @ 0< IF [ [struct]-voc 3 cells + ] ALiteral @ lookup ! THEN ; -UNLOCK Tlast @ NIL Tlast ! LOCK +UNLOCK Tlast @ NIL Tlast ! LOCK +\ last @ 0 last ! : [IF] 1 countif +! ?if ; immediate : [THEN] -1 countif +! ?if ; immediate -: [ELSE] postpone [THEN] r> >exec postpone [IF] ; +: [ELSE] postpone [THEN] postpone [IF] ; immediate ' [IF] Alias [IFDEF] immediate ' [IF] Alias [IFUNDEF] immediate +' [THEN] Alias [ENDIF] immediate ' [IF] Alias [BEGIN] immediate ' [IF] Alias [WHILE] immediate ' [THEN] Alias [UNTIL] immediate @@ -35,7 +56,8 @@ UNLOCK Tlast @ NIL Tlast ! LOCK ' \ Alias \ immediate UNLOCK Tlast @ swap Tlast ! LOCK -1 cells - G [struct]-voc T ! +\ last @ swap last ! +1 cells - [struct]-voc ! \ Interpretative Structuren 30apr92py @@ -48,6 +70,7 @@ UNLOCK Tlast @ swap Tlast ! LOCK : [IFUNDEF] postpone defined 0= postpone [IF] ; immediate : [ELSE] 0 postpone [IF] ; immediate : [THEN] ; immediate +: [ENDIF] ; immediate \ Structs for interpreter 28nov92py