vocabs.parser: faster name lookup.
parent
8cc090950a
commit
d535b62f50
|
@ -182,17 +182,24 @@ TUPLE: ambiguous-use-error name words ;
|
||||||
|
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
|
||||||
: (vocab-search) ( name assocs -- words )
|
: (lookup-word) ( words name vocab -- words )
|
||||||
[ words>> (lookup) ] with map sift ;
|
words>> (lookup) [ suffix! ] when* ; inline
|
||||||
|
|
||||||
: (vocab-search-qualified) ( name assocs -- words )
|
: (vocab-search) ( name assocs -- words )
|
||||||
[ ":" split1 swap ] dip [ name>> = ] with filter (vocab-search) ;
|
[ V{ } clone ] 2dip [ (lookup-word) ] with each ;
|
||||||
|
|
||||||
|
: (vocab-search-qualified) ( words name assocs -- words )
|
||||||
|
[ ":" split1 swap ] dip pick [
|
||||||
|
[ name>> = ] with find nip [ (lookup-word) ] with when*
|
||||||
|
] [
|
||||||
|
3drop
|
||||||
|
] if ;
|
||||||
|
|
||||||
: (vocab-search-full) ( name assocs -- words )
|
: (vocab-search-full) ( name assocs -- words )
|
||||||
[ (vocab-search-qualified) ] [ (vocab-search) ] 2bi append ;
|
[ (vocab-search) ] [ (vocab-search-qualified) ] 2bi ;
|
||||||
|
|
||||||
: vocab-search ( name manifest -- word/f )
|
: vocab-search ( name manifest -- word/f )
|
||||||
dupd search-vocabs>> sift (vocab-search-full) dup length {
|
dupd search-vocabs>> (vocab-search-full) dup length {
|
||||||
{ 0 [ 2drop f ] }
|
{ 0 [ 2drop f ] }
|
||||||
{ 1 [ first nip ] }
|
{ 1 [ first nip ] }
|
||||||
[
|
[
|
||||||
|
|
Loading…
Reference in New Issue