+++ /dev/null
-\ Vocabulary management
-
-\ Forget word and everything defined after it in compilation dict
-: FORGET
- BL WORD CURRENT @ FINDVOCAB ( find the word, gets the dictionary entry address )
-
- 0= if
- drop exit
- then
-
- >link
-
- DUP @ LATEST ! ( set LATEST to point to the previous word )
-;
-
-: HIDE
- BL WORD FIND DROP >NAME
- DUP @ F_HIDDEN OR SWAP !
-;
-
-\ Create new vocabulary
-: VOCABULARY
- create 0 ,
-does>
- body> context #context @ 1- + !
-;
-
-: DEFINITIONS
- context #context @ 1- + @ current !
-;
-
-\ Define root vocabulary (always available)
-vocabulary ROOT
-
-: ONLY
- 1 #context !
- root
- 2 #context !
- root
-;
-
-: PREVIOUS
- 1 #context -!
-;
-
-: ALSO
- context #context @ + dup 1- @ swap !
- 1 #context +!
-;
-
-also root definitions
-
- : FORTH forth ;
-
- \ Display search order and compilation dictionary
- : ORDER
-
- \ Search order
- context #context @ 1- + context swap
- do
- i @ >name .name space
- -1 +loop
-
- \ Current (definitions)
- 5 spaces
- current @ >name .name
- ;
-
- \ Display transient vocabulary contents
- : WORDS
- cr
- context #context @ 1- + @
- 1+ @
- BEGIN
- ?DUP ( while link pointer is not 0 )
- WHILE
- DUP ?HIDDEN NOT IF ( ignore hidden words )
- DUP 1+ .NAME ( but if not hidden, print the word )
- SPACE
- THEN
- @ ( dereference the link pointer - go to previous word )
- REPEAT
- CR
- ;
-
-only forth also definitions