1 ! Copyright (C) 2008 Daniel Ehrenberg.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: unicode.data kernel math sequences parser lexer
4 bit-arrays namespaces make sequences.private arrays quotations
5 assocs classes.predicate math.order strings.parser sets ;
10 : >category-array ( categories -- bitarray )
11 categories [ swap member? ] with map >bit-array ;
13 : as-string ( strings -- bit-array )
14 concat unescape-string ;
16 : [category] ( categories -- quot )
18 [ [ categories member? not ] filter as-string ] keep
19 [ categories member? ] filter >category-array
20 [ dup category# ] % , [ nth-unsafe [ drop t ] ] %
21 \ member? 2array >quotation ,
25 : define-category ( word categories -- )
26 [category] integer swap define-predicate-class ;
31 CREATE ";" parse-tokens define-category ; parsing
34 CREATE ";" parse-tokens
35 categories swap diff define-category ; parsing