version 1.30, 1998/12/08 22:02:41
|
version 1.31, 1998/12/19 13:43:17
|
Line 168 variable span ( -- a-addr ) \ core-ext
|
Line 168 variable span ( -- a-addr ) \ core-ext
|
\ Marker creates a mark that is removed (including everything |
\ Marker creates a mark that is removed (including everything |
\ defined afterwards) when executing the mark. |
\ defined afterwards) when executing the mark. |
|
|
: marker, ( -- mark ) here dup A, |
: included-files-mark ( -- u ) |
voclink @ A, voclink |
included-files 2@ nip |
BEGIN @ dup WHILE dup 0 wordlist-link - @ A, REPEAT drop |
blk @ 0= |
udp @ , ; |
if \ not input from blocks |
|
source-id 1 -1 within |
|
if \ input from file |
|
1- \ do not include the last file (hopefully this is the |
|
\ currently included file) |
|
then |
|
then ; |
|
|
|
\ hmm, most of the saving appears to be pretty unnecessary: we could |
|
\ derive the wordlists and the words that have to be kept from the |
|
\ saved value of dp value. - anton |
|
|
|
: marker, ( -- mark ) |
|
here |
|
included-files-mark , |
|
dup A, \ here |
|
voclink @ A, \ vocabulary list start |
|
\ for all wordlists, remember wordlist-id (the linked list) |
|
voclink |
|
BEGIN |
|
@ dup |
|
WHILE |
|
dup 0 wordlist-link - wordlist-id @ A, |
|
REPEAT |
|
drop |
|
\ remember udp |
|
udp @ , ; |
|
|
: marker! ( mark -- ) |
: marker! ( mark -- ) |
dup @ swap cell+ |
\ reset included files count; resize will happen on next add-included-file |
|
included-files 2@ drop over @ included-files 2! cell+ |
|
\ rest of marker! |
|
dup @ swap cell+ ( here rest-of-marker ) |
dup @ voclink ! cell+ |
dup @ voclink ! cell+ |
|
\ restore wordlists to former words |
voclink |
voclink |
BEGIN |
BEGIN |
@ dup |
@ dup |
WHILE |
WHILE |
over @ over 0 wordlist-link - ! |
over @ over 0 wordlist-link - wordlist-id ! |
swap cell+ swap |
swap cell+ swap |
REPEAT |
REPEAT |
drop voclink |
drop |
|
\ rehash wordlists to remove forgotten words |
|
\ why don't we do this in a single step? - anton |
|
voclink |
BEGIN |
BEGIN |
@ dup |
@ dup |
WHILE |
WHILE |
dup 0 wordlist-link - rehash |
dup 0 wordlist-link - rehash |
REPEAT |
REPEAT |
drop |
drop |
|
\ restore udp and dp |
@ udp ! dp ! |
@ udp ! dp ! |
\ clean up vocabulary stack |
\ clean up vocabulary stack |
0 vp @ 0 |
0 vp @ 0 |