[gforth] / gforth / glocals.fs  

gforth: gforth/glocals.fs

Diff for /gforth/glocals.fs between version 1.40 and 1.48

version 1.40, Tue Mar 23 20:24:18 1999 UTC version 1.48, Tue May 28 08:54:27 2002 UTC
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 
Line 293 
         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
   \G in the parse area corresponding to the current line.
 immediate  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 "@code{)}" 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 "@code{)}" 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 
Line 325 
 \ 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 
Line 338 
 ' 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 
Line 353 
     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 
Line 633 
     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 
Line 645 
     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


Generate output suitable for use with a patch program
Legend:
Removed from v.1.40  
changed lines
  Added in v.1.48

CVS Admin

Powered by ViewCVS 1.0-dev
(Powered by ViewCVS)

ViewCVS and CVS Help