combinators vectors splitting continuations math
parser.notes ;
IN: vocabs.parser
-
+
ERROR: no-word-error name ;
: word-restarts ( possibilities -- restarts )
word-restarts
swap "Defer word in current vocabulary" swap 2array
suffix ;
-
+
: <no-word-error> ( name possibilities -- error restarts )
[ drop \ no-word-error boa ] [ word-restarts-with-defer ] 2bi ;
C: <extra-words> extra-words
- <PRIVATE
-
: clear-manifest ( -- )
manifest get
[ search-vocab-names>> clear-assoc ]
[ qualified-vocabs>> delete-all ]
tri ;
+ <PRIVATE
+
: (add-qualified) ( qualified -- )
manifest get qualified-vocabs>> push ;
2bi
] [ drop ] if ;
- : only-use-vocabs ( vocabs -- )
- clear-manifest [ vocab ] filter [ use-vocab ] each ;
-
TUPLE: qualified vocab prefix words ;
: <qualified> ( vocab prefix -- qualified )
2dup qualified-search dup [ 2nip ] [ drop vocab-search ] if ;
: search ( name -- word/f )
- manifest get search-manifest ;
+ manifest get search-manifest ;