xref: /illumos-gate/usr/src/common/ficl/test/vocab.fr (revision 8c69cc8fbe729fa7b091e901c4b50508ccc6bb33)
1\ Here is an implementation of ALSO/ONLY in terms of the
2\ primitive search-order word set.
3\
4WORDLIST CONSTANT ROOT   ROOT SET-CURRENT
5
6: DO-VOCABULARY  ( -- ) \ Implementation factor
7    DOES>  @ >R           (  ) ( R: widnew )
8     GET-ORDER  SWAP DROP ( wid1 ... widn-1 n )
9     R> SWAP SET-ORDER
10;
11
12: DISCARD  ( x1 .. xu u - ) \ Implementation factor
13   0 ?DO DROP LOOP          \ DROP u+1 stack items
14;
15
16CREATE FORTH  FORTH-WORDLIST , DO-VOCABULARY
17
18: VOCABULARY  ( name -- )  WORDLIST CREATE ,  DO-VOCABULARY ;
19
20: ALSO  ( -- )  GET-ORDER  OVER SWAP 1+ SET-ORDER ;
21
22: PREVIOUS  ( --  )  GET-ORDER  SWAP DROP 1- SET-ORDER ;
23
24: DEFINITIONS  ( -- )  GET-ORDER  OVER SET-CURRENT DISCARD ;
25
26: ONLY ( -- )  ROOT ROOT  2 SET-ORDER ;
27
28\ Forth-83 version; just removes ONLY
29: SEAL  ( -- )  GET-ORDER 1- SET-ORDER DROP ;
30
31\ F83 and F-PC version; leaves only CONTEXT
32: SEAL  ( -- )  GET-ORDER OVER 1 SET-ORDER DISCARD ;
33