48 lines · 1.1 KB · Forth
RawDownload
\ @(#) private.fth 98/01/26 1.2\ PRIVATIZE\\ Privatize words that are only needed within the file\ and do not need to be exported.\\ Usage:\    PRIVATE{\    : FOO ;  \ Everything between PRIVATE{ and }PRIVATE will become private.\    : MOO ;\    }PRIVATE\    : GOO   foo moo ;  \ can use foo and moo\    PRIVATIZE          \ smudge foo and moo\    ' foo              \ will fail\\ Copyright 1996 Phil Burk\\ 19970701 PLB Use unsigned compares for machines with "negative" addresses. anew task-private.fth variable private-startvariable private-stop$ 20 constant FLAG_SMUDGE : PRIVATE{    latest private-start !    0 private-stop !;: }PRIVATE    private-stop @ 0= not abort" Extra }PRIVATE"    latest private-stop !;: PRIVATIZE  ( -- , smudge all words between PRIVATE{ and }PRIVATE )    private-start @ 0= abort" Missing PRIVATE{"    private-stop @ 0= abort" Missing }PRIVATE"    private-stop @    BEGIN        dup private-start @ u>    \ 19970701    WHILE\       ." Smudge " dup id. cr        dup c@ flag_smudge or over c!        prevname    REPEAT    drop    0 private-start !    0 private-stop !;