Diff for /gforth/glocals.fs between versions 1.39 and 1.48

version 1.39, 1999/02/03 00:10:21 version 1.48, 2002/05/28 08:54:27
Line 1 Line 1
 \ A powerful locals implementation  \ A powerful locals implementation
   
 \ Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc.  \ Copyright (C) 1995,1996,1997,1998,2000 Free Software Foundation, Inc.
   
 \ This file is part of Gforth.  \ This file is part of Gforth.
   
Line 16 Line 16
   
 \ You should have received a copy of the GNU General Public License  \ You should have received a copy of the GNU General Public License
 \ along with this program; if not, write to the Free Software  \ along with this program; if not, write to the Free Software
 \ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  \ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
   
   
 \ More documentation can be found in the manual and in  \ More documentation can be found in the manual and in
Line 87 Line 87
   
 require search.fs  require search.fs
 require float.fs  require float.fs
   require extend.fs \ for case
   
 : compile-@local ( n -- ) \ gforth compile-fetch-local  : compile-@local ( n -- ) \ gforth compile-fetch-local
  case   case
Line 292  locals-types definitions Line 293  locals-types definitions
         postpone laddr# @ lp-offset, ;          postpone laddr# @ lp-offset, ;
   
 \ you may want to make comments in a locals definitions group:  \ you may want to make comments in a locals definitions group:
 ' \ alias \ ( -- ) \ core-ext,block-ext backslash  ' \ alias \ ( compilation 'ccc<newline>' -- ; run-time -- ) \ core-ext,block-ext backslash
 \G Line comment: if @code{BLK} contains 0, parse and discard the remainder  \G Comment till the end of the line if @code{BLK} contains 0 (i.e.,
 \G of the parse area. Otherwise, parse and discard all subsequent characters in the  \G while not loading a block), parse and discard the remainder of the
 \G parse area corresponding to the current line.  \G parse area. Otherwise, parse and discard all subsequent characters
 immediate   \G in the parse area corresponding to the current line.
   immediate
   
 ' ( alias ( ( compilation 'ccc<close-paren>' -- ; run-time -- ) \ core,file     paren  ' ( alias ( ( compilation 'ccc<close-paren>' -- ; run-time -- ) \ core,file     paren
 \G Comment: parse and discard all subsequent characters in the parse  \G Comment, usually till the next @code{)}: parse and discard all
 \G area until ")" is encountered. During interactive input, an end-of-line  \G subsequent characters in the parse area until ")" is
 \G also acts as a comment terminator. For file input, it does not; if the  \G encountered. During interactive input, an end-of-line also acts as
 \G end-of-file is encountered whilst parsing for the ")" delimiter, Gforth  \G a comment terminator. For file input, it does not; if the
 \G will generate a warning.  \G end-of-file is encountered whilst parsing for the ")" delimiter,
   \G Gforth will generate a warning.
 immediate  immediate
   
 forth definitions  forth definitions
Line 322  also locals-types Line 325  also locals-types
 \ the returned nfa denotes a word that produces what W: produces  \ the returned nfa denotes a word that produces what W: produces
 \ !! do the whole thing without nextname  \ !! do the whole thing without nextname
     drop nextname      drop nextname
     ['] W: >name ;      ['] W: >head-noprim ;
   
 previous  previous
   
Line 335  create new-locals-map ( -- wordlist-map Line 338  create new-locals-map ( -- wordlist-map
 ' drop A, \ rehash method  ' drop A, \ rehash method
 ' drop A,  ' drop A,
   
 slowvoc @  new-locals-map mappedwordlist Constant new-locals-wl
 slowvoc on  
 vocabulary new-locals  \ slowvoc @
 slowvoc !  \ slowvoc on
 new-locals-map ' new-locals >body wordlist-map A! \ !! use special access words  \ vocabulary new-locals
   \ slowvoc !
   \ new-locals-map ' new-locals >body wordlist-map A! \ !! use special access words
   
 variable old-dpp  variable old-dpp
   
Line 348  variable old-dpp Line 353  variable old-dpp
     dp old-dpp !      dp old-dpp !
     locals-dp dpp !      locals-dp dpp !
     lastxt get-current      lastxt get-current
     also new-locals      get-order new-locals-wl swap 1+ set-order
     also locals definitions locals-types      also locals definitions locals-types
     0 TO locals-wordlist      0 TO locals-wordlist
     0 postpone [ ; immediate      0 postpone [ ; immediate
Line 628  forth definitions Line 633  forth definitions
     endif ;      endif ;
   
 : >definer ( xt -- definer )  : >definer ( xt -- definer )
     \ this gives a unique identifier for the way the xt was defined      \G @var{Definer} is a unique identifier for the way the @var{xt}
     \ words defined with different does>-codes have different definers      \G was defined.  Words defined with different @code{does>}-codes
     \ the definer can be used for comparison and in definer!      \G have different definers.  The definer can be used for
       \G comparison and in @code{definer!}.
     dup >does-code      dup >does-code
     ?dup-if      ?dup-if
         nip 1 or          nip 1 or
Line 639  forth definitions Line 645  forth definitions
     then ;      then ;
   
 : definer! ( definer xt -- )  : definer! ( definer xt -- )
     \ gives the word represented by xt the behaviour associated with definer      \G The word represented by @var{xt} changes its behaviour to the
       \G behaviour associated with @var{definer}.
     over 1 and if      over 1 and if
         swap [ 1 invert ] literal and does-code!          swap [ 1 invert ] literal and does-code!
     else      else

Removed from v.1.39  
changed lines
  Added in v.1.48


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>