vocabs.parser: make a "qualified-vocabs" word for re-use.
							parent
							
								
									b7e0c5a0dd
								
							
						
					
					
						commit
						d2716bbe6b
					
				|  | @ -53,9 +53,6 @@ ERROR: no-word-in-vocab word vocab ; | ||||||
| 
 | 
 | ||||||
| <PRIVATE | <PRIVATE | ||||||
| 
 | 
 | ||||||
| : (add-qualified) ( qualified -- ) |  | ||||||
|     manifest get qualified-vocabs>> push ; |  | ||||||
| 
 |  | ||||||
| : (from) ( vocab words -- vocab words words' vocab ) | : (from) ( vocab words -- vocab words words' vocab ) | ||||||
|     2dup swap load-vocab ; |     2dup swap load-vocab ; | ||||||
| 
 | 
 | ||||||
|  | @ -72,14 +69,15 @@ ERROR: no-word-in-vocab word vocab ; | ||||||
| : (lookup) ( name assoc -- word/f ) | : (lookup) ( name assoc -- word/f ) | ||||||
|     at* [ dup forward-reference? [ drop f ] when ] when ; |     at* [ dup forward-reference? [ drop f ] when ] when ; | ||||||
| 
 | 
 | ||||||
| : (use-words) ( assoc -- extra-words seq ) |  | ||||||
|     <extra-words> manifest get qualified-vocabs>> ; |  | ||||||
| 
 |  | ||||||
| PRIVATE> | PRIVATE> | ||||||
| 
 | 
 | ||||||
|  | : qualified-vocabs ( -- qualified-vocabs ) | ||||||
|  |     manifest get qualified-vocabs>> ; | ||||||
|  | 
 | ||||||
| : set-current-vocab ( name -- ) | : set-current-vocab ( name -- ) | ||||||
|     create-vocab |     create-vocab | ||||||
|     [ manifest get current-vocab<< ] [ (add-qualified) ] bi ; |     [ manifest get current-vocab<< ] | ||||||
|  |     [ qualified-vocabs push ] bi ; | ||||||
| 
 | 
 | ||||||
| : with-current-vocab ( name quot -- ) | : with-current-vocab ( name quot -- ) | ||||||
|     manifest get clone manifest [ |     manifest get clone manifest [ | ||||||
|  | @ -119,7 +117,8 @@ TUPLE: no-current-vocab-error ; | ||||||
| : auto-use-vocab ( vocab -- ) | : auto-use-vocab ( vocab -- ) | ||||||
|     [ use-vocab ] [ manifest get auto-used>> push ] bi ; |     [ use-vocab ] [ manifest get auto-used>> push ] bi ; | ||||||
| 
 | 
 | ||||||
| : auto-used? ( -- ? ) manifest get auto-used>> length 0 > ; | : auto-used? ( -- ? ) | ||||||
|  |     manifest get auto-used>> length 0 > ; | ||||||
| 
 | 
 | ||||||
| : unuse-vocab ( vocab -- ) | : unuse-vocab ( vocab -- ) | ||||||
|     dup using-vocab? [ |     dup using-vocab? [ | ||||||
|  | @ -135,7 +134,7 @@ TUPLE: qualified vocab prefix words ; | ||||||
|     (from) qualified-words qualified boa ; |     (from) qualified-words qualified boa ; | ||||||
| 
 | 
 | ||||||
| : add-qualified ( vocab prefix -- ) | : add-qualified ( vocab prefix -- ) | ||||||
|     <qualified> (add-qualified) ; |     <qualified> qualified-vocabs push ; | ||||||
| 
 | 
 | ||||||
| TUPLE: from vocab names words ; | TUPLE: from vocab names words ; | ||||||
| 
 | 
 | ||||||
|  | @ -143,7 +142,7 @@ TUPLE: from vocab names words ; | ||||||
|     (from) extract-words from boa ; |     (from) extract-words from boa ; | ||||||
| 
 | 
 | ||||||
| : add-words-from ( vocab words -- ) | : add-words-from ( vocab words -- ) | ||||||
|     <from> (add-qualified) ; |     <from> qualified-vocabs push ; | ||||||
| 
 | 
 | ||||||
| TUPLE: exclude vocab names words ; | TUPLE: exclude vocab names words ; | ||||||
| 
 | 
 | ||||||
|  | @ -151,20 +150,24 @@ TUPLE: exclude vocab names words ; | ||||||
|     (from) excluding-words exclude boa ; |     (from) excluding-words exclude boa ; | ||||||
| 
 | 
 | ||||||
| : add-words-excluding ( vocab words -- ) | : add-words-excluding ( vocab words -- ) | ||||||
|     <exclude> (add-qualified) ; |     <exclude> qualified-vocabs push ; | ||||||
| 
 | 
 | ||||||
| TUPLE: rename word vocab words ; | TUPLE: rename word vocab words ; | ||||||
| 
 | 
 | ||||||
| : <rename> ( word vocab new-name -- rename ) | : <rename> ( word vocab new-name -- rename ) | ||||||
|     [ 2dup load-vocab words>> dupd at [ ] [ swap no-word-in-vocab ] ?if ] dip |     [ | ||||||
|     associate rename boa ; |         2dup load-vocab words>> dupd at | ||||||
|  |         [ ] [ swap no-word-in-vocab ] ?if | ||||||
|  |     ] dip associate rename boa ; | ||||||
| 
 | 
 | ||||||
| : add-renamed-word ( word vocab new-name -- ) | : add-renamed-word ( word vocab new-name -- ) | ||||||
|     <rename> (add-qualified) ; |     <rename> qualified-vocabs push ; | ||||||
| 
 | 
 | ||||||
| : use-words ( assoc -- ) (use-words) push ; | : use-words ( assoc -- ) | ||||||
|  |     <extra-words> qualified-vocabs push ; | ||||||
| 
 | 
 | ||||||
| : unuse-words ( assoc -- ) (use-words) remove! drop ; | : unuse-words ( assoc -- ) | ||||||
|  |     <extra-words> qualified-vocabs remove! drop ; | ||||||
| 
 | 
 | ||||||
| TUPLE: ambiguous-use-error words ; | TUPLE: ambiguous-use-error words ; | ||||||
| 
 | 
 | ||||||
|  | @ -174,8 +177,7 @@ TUPLE: ambiguous-use-error words ; | ||||||
| <PRIVATE | <PRIVATE | ||||||
| 
 | 
 | ||||||
| : (vocab-search) ( name assocs -- words n ) | : (vocab-search) ( name assocs -- words n ) | ||||||
|     [ words>> (lookup) ] with map |     [ words>> (lookup) ] with map sift dup length ; | ||||||
|     sift dup length ; |  | ||||||
| 
 | 
 | ||||||
| : vocab-search ( name manifest -- word/f ) | : vocab-search ( name manifest -- word/f ) | ||||||
|     search-vocabs>> |     search-vocabs>> | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue