--- gforth/search.fs 2003/01/20 17:07:38 1.22 +++ gforth/search.fs 2005/12/31 15:46:10 1.27 @@ -1,6 +1,6 @@ \ search order wordset 14may93py -\ Copyright (C) 1995,1996,1997,1998,2000 Free Software Foundation, Inc. +\ Copyright (C) 1995,1996,1997,1998,2000,2003,2005 Free Software Foundation, Inc. \ This file is part of Gforth. @@ -18,6 +18,8 @@ \ along with this program; if not, write to the Free Software \ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. +require struct.fs + $10 Value maxvp \ current size of search order stack $400 Value maxvp-limit \ upper limit for resizing search order stack 0 AValue vp \ will be initialized later (dynamic) @@ -149,16 +151,25 @@ Vocabulary Root ( -- ) \ gforth \G order (for Gforth, this is the word list @code{Root}). 1 vp! Root also ; +: update-image-order ( -- ) + \ save search order here, let vp point there + here vp over vp @ 1+ cells + dup allot move + to vp ; + : init-vp ( -- ) - $10 TO maxvp - maxvp 1+ cells allocate throw TO vp - Only Forth also definitions ; + vp @ $10 max to maxvp + maxvp 1+ cells allocate throw + vp over vp @ 1+ cells move + TO vp ; :noname init-vp DEFERS 'cold ; IS 'cold -init-vp +here 0 , to vp + +init-vp Only Forth also definitions \ set initial search order 14may93py @@ -199,8 +210,30 @@ lookup ! \ our dictionary search order b \G list that is currently on the top of the search order stack. context @ 1 set-order ; -: .voc - body> >head-noprim name>string type space ; +[IFUNDEF] .name +: id. ( nt -- ) \ gforth i-d-dot + \G Print the name of the word represented by @var{nt}. + \ this name comes from fig-Forth + name>string type space ; + +' id. alias .id ( nt -- ) \ F83 dot-i-d +\G F83 name for @code{id.}. + +' id. alias .name ( nt -- ) \ gforth-obsolete dot-name +\G Gforth <=0.5.0 name for @code{id.}. + +[THEN] + +: .voc ( wid -- ) \ gforth dot-voc +\G print the name of the wordlist represented by @var{wid}. Can +\G only print names defined with @code{vocabulary} or +\G @code{wordlist constant}, otherwise prints @samp{???}. + dup >r wordlist-struct %size + dup head? if ( wid nt ) + dup name>int dup >code-address docon: = swap >body @ r@ = and if + id. rdrop exit + endif + endif + drop r> body> >head-noprim id. ; : order ( -- ) \ gforthman- search-ext \G Print the search order and the compilation word list. The