1 ! Copyright (C) 2007, 2008 Daniel Ehrenberg.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: kernel sequences assocs hashtables parser lexer
4 vocabs words namespaces vocabs.loader debugger sets ;
7 : define-qualified ( vocab-name prefix-name -- )
8 [ load-vocab vocab-words ] [ CHAR: : suffix ] bi*
9 [ -rot >r append r> ] curry assoc-map
13 #! Syntax: QUALIFIED: vocab
14 scan dup define-qualified ; parsing
17 #! Syntax: QUALIFIED-WITH: vocab prefix
18 scan scan define-qualified ; parsing
20 : expect=> ( -- ) scan "=>" assert= ;
22 : partial-vocab ( words name -- assoc )
24 lookup [ "No such word: " swap append throw ] unless*
27 : partial-vocab-ignoring ( words name -- assoc )
28 [ load-vocab vocab-words keys swap diff ] keep partial-vocab ;
31 #! Syntax: EXCLUDE: vocab => words ... ;
33 ";" parse-tokens swap partial-vocab-ignoring use get push ; parsing
36 #! Syntax: FROM: vocab => words... ;
37 scan dup load-vocab drop expect=>
38 ";" parse-tokens swap partial-vocab use get push ; parsing
41 #! Syntax: RENAME: word vocab => newname
42 scan scan dup load-vocab drop lookup [ "No such word" throw ] unless*
44 scan associate use get push ; parsing