1 USING: kernel sequences assocs hashtables parser vocabs words namespaces
2 vocabs.loader debugger sets ;
5 : define-qualified ( vocab-name prefix-name -- )
6 [ load-vocab vocab-words ] [ CHAR: : suffix ] bi*
7 [ -rot >r append r> ] curry assoc-map
11 #! Syntax: QUALIFIED: vocab
12 scan dup define-qualified ; parsing
15 #! Syntax: QUALIFIED-WITH: vocab prefix
16 scan scan define-qualified ; parsing
18 : expect=> scan "=>" assert= ;
20 : partial-vocab ( words name -- assoc )
22 lookup [ "No such word: " swap append throw ] unless*
25 : partial-vocab-ignoring ( words name -- assoc )
26 [ load-vocab vocab-words keys swap diff ] keep partial-vocab ;
29 #! Syntax: EXCLUDE: vocab => words ... ;
31 ";" parse-tokens swap partial-vocab-ignoring use get push ; parsing
34 #! Syntax: FROM: vocab => words... ;
35 scan dup load-vocab drop expect=>
36 ";" parse-tokens swap partial-vocab use get push ; parsing
39 #! Syntax: RENAME: word vocab => newname
40 scan scan dup load-vocab drop lookup [ "No such word" throw ] unless*
42 scan associate use get push ; parsing