* rewrote char categories stuff

* constituents vector is gone

removed:
  src/unicode/extract-categories.ss
  src/unicode/unicode-constituents.ss
added:
  src/unicode/extract-info.ss
  src/unicode/unicode-charinfo.ss
modified:
  src/ikarus.boot
  src/ikarus.unicode-data.ss
  src/unicode/unicode-data.ss
This commit is contained in:
Abdulaziz Ghuloum 2007-09-13 06:11:26 -04:00
parent e6f678bb52
commit 62ee718fb8
7 changed files with 711 additions and 485 deletions

Binary file not shown.

View File

@ -17,8 +17,9 @@
string-ci=? string-ci<? string-ci<=? string-ci>? string-ci>=? string-ci=? string-ci<? string-ci<=? string-ci>? string-ci>=?
string-foldcase char-general-category)) string-foldcase char-general-category))
(include "unicode/unicode-constituents.ss") ; (include "unicode/unicode-constituents.ss")
(include "unicode/unicode-char-cases.ss") (include "unicode/unicode-char-cases.ss")
(include "unicode/unicode-charinfo.ss")
(define (binary-search n v) (define (binary-search n v)
(let ([k ($fx- ($vector-length v) 1)]) (let ([k ($fx- ($vector-length v) 1)])
@ -31,7 +32,7 @@
[($fx<= ($vector-ref v j) n) (f j k n v)] [($fx<= ($vector-ref v j) n) (f j k n v)]
[else (f i ($fx- j 1) n v)]))])))) [else (f i ($fx- j 1) n v)]))]))))
(define (char-general-category c) (define (lookup-char-info c)
(let ([v unicode-categories-lookup-vector] (let ([v unicode-categories-lookup-vector]
[t unicode-categories-values-vector]) [t unicode-categories-values-vector])
(define (f i k n) (define (f i k n)
@ -47,18 +48,25 @@
(cond (cond
[(fx<= (vector-ref v j) n) (f j k n)] [(fx<= (vector-ref v j) n) (f j k n)]
[else (f i (fx- j 1) n)]))])) [else (f i (fx- j 1) n)]))]))
(if (char? c) (f 0 (fx- (vector-length v) 1) (char->integer c))))
(vector-ref unicode-categories-name-vector
(f 0 (fx- (vector-length v) 1) (char->integer c))) (define (char-general-category c)
(error 'char-general-category "~s is not a char" c)))) (if (char? c)
(vector-ref unicode-categories-name-vector
(fxlogand 63 (lookup-char-info c)))
(error 'char-general-category "~s is not a char" c)))
(define (binary-search-on? n v) (define (binary-search-on? n v)
($fx= ($fxlogand (binary-search n v) 1) 1)) ($fx= ($fxlogand (binary-search n v) 1) 1))
(define (unicode-printable-char? c) ;(define (unicode-printable-char? c)
(binary-search-on? ; (binary-search-on?
($char->fixnum c) ; ($char->fixnum c)
unicode-constituents-vector)) ; unicode-constituents-vector))
(define (unicode-printable-char? c)
(if (char? c)
(not (fxzero? (fxlogand (lookup-char-info c) constituent-property)))
(error 'unicode-printable-char? "~s is not a char" c)))
(define (convert-char x adjustment-vec) (define (convert-char x adjustment-vec)
(let ([n ($char->fixnum x)]) (let ([n ($char->fixnum x)])

View File

@ -1,192 +0,0 @@
#!/usr/bin/env ikarus --r6rs-script
(import
(ikarus)
(unicode-data))
(define (codes-in-cats ls cats)
(let f ([ls ls] [ac '()])
(cond
[(null? ls) (reverse ac)]
[(memq (cdar ls) cats)
(f (cdr ls) (cons (caar ls) ac))]
[else (f (cdr ls) ac)])))
(define (make-xonxoff ls)
;;; makes a list where if your index is at an odd
;;; position, then you're ON. If your index is not in
;;; the list, then look for the index before you.
(cons 0
(let f ([i 1] [on? #f]
[ls (if (= (car ls) 0)
(error 'make-xonxoff "first is on")
ls)])
(cond
[(null? ls) (list i)]
[(= i (car ls))
(if on?
(f (+ i 1) #t (cdr ls))
(cons i (f (+ i 1) #t (cdr ls))))]
[else
(if on?
(cons i (f (+ i 1) #f ls))
(f (+ i 1) #f ls))]))))
(define (search-on? n v)
(let ([k (- (vector-length v) 1)])
(let f ([i 0] [k k])
(cond
[(fx= i k) (odd? i)]
[else
(let ([j (fxsra (+ i k 1) 1)])
(cond
[(<= (vector-ref v j) n) (f j k)]
[else (f i (- j 1))]))]))))
(define (verify vec ls)
(let f ([i 0] [ls ls])
(unless (> i #x10FFFF)
(let-values ([(on? ls)
(cond
[(null? ls) (values #f '())]
[(= i (car ls)) (values #t (cdr ls))]
[else (values #f ls)])])
(unless (equal? on? (search-on? i vec))
(error #f "did not pass on ~s" i))
(f (+ i 1) ls)))))
(define (cat fields)
(let ([num (car fields)]
[cat (caddr fields)])
(cons
(read (open-input-string (format "#x~a" num)))
(string->symbol cat))))
(define categories
;;; 30 categories
'([Lu "Letter, Uppercase"]
[Ll "Letter, Lowercase"]
[Lt "Letter, Titlecase"]
[Lm "Letter, Modifier"]
[Lo "Letter, Other"]
[Mn "Mark, Nonspacing"]
[Mc "Mark, Spacing Combining"]
[Me "Mark, Enclosing"]
[Nd "Number, Decimal Digit"]
[Nl "Number, Letter"]
[No "Number, Other"]
[Pc "Punctuation, Connector"]
[Pd "Punctuation, Dash"]
[Ps "Punctuation, Open"]
[Pe "Punctuation, Close"]
[Pi "Punctuation, Initial quote"]
[Pf "Punctuation, Final quote"]
[Po "Punctuation, Other"]
[Sm "Symbol, Math"]
[Sc "Symbol, Currency"]
[Sk "Symbol, Modifier"]
[So "Symbol, Other"]
[Zs "Separator, Space"]
[Zl "Separator, Line"]
[Zp "Separator, Paragraph"]
[Cc "Other, Control"]
[Cf "Other, Format"]
[Cs "Other, Surrogate"]
[Co "Other, Private Use"]
[Cn "Other, Not Assigned"]
))
(define (category-index x)
(let f ([ls categories] [i 0])
(cond
[(null? ls) (error 'category-index "invalid cat ~s" x)]
[(eq? x (caar ls)) i]
[else (f (cdr ls) (add1 i))])))
(define (insert-missing ls)
(let f ([ls ls] [i 0] [ac '()])
(cond
[(> i #x10FFFF) (reverse ac)]
[(null? ls)
(f ls (+ i 1) (cons (cons i 'Cn) ac))]
[(= i (caar ls))
(f (cdr ls) (+ i 1) (cons (car ls) ac))]
[else
(f ls (+ i 1) (cons (cons i 'Cn) ac))])))
(define (make-cats-table ls)
(map
(lambda (x)
(cons (car x)
(cons (cadr x) (category-index (cddr x)))))
(let f ([i 1] [st (car ls)] [ls (cdr ls)] [ac '()])
(cond
[(null? ls) (reverse (cons (cons i st) ac))]
[(eq? (cdar ls) (cdr st)) (f (add1 i) st (cdr ls) ac)]
[else
(f 1 (car ls) (cdr ls) (cons (cons i st) ac))]))))
(define (merge-sequences ls)
(define (split ls)
(cond
[(null? ls) (values '() '())]
[(= (caar ls) 1)
(let-values ([(chain no-chain) (split (cdr ls))])
(values (cons (cdar ls) chain) no-chain))]
[else
(values '() ls)]))
(define (mk-chain a chain)
(cond
[(null? chain) a]
[else
(cons (car a)
(list->vector
(cons (cdr a)
(map cdr chain))))]))
(cond
[(null? ls) '()]
[(= (caar ls) 1)
(let-values ([(chain no-chain) (split (cdr ls))])
(cons (mk-chain (cdar ls) chain)
(merge-sequences no-chain)))]
[else (cons (cdar ls) (merge-sequences (cdr ls)))]))
(let ([ls (map cat (get-unicode-data "UNIDATA/UnicodeData.txt"))])
(let ([wanted
(codes-in-cats ls
'(Lu Ll Lt Lm Lo Mn Mc Me Nd Nl No Pd Pc Po Sc Sm Sk So Co))]
[cats-table (merge-sequences
(make-cats-table
(insert-missing ls)))])
(let ([xonxoff (list->vector (make-xonxoff wanted))])
(verify xonxoff wanted)
(with-output-to-file "unicode-constituents.ss"
(lambda ()
(printf ";;; DO NOT EDIT\n")
(printf ";;; automatically generated\n")
(printf ";;; ~s elements in vector\n\n" (vector-length xonxoff))
(pretty-print
`(define unicode-constituents-vector ',xonxoff))
(printf ";;; ~s elements in cats\n" (length cats-table))
(pretty-print
`(define unicode-categories-lookup-vector
',(list->vector (map car cats-table))))
(pretty-print
`(define unicode-categories-values-vector
',(list->vector (map cdr cats-table))))
(pretty-print
`(define unicode-categories-name-vector
',(list->vector (map car categories)))))
'replace))))
(printf "Happy Happy Joy Joy\n")

301
src/unicode/extract-info.ss Executable file
View File

@ -0,0 +1,301 @@
#!/usr/bin/env ikarus --r6rs-script
;;; this file is a mess.
(import
(ikarus)
(unicode-data))
(define (hex-string->number str)
(or (string->number (string-append "#x" str))
(error 'hex-string->number "invalid ~s" str)))
(define (find-char c s)
(let f ([i 0] [n (string-length s)])
(cond
[(= i n) #f]
[(char=? (string-ref s i) c) i]
[else (f (add1 i) n)])))
(define (extract-range str)
(cond
[(find-char #\. str)
=>
(lambda (i)
(cons (hex-string->number (substring str 0 i))
(hex-string->number (substring str (+ i 2) (string-length str)))))]
[else
(let ([n (hex-string->number str)])
(cons n n))]))
(define (codes-in-cats ls cats)
(let f ([ls ls] [ac '()])
(cond
[(null? ls) (reverse ac)]
[(memq (cdar ls) cats)
(f (cdr ls) (cons (caar ls) ac))]
[else (f (cdr ls) ac)])))
(define (make-xonxoff ls)
;;; makes a list where if your index is at an odd
;;; position, then you're ON. If your index is not in
;;; the list, then look for the index before you.
(cons 0
(let f ([i 1] [on? #f]
[ls (if (= (car ls) 0)
(error 'make-xonxoff "first is on")
ls)])
(cond
[(null? ls) (list i)]
[(= i (car ls))
(if on?
(f (+ i 1) #t (cdr ls))
(cons i (f (+ i 1) #t (cdr ls))))]
[else
(if on?
(cons i (f (+ i 1) #f ls))
(f (+ i 1) #f ls))]))))
(define (search-on? n v)
(let ([k (- (vector-length v) 1)])
(let f ([i 0] [k k])
(cond
[(fx= i k) (odd? i)]
[else
(let ([j (fxsra (+ i k 1) 1)])
(cond
[(<= (vector-ref v j) n) (f j k)]
[else (f i (- j 1))]))]))))
(define (verify vec ls)
(let f ([i 0] [ls ls])
(unless (> i #x10FFFF)
(let-values ([(on? ls)
(cond
[(null? ls) (values #f '())]
[(= i (car ls)) (values #t (cdr ls))]
[else (values #f ls)])])
(unless (equal? on? (search-on? i vec))
(error #f "did not pass on ~s" i))
(f (+ i 1) ls)))))
(define (cat fields)
(let ([num (car fields)]
[cat (caddr fields)])
(cons
(read (open-input-string (format "#x~a" num)))
(string->symbol cat))))
(define constituent-property #x010000)
(define uppercase-property #x020000)
(define lowercase-property #x040000)
(define titlecase-property #x080000)
(define alphabetic-property #x100000)
(define numeric-property #x200000)
(define whitespace-property #x400000)
;;; Uppercase = Lu + Other_Uppercase
;;; Lowercase = Ll + Other_Lowercase
;;; Titlecase = Lt
;;; Alphabetic = Lu + Ll + Lt + Lm + Lo + Nl + Other_Alphabetic
;;; Numeric = ???
;;; White_Space =
(define proplist-properties
`(["Other_Uppercase" ,uppercase-property]
["Other_Lowercase" ,lowercase-property]
["Other_Alphabetic" ,alphabetic-property]
["White_Space" ,whitespace-property]))
(define categories
;;; 30 categories
`([Lu ,(+ 00 constituent-property uppercase-property alphabetic-property) "Letter, Uppercase"]
[Ll ,(+ 01 constituent-property lowercase-property alphabetic-property) "Letter, Lowercase"]
[Lt ,(+ 02 constituent-property titlecase-property alphabetic-property) "Letter, Titlecase"]
[Lm ,(+ 03 constituent-property alphabetic-property) "Letter, Modifier"]
[Lo ,(+ 04 constituent-property alphabetic-property) "Letter, Other"]
[Mn ,(+ 05 constituent-property) "Mark, Nonspacing"]
[Mc ,(+ 06 constituent-property) "Mark, Spacing Combining"]
[Me ,(+ 07 constituent-property) "Mark, Enclosing"]
[Nd ,(+ 08 constituent-property numeric-property) "Number, Decimal Digit"]
[Nl ,(+ 09 constituent-property alphabetic-property numeric-property) "Number, Letter"]
[No ,(+ 10 constituent-property numeric-property) "Number, Other"]
[Pc ,(+ 11 constituent-property) "Punctuation, Connector"]
[Pd ,(+ 12 constituent-property) "Punctuation, Dash"]
[Ps ,(+ 13 ) "Punctuation, Open"]
[Pe ,(+ 14 ) "Punctuation, Close"]
[Pi ,(+ 15 ) "Punctuation, Initial quote"]
[Pf ,(+ 16 ) "Punctuation, Final quote"]
[Po ,(+ 17 constituent-property) "Punctuation, Other"]
[Sm ,(+ 18 constituent-property) "Symbol, Math"]
[Sc ,(+ 19 constituent-property) "Symbol, Currency"]
[Sk ,(+ 20 constituent-property) "Symbol, Modifier"]
[So ,(+ 21 constituent-property) "Symbol, Other"]
[Zs ,(+ 22 ) "Separator, Space"]
[Zl ,(+ 23 ) "Separator, Line"]
[Zp ,(+ 24 ) "Separator, Paragraph"]
[Cc ,(+ 25 ) "Other, Control"]
[Cf ,(+ 26 ) "Other, Format"]
[Cs ,(+ 27 ) "Other, Surrogate"]
[Co ,(+ 28 constituent-property) "Other, Private Use"]
[Cn ,(+ 29 ) "Other, Not Assigned"]
))
(define (category-index x)
(cond
[(assq x categories) => cadr]
[else (error 'category-index "invalid cat ~s" x)]))
(define (insert-missing ls)
(let ([Cn-index (category-index 'Cn)])
(let f ([ls ls] [i 0] [ac '()])
(cond
[(> i #x10FFFF) (reverse ac)]
[(null? ls)
(f ls (+ i 1) (cons (cons i Cn-index) ac))]
[(= i (caar ls))
(f (cdr ls) (+ i 1)
(cons (cons (caar ls) (category-index (cdar ls))) ac))]
[else
(f ls (+ i 1) (cons (cons i Cn-index) ac))]))))
(define (make-cats-table ls)
(let f ([i 1] [st (car ls)] [ls (cdr ls)] [ac '()])
(cond
[(null? ls) (reverse (cons (cons i st) ac))]
[(equal? (cdar ls) (cdr st)) (f (add1 i) st (cdr ls) ac)]
[else
(f 1 (car ls) (cdr ls) (cons (cons i st) ac))])))
(define (merge-sequences ls)
(define (split ls)
(cond
[(null? ls) (values '() '())]
[(= (caar ls) 1)
(let-values ([(chain no-chain) (split (cdr ls))])
(values (cons (cdar ls) chain) no-chain))]
[else
(values '() ls)]))
(define (mk-chain a chain)
(cond
[(null? chain) a]
[else
(cons (car a)
(list->vector
(cons (cdr a)
(map cdr chain))))]))
(cond
[(null? ls) '()]
[(= (caar ls) 1)
(let-values ([(chain no-chain) (split (cdr ls))])
(cons (mk-chain (cdar ls) chain)
(merge-sequences no-chain)))]
[else (cons (cdar ls) (merge-sequences (cdr ls)))]))
(define (iota i n)
(let f ([i i] [n n] [ac '()])
(cond
[(= i n) ac]
[else (f i (sub1 n) (cons (sub1 n) ac))])))
;;; first, make a big vector for all characters
;;; place all in category Cn, unless proven otherwise
(let ([v (make-vector (+ #x10FFFF 1) (category-index 'Cn))])
(let ([ls (get-unicode-data "UNIDATA/UnicodeData.txt")])
;;; interesting parts of each element in ls are:
;;; field0: the character index, numeric
;;; field2: the category, symbolic
(for-each
(lambda (x)
(let ([idx (hex-string->number (list-ref x 0))]
[cat (category-index (string->symbol (list-ref x 2)))])
(vector-set! v idx cat)))
ls))
;;; every element of v now maps to the category-index.
(let ([ls (get-unicode-data "UNIDATA/PropList.txt")])
;;; field0 is a range
;;; field1 is a property name
(for-each
(lambda (x)
(let ([range (extract-range (car x))]
[name (cadr x)])
(cond
[(assoc name proplist-properties) =>
(lambda (a)
(let ([n (cadr a)])
(let f ([i (car range)] [j (cdr range)])
(unless (> i j)
(vector-set! v i (fxlogor (vector-ref v i) n))
(f (add1 i) j)))))])))
ls))
(let ([table
(merge-sequences
(make-cats-table
(map cons
(iota 0 (vector-length v))
(vector->list v))))])
(with-output-to-file "unicode-charinfo.ss"
(lambda ()
(printf ";;; DO NOT EDIT\n")
(printf ";;; automatically generated\n")
(printf ";;; ~s elements in vectors\n\n" (length table))
(pretty-print
`(begin
(define constituent-property ,constituent-property )
(define uppercase-property ,uppercase-property )
(define lowercase-property ,lowercase-property )
(define titlecase-property ,titlecase-property )
(define alphabetic-property ,alphabetic-property )
(define numeric-property ,numeric-property )
(define whitespace-property ,whitespace-property)))
(pretty-print
`(define unicode-categories-lookup-vector
',(list->vector (map car table))))
(pretty-print
`(define unicode-categories-values-vector
',(list->vector (map cdr table))))
(pretty-print
`(define unicode-categories-name-vector
',(list->vector (map car categories)))))
'replace))
(exit 0)
(let ([ls (map cat (get-unicode-data "UNIDATA/UnicodeData.txt"))])
(let ([wanted
(codes-in-cats ls
'(Lu Ll Lt Lm Lo Mn Mc Me Nd Nl No Pd Pc Po Sc Sm Sk So Co))]
[cats-table (merge-sequences
(make-cats-table
(insert-missing ls)))])
(let ([xonxoff (list->vector (make-xonxoff wanted))])
(verify xonxoff wanted)
(with-output-to-file "unicode-info.ss"
(lambda ()
(printf ";;; DO NOT EDIT\n")
(printf ";;; automatically generated\n")
(printf ";;; ~s elements in vector\n\n" (vector-length xonxoff))
(pretty-print
`(define unicode-constituents-vector ',xonxoff))
(printf ";;; ~s elements in cats\n" (length cats-table))
(pretty-print
`(define unicode-categories-lookup-vector
',(list->vector (map car cats-table))))
(pretty-print
`(define unicode-categories-values-vector
',(list->vector (map cdr cats-table))))
(pretty-print
`(define unicode-categories-name-vector
',(list->vector (map car categories)))))
'replace)))))
(printf "Happy Happy Joy Joy\n")

View File

@ -0,0 +1,371 @@
;;; DO NOT EDIT
;;; automatically generated
;;; 1486 elements in vectors
(begin
(define constituent-property 65536)
(define uppercase-property 131072)
(define lowercase-property 262144)
(define titlecase-property 524288)
(define alphabetic-property 1048576)
(define numeric-property 2097152)
(define whitespace-property 4194304))
(define unicode-categories-lookup-vector
'#(0 9 14 32 33 36 37 40 46 48 58 60 63 65 91 97 123 127 133 134 160 162 166
168 178 180 188 191 192 215 216 223 247 248 256 311 313 328 330 376 378 382
385 387 390 392 393 396 398 402 403 405 406 409 412 414 415 417 422 424 426
428 430 432 433 436 439 441 443 445 448 452 476 478 495 497 502 505 563 570
572 573 575 577 579 583 591 660 661 688 697 704 706 710 722 736 741 750 751
768 837 838 880 884 886 890 891 894 895 900 902 904 907 910 912 913 930 931
940 975 976 978 981 984 1007 1012 1017 1019 1021 1072 1120 1155 1159 1160
1162 1216 1218 1230 1232 1300 1329 1367 1369 1370 1376 1377 1416 1419 1425
1456 1470 1473 1475 1476 1478 1480 1488 1515 1520 1523 1525 1536 1540 1547
1548 1550 1552 1558 1563 1564 1566 1568 1569 1595 1600 1601 1611 1624 1625
1631 1632 1642 1646 1648 1649 1748 1750 1757 1759 1761 1765 1767 1769 1770
1773 1774 1776 1786 1789 1791 1792 1806 1810 1840 1856 1867 1869 1902 1920
1958 1969 1970 1984 1994 2027 2036 2038 2039 2042 2043 2305 2307 2308 2362
2364 2366 2369 2377 2381 2382 2384 2385 2389 2392 2402 2404 2406 2416 2417
2427 2432 2434 2436 2437 2445 2447 2449 2451 2473 2474 2481 2483 2486 2490
2492 2494 2497 2501 2503 2505 2507 2509 2511 2519 2520 2524 2526 2527 2530
2532 2534 2544 2546 2548 2554 2555 2561 2563 2565 2571 2575 2577 2579 2601
2602 2609 2610 2612 2613 2615 2616 2618 2620 2622 2625 2627 2631 2633 2635
2637 2638 2649 2653 2655 2662 2672 2674 2677 2689 2691 2693 2702 2703 2706
2707 2729 2730 2737 2738 2740 2741 2746 2748 2750 2753 2758 2759 2761 2763
2765 2766 2768 2769 2784 2786 2788 2790 2800 2802 2817 2818 2820 2821 2829
2831 2833 2835 2857 2858 2865 2866 2868 2869 2874 2876 2881 2884 2887 2889
2891 2893 2894 2902 2904 2908 2910 2911 2914 2918 2928 2930 2946 2949 2955
2958 2961 2962 2966 2969 2971 2974 2976 2979 2981 2984 2987 2990 3002 3006
3008 3009 3011 3014 3017 3018 3021 3022 3031 3032 3046 3056 3059 3065 3067
3073 3076 3077 3085 3086 3089 3090 3113 3114 3124 3125 3130 3134 3137 3141
3142 3145 3146 3149 3150 3157 3159 3168 3170 3174 3184 3202 3204 3205 3213
3214 3217 3218 3241 3242 3252 3253 3258 3260 3264 3269 3271 3273 3274 3276
3278 3285 3287 3294 3296 3298 3300 3302 3312 3313 3315 3330 3332 3333 3341
3342 3345 3346 3369 3370 3386 3390 3393 3396 3398 3401 3402 3405 3406 3415
3416 3424 3426 3430 3440 3458 3460 3461 3479 3482 3506 3507 3516 3518 3520
3527 3530 3531 3535 3538 3541 3544 3552 3570 3572 3573 3585 3633 3634 3636
3643 3647 3648 3654 3655 3661 3664 3674 3676 3713 3715 3717 3719 3721 3723
3725 3726 3732 3736 3737 3744 3745 3748 3752 3754 3756 3757 3761 3762 3764
3770 3771 3773 3774 3776 3781 3784 3789 3790 3792 3802 3804 3806 3840 3841
3844 3859 3864 3866 3872 3882 3892 3902 3904 3912 3913 3947 3953 3967 3968
3970 3973 3974 3976 3980 3984 3992 3993 4029 4030 4038 4039 4045 4047 4048
4050 4096 4130 4131 4136 4137 4139 4141 4145 4147 4150 4154 4160 4170 4176
4182 4184 4186 4256 4294 4304 4347 4349 4352 4442 4447 4515 4520 4602 4608
4681 4682 4686 4688 4695 4698 4702 4704 4745 4746 4750 4752 4785 4786 4790
4792 4799 4802 4806 4808 4823 4824 4881 4882 4886 4888 4955 4959 4961 4969
4989 4992 5008 5018 5024 5109 5121 5741 5743 5751 5760 5761 5787 5789 5792
5867 5870 5873 5888 5901 5902 5906 5908 5909 5920 5938 5940 5941 5943 5952
5970 5972 5984 5997 5998 6001 6002 6004 6016 6068 6070 6071 6078 6086 6087
6089 6100 6103 6104 6107 6110 6112 6122 6128 6138 6144 6150 6151 6155 6158
6160 6170 6176 6211 6212 6264 6272 6313 6314 6400 6429 6432 6435 6439 6441
6444 6448 6450 6451 6457 6460 6464 6465 6468 6470 6480 6510 6512 6517 6528
6570 6576 6593 6600 6602 6608 6618 6622 6624 6656 6679 6681 6684 6686 6688
6912 6916 6917 6964 6966 6971 6973 6978 6981 6988 6992 7002 7009 7019 7028
7037 7424 7468 7522 7544 7545 7579 7616 7627 7678 7680 7829 7836 7840 7930
7936 7944 7952 7958 7960 7966 7968 7976 7984 7992 8000 8006 8008 8014 8016
8024 8032 8040 8048 8062 8064 8072 8080 8088 8096 8104 8112 8117 8118 8120
8124 8127 8130 8133 8134 8136 8140 8141 8144 8148 8150 8152 8156 8157 8160
8168 8173 8176 8178 8181 8182 8184 8188 8189 8191 8192 8203 8208 8214 8216
8219 8221 8224 8232 8234 8239 8240 8249 8251 8255 8257 8260 8263 8274 8277
8287 8288 8292 8298 8304 8306 8308 8314 8317 8320 8330 8333 8336 8341 8352
8374 8400 8413 8417 8418 8421 8432 8448 8450 8451 8455 8456 8458 8459 8462
8464 8467 8470 8473 8478 8484 8490 8494 8496 8500 8501 8505 8506 8508 8510
8512 8517 8518 8522 8524 8526 8527 8531 8544 8560 8576 8579 8581 8592 8597
8602 8604 8608 8609 8611 8612 8614 8615 8622 8623 8654 8656 8658 8661 8692
8960 8968 8972 8992 8994 9001 9003 9084 9085 9115 9140 9180 9186 9192 9216
9255 9280 9291 9312 9372 9398 9424 9450 9472 9655 9656 9665 9666 9720 9728
9839 9840 9885 9888 9907 9985 9989 9990 9994 9996 10024 10025 10060 10063
10067 10070 10072 10079 10081 10088 10102 10132 10133 10136 10160 10161
10175 10176 10181 10183 10187 10192 10214 10220 10224 10240 10496 10627
10649 10712 10716 10748 10750 11008 11035 11040 11044 11264 11311 11312
11359 11362 11365 11367 11373 11380 11382 11384 11392 11491 11493 11499
11513 11517 11518 11520 11558 11568 11622 11631 11632 11648 11671 11680
11687 11688 11695 11696 11703 11704 11711 11712 11719 11720 11727 11728
11735 11736 11743 11776 11778 11782 11785 11790 11799 11800 11804 11806
11904 11930 11931 12020 12032 12246 12272 12284 12288 12289 12292 12306
12308 12318 12320 12321 12330 12336 12337 12342 12344 12347 12350 12352
12353 12439 12441 12443 12445 12447 12449 12539 12540 12543 12544 12549
12589 12593 12687 12688 12690 12694 12704 12728 12736 12752 12784 12800
12831 12832 12842 12868 12880 12881 12896 12928 12938 12977 12992 13055
13056 13312 13313 19893 19894 19904 19968 19969 40891 40892 40960 40981
40982 42125 42128 42183 42752 42775 42779 42784 42786 43008 43010 43011
43014 43015 43019 43020 43043 43045 43047 43048 43052 43072 43124 43128
44032 44033 55203 55204 55296 55297 56191 56193 56319 56321 57343 57345
63743 63744 64046 64048 64107 64112 64218 64256 64263 64275 64280 64285
64287 64297 64298 64311 64312 64317 64320 64322 64323 64325 64326 64434
64467 64830 64832 64848 64912 64914 64968 65008 65020 65022 65024 65040
65047 65050 65056 65060 65072 65073 65075 65077 65093 65095 65097 65101
65104 65107 65108 65112 65119 65122 65124 65127 65130 65132 65136 65141
65142 65277 65279 65281 65284 65285 65288 65294 65296 65306 65308 65311
65313 65339 65345 65371 65380 65382 65392 65393 65438 65440 65471 65474
65480 65482 65488 65490 65496 65498 65501 65504 65506 65509 65511 65513
65517 65519 65529 65532 65534 65536 65548 65549 65575 65576 65595 65596
65598 65599 65614 65616 65630 65664 65787 65792 65794 65795 65799 65844
65847 65856 65909 65913 65930 65931 66304 66335 66336 66340 66352 66369
66370 66378 66379 66432 66462 66464 66500 66504 66512 66513 66518 66560
66600 66640 66718 66720 66730 67584 67590 67592 67594 67638 67639 67641
67644 67645 67647 67648 67840 67862 67866 67871 67872 68096 68097 68100
68101 68103 68108 68112 68116 68117 68120 68121 68148 68152 68155 68159
68160 68168 68176 68185 73728 74607 74752 74851 74864 74868 118784 119030
119040 119079 119082 119141 119143 119146 119149 119155 119163 119171
119173 119180 119210 119214 119262 119296 119362 119365 119366 119552
119639 119648 119666 119808 119834 119860 119886 119893 119894 119912
119938 119964 119966 119968 119970 119971 119973 119975 119977 119981
119982 119990 119994 119997 120004 120005 120016 120042 120068 120070
120071 120075 120077 120085 120086 120093 120094 120120 120122 120123
120127 120128 120133 120135 120138 120145 120146 120172 120198 120224
120250 120276 120302 120328 120354 120380 120406 120432 120458 120486
120488 120513 120514 120539 120540 120546 120571 120572 120597 120598
120604 120629 120630 120655 120656 120662 120687 120688 120713 120714
120720 120745 120746 120771 120772 120778 120780 120782 120832 131072
131073 173782 173783 194560 195102 917505 917506 917536 917632 917760
918000 983040 983041 1048573 1048574 1048576 1048577 1114109 1114110))
(define unicode-categories-values-vector
'#(25 4194329 25 4194326 65553 65555 65553 #(13 14 65553 65554 65553 65548)
65553 2162696 65553 65554 65553 1245184 #(13 65553 14 65556 65547 65556)
1376257 #(13 65554 14 65554) 25 4194329 25 #(4194326 65553) 65555 65557
#(65556 65557 1376257 15 65554 26 65557 65556 65557 65554) 2162698
#(65556 1376257 65557 65553 65556 2162698 1376257 16) 2162698 65553 1245184
65554 1245184 1376257 65554 1376257
#(1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184) 1376257
#(1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184) 1376257
#(1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257) 1245184 #(1376257 1245184 1376257 1245184) 1376257 1245184
#(1376257 1245184 1376257) 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184
#(1376257 1245184 1376257 1245184 1376257) 1245184 #(1376257 1245184)
1376257 #(1245184 1376257) 1245184 1376257 1245184
#(1376257 1245184 1376257) 1245184 1376257 #(1114116 1245184) 1376257
1114116
#(1245184 1638402 1376257 1245184 1638402 1376257 1245184 1638402 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184) 1376257
#(1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184) 1376257
#(1245184 1638402 1376257 1245184 1376257) 1245184
#(1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184) 1376257 1245184 1376257 1245184 1376257
#(1245184 1376257) 1245184
#(1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184) 1376257
1114116 1376257 1376259 1114115 1376259 65556 1114115 65556 1376259 65556
1114115 65556 65541 1376261 65541 29 65556 29 1376259 1376257 65553 29
65556 #(1245184 65553) 1245184 #(29 1245184 29) 1245184 1376257 1245184 29
1245184 1376257 29 1376257 1245184 1376257
#(1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184) 1376257
#(1245184 1376257 65554 1245184 1376257) 1245184 1376257 1245184 1376257
#(1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 65557) 65541 29
65543
#(1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257)
1245184
#(1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184) 1376257
#(1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257) 29 1245184 29 1114115 65553 29
1376257 #(29 65553 65548) 29 65541 1114117 #(65553 1114117 65553) 1114117
65553 1114117 #(65553 1114117) 29 1114116 29 1114116 65553 29 26 29 65555
65553 65557 1114117 29 65553 29 65553 29 1114116 29 1114115 1114116 1114117
65541 1114117 29 2162696 65553 1114116 1114117 1114116 #(65553 1114116)
1114117 #(26 65543) 65541 1114117 1114115 1114117 65557 65541 1114117
1114116 2162696 1114116 65557 1114116 65553 #(29 26 1114116 1114117)
1114116 1114117 65541 29 1114116 29 1114116 1114117 1114116 29 2162696
1114116 65541 1114115 65557 65553 1114115 29 1114117 1114118 1114116 29
#(65541 1114116) 1114118 1114117 1114118 65541 29 1114116 65541 29 1114116
1114117 65553 2162696 65553 29 1114116 #(29 1114117) 1114118 29 1114116 29
1114116 29 1114116 29 1114116 #(29 1114116) 29 1114116 29 #(65541 1114116)
1114118 1114117 29 1114118 29 1114118 #(65541 1114116) 29 1114118 29
1114116 29 1114116 1114117 29 2162696 1114116 65555 2162698 65557 29
1114117 #(1114118 29) 1114116 29 1114116 29 1114116 29 1114116 29 1114116
29 1114116 29 1114116 29 #(65541 29) 1114118 1114117 29 1114117 29 1114117
65541 29 1114116 #(29 1114116) 29 2162696 1114117 1114116 29 1114117
#(1114118 29) 1114116 29 1114116 29 1114116 29 1114116 29 1114116 29
1114116 29 #(65541 1114116) 1114118 1114117 29 1114117 #(1114118 29)
1114118 65541 29 1114116 29 1114116 1114117 29 2162696 #(29 65555) 29
1114117 1114118 29 1114116 29 1114116 29 1114116 29 1114116 29 1114116 29
1114116 29 #(65541 1114116 1114118 1114117 1114118) 1114117 29 1114118 29
1114118 65541 29 #(1114117 1114118) 29 1114116 29 1114116 29 2162696
#(65557 1114116) 29 #(1114117 1114116 29) 1114116 29 1114116 29 1114116 29
1114116 #(29 1114116 29) 1114116 29 1114116 29 1114116 29 1114116 29
1114118 1114117 1114118 29 1114118 29 1114118 65541 29 1114118 29 2162696
2162698 65557 #(65555 65557) 29 1114118 29 1114116 29 1114116 29 1114116 29
1114116 29 1114116 29 1114117 1114118 29 1114117 29 1114117 65541 29
1114117 29 1114116 29 2162696 29 1114118 29 1114116 29 1114116 29 1114116
29 1114116 29 1114116 29 #(65541 1114116 1114118 1114117) 1114118
#(29 1114117) 1114118 29 1114118 #(1114117 65541) 29 1114118 29
#(1114116 29) 1114116 1114117 29 2162696 29 65557 29 1114118 29 1114116 29
1114116 29 1114116 29 1114116 29 1114118 1114117 29 1114118 29 1114118
65541 29 1114118 29 1114116 29 2162696 29 1114118 29 1114116 29 1114116 29
1114116 #(29 1114116) 29 1114116 29 65541 29 1114118 1114117
#(29 1114117 29) 1114118 29 1114118 65553 29 1114116 1114117 1114116
1114117 29 65555 1114116 1114115 65541 #(1114117 65541 65553) 2162696 65553
29 1114116 #(29 1114116) 29 1114116 #(29 1114116) 29 1114116 29 1114116 29
1114116 29 1114116 #(29 1114116 29 1114116) 29 1114116 29 1114116 1114117
1114116 1114117 29 1114117 1114116 29 1114116 #(29 1114115 29) 65541
1114117 29 2162696 29 1114116 29 1114116 65557 65553 65557 65541 65557
2162696 2162698 #(65557 65541 65557 65541 65557 65541 13 14 13 14) 65542
1114116 29 1114116 29 1114117 1114118 1114117 65541 65553 65541 1114116 29
1114117 29 1114117 29 65557 65541 65557 29 65557 65553 29 1114116 29
1114116 29 1114116 #(29 1114118) 1114117 #(1114118 1114117) 29
#(1114117 65541 1114118 65541) 29 2162696 65553 1114116 1114118 1114117 29
1245184 29 1114116 #(65553 1114115) 29 1114116 29 1114116 29 1114116 29
1114116 29 1114116 29 1114116 #(29 1114116 29) 1114116 29 1114116 29
1114116 29 1114116 29 1114116 29 1114116 #(29 1114116 29) 1114116 29
1114116 29 1114116 29 1114116 29 1114116 29 #(1114117 65557) 65553 2162698
29 1114116 65557 29 1114116 29 1114116 65553 1114116 29 4194326 1114116
#(13 14) 29 1114116 65553 3211273 29 1114116 29 1114116 1114117 65541 29
1114116 1114117 65541 65553 29 1114116 1114117 29 1114116 29 1114116 29
1114117 29 1114116 26 1114118 1114117 1114118 1114117 1114118 65541 65553
1114115 65553 #(65555 1114116 65541) 29 2162696 29 2162698 29 65553 65548
65553 65541 #(4194326 29) 2162696 29 1114116 1114115 1114116 29 1114116
1114117 29 1114116 29 1114117 1114118 1114117 1114118 29 1114118 1114117
1114118 65541 29 65557 29 65553 2162696 1114116 29 1114116 29 1114116 29
1114118 1114116 1114118 29 2162696 29 65553 65557 1114116 1114117 1114118
29 65553 29 1114117 1114118 1114116 #(65541 1114118) 1114117
#(1114118 1114117) 1114118 #(1114117 1114118 65542) 1114116 29 2162696
65553 65557 65541 65557 29 1376257 1376259 1376257 1376259 1376257 1376259
65541 29 65541
#(1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184) 1376257 29
#(1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257)
29 1376257 1245184 1376257 29 1245184 29 1376257 1245184 1376257 1245184
1376257 29 1245184 29 1376257
#(29 1245184 29 1245184 29 1245184 29 1245184) 1376257 1245184 1376257 29
1376257 1638402 1376257 1638402 1376257 1638402 1376257 29 1376257 1245184
#(1638402 65556 1376257) 65556 1376257 29 1376257 1245184 1638402 65556
1376257 29 1376257 1245184 29 65556 1376257 1245184 65556 29 1376257 29
1376257 1245184 1638402 65556 29 4194326 26 65548 65553 #(15 16 13) 15
#(16 13 15) 65553 #(4194327 4194328) 26 4194326 65553 #(15 16) 65553 65547
65553 #(65554 13 14) 65553 #(65554 65553 65547) 65553 4194326 26 29 26
#(2162698 1376257) 29 2162698 65554 #(13 14 1376257) 2162698 65554
#(13 14 29) 1376259 29 65555 29 65541 65543 65541 65543 65541 29 65557
1245184 65557 1245184 65557 1376257 1245184 1376257 1245184
#(1376257 65557 1245184) 65557 1245184 65557
#(1245184 65557 1245184 65557 1245184 65557) 1245184 #(65557 1376257)
1245184 1376257 1114116 1376257 65557 1376257 1245184 65554 1245184 1376257
#(65557 65554) 65557 1376257 29 2162698 3342345 3473417 3211273
#(1245184 1376257) 29 65554 65557 65554 65557 65554 65557 65554 65557 65554
65557 65554 65557 65554 65557 #(65554 65557 65554) 65557 65554 65557 65554
65557 65554 65557 #(13 14) 65557 65554 65557 65554 65557 65554 65557 29
65557 29 65557 29 2162698 65557 1245205 1376277 2162698 65557 65554 65557
65554 65557 65554 65557 65554 65557 29 65557 29 65557 29 65557 29 65557 29
65557 #(29 65557 29) 65557 29 #(65557 29) 65557 29 65557
#(13 14 13 14 13 14 13 14 13 14 13 14 13 14) 2162698 65557 29 65557 29
65557 29 65554 #(13 14) 65554 29 65554 #(13 14 13 14 13 14) 29 65554 65557
65554 #(13 14 13 14 13 14 13 14 13 14 13 14 13 14 13 14 13 14 13 14 13 14)
65554 #(13 14 13 14) 65554 #(13 14) 65554 65557 29 65557 29 1245184 29
1376257 #(29 1245184 1376257) 1245184 1376257
#(1245184 1376257 1245184 1376257 1245184 1376257) 29 #(1376257 1245184)
1376257 29
#(1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184)
1376257 65557 29 65553 2162698 65553 1376257 29 1114116 29 1114115 29
1114116 29 1114116 29 1114116 29 1114116 29 1114116 29 1114116 29 1114116
29 1114116 29 1114116 29 65553 #(15 16 15 16) 65553 #(15 16 65553 15 16)
65553 65548 29 #(15 16) 29 65557 29 65557 29 65557 29 65557 29 4194326
65553 #(65557 1114115 1114116 3211273 13 14 13 14 13 14 13 14 13 14) 65557
#(13 14 13 14 13 14 13 14 65548 13) 14 65557 3211273 65541 65548 1114115
65557 3211273 #(1114115 1114116 65553) 65557 29 1114116 29 65541 65556
1114115 #(1114116 65548) 1114116 65553 1114115 1114116 29 1114116 29
1114116 29 65557 2162698 65557 1114116 29 65557 29 1114116 65557 29 2162698
65557 29 65557 2162698 65557 2162698 65557 2162698 65557 29 65557 1114116
29 1114116 29 65557 1114116 29 1114116 29 1114116 1114115 1114116 29 65557
29 65556 1114115 29 65556 29 1114116 65542 1114116 65541 1114116 65541
1114116 1114118 1114117 1114118 65557 29 1114116 65553 29 1114116 29
1114116 29 27 29 27 29 27 29 #(27 65564) 29 65564 1114116 29 1114116 29
1114116 29 1376257 29 1376257 29 #(1114116 1114117) 1114116 65554 1114116
29 1114116 #(29 1114116 29) 1114116 29 1114116 29 1114116 29 1114116
#(13 14) 29 1114116 29 1114116 29 1114116 #(65555 65557) 29 65541 65553
#(13 14 65553) 29 65541 29 65553 65548 65547
#(13 14 13 14 13 14 13 14 13 14 13 14 13 14 13 14) 65553 #(13 14) 65553
65547 65553 29 65553 #(65548 13 14 13 14 13 14) 65553 #(65554 65548) 65554
#(29 65553 65555) 65553 29 1114116 29 1114116 29 #(26 29) 65553 65555 65553
#(13 14 65553 65554 65553 65548) 65553 2162696 65553 65554 65553 1245184
#(13 65553 14 65556 65547 65556) 1376257
#(13 65554 14 65554 13 14 65553 13 14) 65553 1114116 1114115 1114116
1114115 1114116 29 1114116 29 1114116 29 1114116 29 1114116 29 65555
#(65554 65556 65557) 65555 #(29 65557) 65554 65557 29 26 65557 29 1114116
29 1114116 29 1114116 29 1114116 29 1114116 29 1114116 29 1114116 29 65553
65557 29 2162698 29 65557 3211273 2162698 65557 2162698 29 1114116 29
2162698 29 1114116 3211273 1114116 3211273 29 1114116 #(29 65553) 1114116
29 1114116 65553 3211273 29 1245184 1376257 1114116 29 2162696 29 1114116
29 #(1114116 29) 1114116 29 1114116 29 1114116 29 1114116 29 1114116
2162698 29 65553 29 1114116 1114117 29 1114117 29 1114117 1114116 29
1114116 29 1114116 29 65541 29 65541 2162698 29 65553 29 1114116 29 3211273
29 65553 29 65557 29 65557 29 65557 65542 65541 65557 65542 26 65541 65557
65541 65557 65541 65557 29 65557 65541 65557 29 65557 29 2162698 29 1245184
1376257 1245184 1376257 29 1376257 1245184 1376257 #(1245184 29) 1245184 29
1245184 29 1245184 29 1245184 29 1245184 1376257 #(29 1376257 29) 1376257
29 1376257 1245184 1376257 1245184 29 1245184 29 1245184 29 1245184 29
1376257 1245184 29 1245184 29 1245184 #(29 1245184) 29 1245184 29 1376257
1245184 1376257 1245184 1376257 1245184 1376257 1245184 1376257 1245184
1376257 1245184 1376257 29 1245184 65554 1376257 65554 1376257 1245184
65554 1376257 65554 1376257 1245184 65554 1376257 65554 1376257 1245184
65554 1376257 65554 1376257 1245184 65554 1376257 65554 1376257
#(1245184 1376257) 29 2162696 29 1114116 29 1114116 29 1114116 29 26 29 26
29 65541 29 65564 29 65564 29 65564 29 65564 29))
(define unicode-categories-name-vector
'#(Lu Ll Lt Lm Lo Mn Mc Me Nd Nl No Pc Pd Ps Pe Pi Pf Po Sm Sc Sk So Zs Zl Zp
Cc Cf Cs Co Cn))

View File

@ -1,281 +0,0 @@
;;; DO NOT EDIT
;;; automatically generated
;;; 947 elements in vector
(define unicode-constituents-vector
'#(0 33 40 42 91 92 93 94 123 124 125 126 127 161 171 172 173 174 187 188 880
884 886 890 895 900 907 908 909 910 930 931 975 976 1159 1160 1300 1329
1367 1369 1376 1377 1416 1417 1419 1425 1480 1488 1515 1520 1525 1547 1558
1563 1564 1566 1568 1569 1595 1600 1631 1632 1757 1758 1806 1808 1867 1869
1902 1920 1970 1984 2043 2305 2362 2364 2382 2384 2389 2392 2417 2427 2432
2433 2436 2437 2445 2447 2449 2451 2473 2474 2481 2482 2483 2486 2490 2492
2501 2503 2505 2507 2511 2519 2520 2524 2526 2527 2532 2534 2555 2561 2564
2565 2571 2575 2577 2579 2601 2602 2609 2610 2612 2613 2615 2616 2618 2620
2621 2622 2627 2631 2633 2635 2638 2649 2653 2654 2655 2662 2677 2689 2692
2693 2702 2703 2706 2707 2729 2730 2737 2738 2740 2741 2746 2748 2758 2759
2762 2763 2766 2768 2769 2784 2788 2790 2800 2801 2802 2817 2820 2821 2829
2831 2833 2835 2857 2858 2865 2866 2868 2869 2874 2876 2884 2887 2889 2891
2894 2902 2904 2908 2910 2911 2914 2918 2930 2946 2948 2949 2955 2958 2961
2962 2966 2969 2971 2972 2973 2974 2976 2979 2981 2984 2987 2990 3002 3006
3011 3014 3017 3018 3022 3031 3032 3046 3067 3073 3076 3077 3085 3086 3089
3090 3113 3114 3124 3125 3130 3134 3141 3142 3145 3146 3150 3157 3159 3168
3170 3174 3184 3202 3204 3205 3213 3214 3217 3218 3241 3242 3252 3253 3258
3260 3269 3270 3273 3274 3278 3285 3287 3294 3295 3296 3300 3302 3312 3313
3315 3330 3332 3333 3341 3342 3345 3346 3369 3370 3386 3390 3396 3398 3401
3402 3406 3415 3416 3424 3426 3430 3440 3458 3460 3461 3479 3482 3506 3507
3516 3517 3518 3520 3527 3530 3531 3535 3541 3542 3543 3544 3552 3570 3573
3585 3643 3647 3676 3713 3715 3716 3717 3719 3721 3722 3723 3725 3726 3732
3736 3737 3744 3745 3748 3749 3750 3751 3752 3754 3756 3757 3770 3771 3774
3776 3781 3782 3783 3784 3790 3792 3802 3804 3806 3840 3898 3902 3912 3913
3947 3953 3980 3984 3992 3993 4029 4030 4045 4047 4050 4096 4130 4131 4136
4137 4139 4140 4147 4150 4154 4160 4186 4256 4294 4304 4349 4352 4442 4447
4515 4520 4602 4608 4681 4682 4686 4688 4695 4696 4697 4698 4702 4704 4745
4746 4750 4752 4785 4786 4790 4792 4799 4800 4801 4802 4806 4808 4823 4824
4881 4882 4886 4888 4955 4959 4989 4992 5018 5024 5109 5121 5751 5761 5787
5792 5873 5888 5901 5902 5909 5920 5943 5952 5972 5984 5997 5998 6001 6002
6004 6016 6068 6070 6110 6112 6122 6128 6138 6144 6158 6160 6170 6176 6264
6272 6314 6400 6429 6432 6444 6448 6460 6464 6465 6468 6510 6512 6517 6528
6570 6576 6602 6608 6618 6622 6684 6686 6688 6912 6988 6992 7037 7424 7627
7678 7836 7840 7930 7936 7958 7960 7966 7968 8006 8008 8014 8016 8024 8025
8026 8027 8028 8029 8030 8031 8062 8064 8117 8118 8133 8134 8148 8150 8156
8157 8176 8178 8181 8182 8191 8208 8216 8224 8232 8240 8249 8251 8261 8263
8287 8304 8306 8308 8317 8319 8333 8336 8341 8352 8374 8400 8432 8448 8527
8531 8581 8592 9001 9003 9192 9216 9255 9280 9291 9312 9885 9888 9907 9985
9989 9990 9994 9996 10024 10025 10060 10061 10062 10063 10067 10070 10071
10072 10079 10081 10088 10102 10133 10136 10160 10161 10175 10176 10181
10183 10187 10192 10214 10224 10627 10649 10712 10716 10748 10750 11035
11040 11044 11264 11311 11312 11359 11360 11373 11380 11384 11392 11499
11513 11558 11568 11622 11631 11632 11648 11671 11680 11687 11688 11695
11696 11703 11704 11711 11712 11719 11720 11727 11728 11735 11736 11743
11776 11778 11782 11785 11787 11788 11790 11800 11904 11930 11931 12020
12032 12246 12272 12284 12289 12296 12306 12308 12316 12317 12320 12352
12353 12439 12441 12544 12549 12589 12593 12687 12688 12728 12736 12752
12784 12831 12832 12868 12880 13055 13056 13313 19893 19894 19904 19969
40891 40892 40960 42125 42128 42183 42752 42779 42784 42786 43008 43052
43072 43128 44032 44033 55203 55204 57344 57345 63743 64046 64048 64107
64112 64218 64256 64263 64275 64280 64285 64311 64312 64317 64318 64319
64320 64322 64323 64325 64326 64434 64467 64830 64848 64912 64914 64968
65008 65022 65024 65047 65049 65050 65056 65060 65072 65077 65093 65095
65097 65107 65108 65113 65119 65127 65128 65132 65136 65141 65142 65277
65281 65288 65290 65339 65340 65341 65342 65371 65372 65373 65374 65375
65377 65378 65380 65471 65474 65480 65482 65488 65490 65496 65498 65501
65504 65511 65512 65519 65532 65534 65536 65548 65549 65575 65576 65595
65596 65598 65599 65614 65616 65630 65664 65787 65792 65795 65799 65844
65847 65931 66304 66335 66336 66340 66352 66379 66432 66462 66463 66500
66504 66518 66560 66718 66720 66730 67584 67590 67592 67593 67594 67638
67639 67641 67644 67645 67647 67648 67840 67866 67871 67872 68096 68100
68101 68103 68108 68116 68117 68120 68121 68148 68152 68155 68159 68168
68176 68185 73728 74607 74752 74851 74864 74868 118784 119030 119040 119079
119082 119155 119163 119262 119296 119366 119552 119639 119648 119666
119808 119893 119894 119965 119966 119968 119970 119971 119973 119975
119977 119981 119982 119994 119995 119996 119997 120004 120005 120070
120071 120075 120077 120085 120086 120093 120094 120122 120123 120127
120128 120133 120134 120135 120138 120145 120146 120486 120488 120780
120782 120832 131072 131073 173782 173783 194560 195102 917760 918000
983040 983041 1048573 1048574 1048576 1048577 1114109 1114110))
;;; 1464 elements in cats
(define unicode-categories-lookup-vector
'#(0 32 33 36 37 40 46 48 58 60 63 65 91 97 123 127 160 162 166 168 178 180
188 191 192 215 216 223 247 248 256 311 313 328 330 376 378 382 385 387 390
392 393 396 398 402 403 405 406 409 412 414 415 417 422 424 426 428 430 432
433 436 439 441 443 445 448 452 476 478 495 497 502 505 563 570 572 573 575
577 579 583 591 660 661 688 706 710 722 736 741 750 751 768 880 884 886 890
891 894 895 900 902 904 907 910 912 913 930 931 940 975 976 978 981 984
1007 1012 1017 1019 1021 1072 1120 1155 1159 1160 1162 1216 1218 1230 1232
1300 1329 1367 1369 1370 1376 1377 1416 1419 1425 1470 1473 1475 1476 1478
1480 1488 1515 1520 1523 1525 1536 1540 1547 1548 1550 1552 1558 1563 1564
1566 1568 1569 1595 1600 1601 1611 1631 1632 1642 1646 1648 1649 1748 1750
1757 1759 1765 1767 1769 1770 1774 1776 1786 1789 1791 1792 1806 1810 1840
1867 1869 1902 1920 1958 1969 1970 1984 1994 2027 2036 2038 2039 2042 2043
2305 2307 2308 2362 2364 2366 2369 2377 2381 2382 2384 2385 2389 2392 2402
2404 2406 2416 2417 2427 2432 2434 2436 2437 2445 2447 2449 2451 2473 2474
2481 2483 2486 2490 2492 2494 2497 2501 2503 2505 2507 2509 2511 2519 2520
2524 2526 2527 2530 2532 2534 2544 2546 2548 2554 2555 2561 2563 2565 2571
2575 2577 2579 2601 2602 2609 2610 2612 2613 2615 2616 2618 2620 2622 2625
2627 2631 2633 2635 2638 2649 2653 2655 2662 2672 2674 2677 2689 2691 2693
2702 2703 2706 2707 2729 2730 2737 2738 2740 2741 2746 2748 2750 2753 2758
2759 2761 2763 2765 2766 2768 2769 2784 2786 2788 2790 2800 2802 2817 2818
2820 2821 2829 2831 2833 2835 2857 2858 2865 2866 2868 2869 2874 2876 2881
2884 2887 2889 2891 2893 2894 2902 2904 2908 2910 2911 2914 2918 2928 2930
2946 2949 2955 2958 2961 2962 2966 2969 2971 2974 2976 2979 2981 2984 2987
2990 3002 3006 3008 3009 3011 3014 3017 3018 3021 3022 3031 3032 3046 3056
3059 3065 3067 3073 3076 3077 3085 3086 3089 3090 3113 3114 3124 3125 3130
3134 3137 3141 3142 3145 3146 3150 3157 3159 3168 3170 3174 3184 3202 3204
3205 3213 3214 3217 3218 3241 3242 3252 3253 3258 3260 3264 3269 3271 3273
3274 3276 3278 3285 3287 3294 3296 3298 3300 3302 3312 3313 3315 3330 3332
3333 3341 3342 3345 3346 3369 3370 3386 3390 3393 3396 3398 3401 3402 3405
3406 3415 3416 3424 3426 3430 3440 3458 3460 3461 3479 3482 3506 3507 3516
3518 3520 3527 3530 3531 3535 3538 3541 3544 3552 3570 3572 3573 3585 3633
3634 3636 3643 3647 3648 3654 3655 3663 3664 3674 3676 3713 3715 3717 3719
3721 3723 3725 3726 3732 3736 3737 3744 3745 3748 3752 3754 3756 3757 3761
3762 3764 3770 3771 3773 3774 3776 3781 3784 3790 3792 3802 3804 3806 3840
3841 3844 3859 3864 3866 3872 3882 3892 3902 3904 3912 3913 3947 3953 3967
3968 3973 3974 3976 3980 3984 3992 3993 4029 4030 4038 4039 4045 4047 4048
4050 4096 4130 4131 4136 4137 4139 4141 4145 4147 4150 4152 4154 4160 4170
4176 4182 4184 4186 4256 4294 4304 4347 4349 4352 4442 4447 4515 4520 4602
4608 4681 4682 4686 4688 4695 4698 4702 4704 4745 4746 4750 4752 4785 4786
4790 4792 4799 4802 4806 4808 4823 4824 4881 4882 4886 4888 4955 4959 4961
4969 4989 4992 5008 5018 5024 5109 5121 5741 5743 5751 5760 5761 5787 5789
5792 5867 5870 5873 5888 5901 5902 5906 5909 5920 5938 5941 5943 5952 5970
5972 5984 5997 5998 6001 6002 6004 6016 6068 6070 6071 6078 6086 6087 6089
6100 6103 6104 6107 6110 6112 6122 6128 6138 6144 6150 6151 6155 6158 6160
6170 6176 6211 6212 6264 6272 6313 6314 6400 6429 6432 6435 6439 6441 6444
6448 6450 6451 6457 6460 6464 6465 6468 6470 6480 6510 6512 6517 6528 6570
6576 6593 6600 6602 6608 6618 6622 6624 6656 6679 6681 6684 6686 6688 6912
6916 6917 6964 6966 6971 6973 6978 6979 6981 6988 6992 7002 7009 7019 7028
7037 7424 7468 7522 7544 7545 7579 7616 7627 7678 7680 7829 7836 7840 7930
7936 7944 7952 7958 7960 7966 7968 7976 7984 7992 8000 8006 8008 8014 8016
8024 8032 8040 8048 8062 8064 8072 8080 8088 8096 8104 8112 8117 8118 8120
8124 8127 8130 8133 8134 8136 8140 8141 8144 8148 8150 8152 8156 8157 8160
8168 8173 8176 8178 8181 8182 8184 8188 8189 8191 8192 8203 8208 8214 8216
8219 8221 8224 8232 8234 8239 8240 8249 8251 8255 8257 8260 8263 8274 8277
8287 8288 8292 8298 8304 8306 8308 8314 8317 8320 8330 8333 8336 8341 8352
8374 8400 8413 8417 8418 8421 8432 8448 8450 8451 8455 8456 8458 8459 8462
8464 8467 8470 8473 8478 8484 8490 8494 8496 8500 8501 8505 8506 8508 8510
8512 8517 8518 8522 8524 8526 8527 8531 8544 8579 8581 8592 8597 8602 8604
8608 8609 8611 8612 8614 8615 8622 8623 8654 8656 8658 8661 8692 8960 8968
8972 8992 8994 9001 9003 9084 9085 9115 9140 9180 9186 9192 9216 9255 9280
9291 9312 9372 9450 9472 9655 9656 9665 9666 9720 9728 9839 9840 9885 9888
9907 9985 9989 9990 9994 9996 10024 10025 10060 10063 10067 10070 10072
10079 10081 10088 10102 10132 10133 10136 10160 10161 10175 10176 10181
10183 10187 10192 10214 10220 10224 10240 10496 10627 10649 10712 10716
10748 10750 11008 11035 11040 11044 11264 11311 11312 11359 11362 11365
11367 11373 11380 11382 11384 11392 11491 11493 11499 11513 11517 11518
11520 11558 11568 11622 11631 11632 11648 11671 11680 11687 11688 11695
11696 11703 11704 11711 11712 11719 11720 11727 11728 11735 11736 11743
11776 11778 11782 11785 11790 11799 11800 11804 11806 11904 11930 11931
12020 12032 12246 12272 12284 12288 12289 12292 12306 12308 12318 12320
12321 12330 12336 12337 12342 12344 12347 12350 12352 12353 12439 12441
12443 12445 12447 12449 12539 12540 12543 12544 12549 12589 12593 12687
12688 12690 12694 12704 12728 12736 12752 12784 12800 12831 12832 12842
12868 12880 12881 12896 12928 12938 12977 12992 13055 13056 13312 13313
19893 19894 19904 19968 19969 40891 40892 40960 40981 40982 42125 42128
42183 42752 42775 42779 42784 42786 43008 43010 43011 43014 43015 43019
43020 43043 43045 43047 43048 43052 43072 43124 43128 44032 44033 55203
55204 55296 55297 56191 56193 56319 56321 57343 57345 63743 63744 64046
64048 64107 64112 64218 64256 64263 64275 64280 64285 64287 64297 64298
64311 64312 64317 64320 64322 64323 64325 64326 64434 64467 64830 64832
64848 64912 64914 64968 65008 65020 65022 65024 65040 65047 65050 65056
65060 65072 65073 65075 65077 65093 65095 65097 65101 65104 65107 65108
65112 65119 65122 65124 65127 65130 65132 65136 65141 65142 65277 65279
65281 65284 65285 65288 65294 65296 65306 65308 65311 65313 65339 65345
65371 65380 65382 65392 65393 65438 65440 65471 65474 65480 65482 65488
65490 65496 65498 65501 65504 65506 65509 65511 65513 65517 65519 65529
65532 65534 65536 65548 65549 65575 65576 65595 65596 65598 65599 65614
65616 65630 65664 65787 65792 65794 65795 65799 65844 65847 65856 65909
65913 65930 65931 66304 66335 66336 66340 66352 66369 66370 66378 66379
66432 66462 66464 66500 66504 66512 66513 66518 66560 66600 66640 66718
66720 66730 67584 67590 67592 67594 67638 67639 67641 67644 67645 67647
67648 67840 67862 67866 67871 67872 68096 68097 68100 68101 68103 68108
68112 68116 68117 68120 68121 68148 68152 68155 68159 68160 68168 68176
68185 73728 74607 74752 74851 74864 74868 118784 119030 119040 119079
119082 119141 119143 119146 119149 119155 119163 119171 119173 119180
119210 119214 119262 119296 119362 119365 119366 119552 119639 119648
119666 119808 119834 119860 119886 119893 119894 119912 119938 119964
119966 119968 119970 119971 119973 119975 119977 119981 119982 119990
119994 119997 120004 120005 120016 120042 120068 120070 120071 120075
120077 120085 120086 120093 120094 120120 120122 120123 120127 120128
120133 120135 120138 120145 120146 120172 120198 120224 120250 120276
120302 120328 120354 120380 120406 120432 120458 120486 120488 120513
120514 120539 120540 120546 120571 120572 120597 120598 120604 120629
120630 120655 120656 120662 120687 120688 120713 120714 120720 120745
120746 120771 120772 120778 120780 120782 120832 131072 131073 173782
173783 194560 195102 917505 917506 917536 917632 917760 918000 983040
983041 1048573 1048574 1048576 1048577 1114109 1114110))
(define unicode-categories-values-vector
'#(25 22 17 19 17 #(13 14 17 18 17 12) 17 8 17 18 17 0 #(13 17 14 20 11 20) 1
#(13 18 14 18) 25 #(22 17) 19 21 #(20 21 1 15 18 26 21 20 21 18) 10
#(20 1 21 17 20 10 1 16) 10 17 0 18 0 1 18 1
#(0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0) 1 #(0 1 0 1 0 1 0 1 0 1 0 1 0 1 0) 1
#(0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
1 0 1 0 1 0 1 0 1) 0 #(1 0 1 0) 1 0 #(1 0 1) 0 1 0 1 0 1 0 1 0 1 0 1 0
#(1 0 1 0 1) 0 #(1 0) 1 #(0 1) 0 1 0 #(1 0 1) 0 1 #(4 0) 1 4
#(0 2 1 0 2 1 0 2 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0) 1
#(0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0) 1 #(0 2 1 0 1) 0
#(1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0) 1 0 1 0 1 #(0 1) 0
#(1 0 1 0 1 0 1 0) 1 4 1 3 20 3 20 3 20 3 20 5 29 20 29 3 1 17 29 20
#(0 17) 0 #(29 0 29) 0 1 0 29 0 1 29 1 0 1
#(0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0) 1 #(0 1 18 0 1) 0 1 0 1
#(0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 21) 5
29 7
#(0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1) 0 #(1 0 1 0 1 0 1 0 1 0 1 0) 1
#(0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1) 29 0 29 3
17 29 1 #(29 17 12) 29 5 #(17 5 17) 5 17 5 #(17 5) 29 4 29 4 17 29 26 29 19
17 21 5 29 17 29 17 29 4 29 3 4 5 29 8 17 4 5 4 #(17 4) 5 #(26 7) 5 3 5 21
5 4 8 4 21 4 17 #(29 26 4 5) 4 5 29 4 29 4 5 4 29 8 4 5 3 21 17 3 29 5 6 4
29 #(5 4) 6 5 6 5 29 4 5 29 4 5 17 8 17 29 4 #(29 5) 6 29 4 29 4 29 4 29 4
#(29 4) 29 4 29 #(5 4) 6 5 29 6 29 6 #(5 4) 29 6 29 4 29 4 5 29 8 4 19 10
21 29 5 #(6 29) 4 29 4 29 4 29 4 29 4 29 4 29 4 29 #(5 29) 6 5 29 5 29 5 29
4 #(29 4) 29 8 5 4 29 5 #(6 29) 4 29 4 29 4 29 4 29 4 29 4 29 #(5 4) 6 5 29
5 #(6 29) 6 5 29 4 29 4 5 29 8 #(29 19) 29 5 6 29 4 29 4 29 4 29 4 29 4 29
4 29 #(5 4 6 5 6) 5 29 6 29 6 5 29 #(5 6) 29 4 29 4 29 8 #(21 4) 29
#(5 4 29) 4 29 4 29 4 29 4 #(29 4 29) 4 29 4 29 4 29 4 29 6 5 6 29 6 29 6 5
29 6 29 8 10 21 #(19 21) 29 6 29 4 29 4 29 4 29 4 29 4 29 5 6 29 5 29 5 29
5 29 4 29 8 29 6 29 4 29 4 29 4 29 4 29 4 29 #(5 4 6 5) 6 #(29 5) 6 29 6 5
29 6 29 #(4 29) 4 5 29 8 29 21 29 6 29 4 29 4 29 4 29 4 29 6 5 29 6 29 6 5
29 6 29 4 29 8 29 6 29 4 29 4 29 4 #(29 4) 29 4 29 5 29 6 5 #(29 5 29) 6 29
6 17 29 4 5 4 5 29 19 4 3 5 17 8 17 29 4 #(29 4) 29 4 #(29 4) 29 4 29 4 29
4 29 4 #(29 4 29 4) 29 4 29 4 5 4 5 29 5 4 29 4 #(29 3 29) 5 29 8 29 4 29 4
21 17 21 5 21 8 10 #(21 5 21 5 21 5 13 14 13 14) 6 4 29 4 29 5 6 5 17 5 4
29 5 29 5 29 21 5 21 29 21 17 29 4 29 4 29 4 #(29 6) 5 #(6 5) 29 5 #(6 5)
29 8 17 4 6 5 29 0 29 4 #(17 3) 29 4 29 4 29 4 29 4 29 4 29 4 #(29 4 29) 4
29 4 29 4 29 4 29 4 29 4 #(29 4 29) 4 29 4 29 4 29 4 29 4 29 #(5 21) 17 10
29 4 21 29 4 29 4 17 4 29 22 4 #(13 14) 29 4 17 9 29 4 29 4 5 29 4 5 17 29
4 5 29 4 29 4 29 5 29 4 26 6 5 6 5 6 5 17 3 17 #(19 4 5) 29 8 29 10 29 17
12 17 5 #(22 29) 8 29 4 3 4 29 4 5 29 4 29 5 6 5 6 29 6 5 6 5 29 21 29 17 8
4 29 4 29 4 29 6 4 6 29 8 29 17 21 4 5 6 29 17 29 5 6 4 #(5 6) 5 #(6 5) 6 5
6 4 29 8 17 21 5 21 29 1 3 1 3 1 3 5 29 5
#(0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0) 1 29
#(0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1) 29 1 0 1 29 0 29 1 0 1 0 1 29 0 29 1
#(29 0 29 0 29 0 29 0) 1 0 1 29 1 2 1 2 1 2 1 29 1 0 #(2 20 1) 20 1 29 1 0
2 20 1 29 1 0 29 20 1 0 20 29 1 29 1 0 2 20 29 22 26 12 17 #(15 16 13) 15
#(16 13 15) 17 #(23 24) 26 22 17 #(15 16) 17 11 17 #(18 13 14) 17
#(18 17 11) 17 22 26 29 26 #(10 1) 29 10 18 #(13 14 1) 10 18 #(13 14 29) 3
29 19 29 5 7 5 7 5 29 21 0 21 0 21 1 0 1 0 #(1 21 0) 21 0 21
#(0 21 0 21 0 21) 0 #(21 1) 0 1 4 1 21 1 0 18 0 1 #(21 18) 21 1 29 10 9
#(0 1) 29 18 21 18 21 18 21 18 21 18 21 18 21 18 21 #(18 21 18) 21 18 21 18
21 18 21 #(13 14) 21 18 21 18 21 18 21 29 21 29 21 29 10 21 10 21 18 21 18
21 18 21 18 21 29 21 29 21 29 21 29 21 29 21 #(29 21 29) 21 29 #(21 29) 21
29 21 #(13 14 13 14 13 14 13 14 13 14 13 14 13 14) 10 21 29 21 29 21 29 18
#(13 14) 18 29 18 #(13 14 13 14 13 14) 29 18 21 18
#(13 14 13 14 13 14 13 14 13 14 13 14 13 14 13 14 13 14 13 14 13 14) 18
#(13 14 13 14) 18 #(13 14) 18 21 29 21 29 0 29 1 #(29 0 1) 0 1
#(0 1 0 1 0 1) 29 #(1 0) 1 29
#(0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0) 1 21 29 17 10 17 1 29
4 29 3 29 4 29 4 29 4 29 4 29 4 29 4 29 4 29 4 29 4 29 17 #(15 16 15 16) 17
#(15 16 17 15 16) 17 12 29 #(15 16) 29 21 29 21 29 21 29 21 29 22 17
#(21 3 4 9 13 14 13 14 13 14 13 14 13 14) 21
#(13 14 13 14 13 14 13 14 12 13) 14 21 9 5 12 3 21 9 #(3 4 17) 21 29 4 29 5
20 3 #(4 12) 4 17 3 4 29 4 29 4 29 21 10 21 4 29 21 29 4 21 29 10 21 29 21
10 21 10 21 10 21 29 21 4 29 4 29 21 4 29 4 29 4 3 4 29 21 29 20 3 29 20 29
4 6 4 5 4 5 4 6 5 6 21 29 4 17 29 4 29 4 29 27 29 27 29 27 29 #(27 28) 29
28 4 29 4 29 4 29 1 29 1 29 #(4 5) 4 18 4 29 4 #(29 4 29) 4 29 4 29 4 29 4
#(13 14) 29 4 29 4 29 4 #(19 21) 29 5 17 #(13 14 17) 29 5 29 17 12 11
#(13 14 13 14 13 14 13 14 13 14 13 14 13 14 13 14) 17 #(13 14) 17 11 17 29
17 #(12 13 14 13 14 13 14) 17 #(18 12) 18 #(29 17 19) 17 29 4 29 4 29
#(26 29) 17 19 17 #(13 14 17 18 17 12) 17 8 17 18 17 0 #(13 17 14 20 11 20)
1 #(13 18 14 18 13 14 17 13 14) 17 4 3 4 3 4 29 4 29 4 29 4 29 4 29 19
#(18 20 21) 19 #(29 21) 18 21 29 26 21 29 4 29 4 29 4 29 4 29 4 29 4 29 4
29 17 21 29 10 29 21 9 10 21 10 29 4 29 10 29 4 9 4 9 29 4 #(29 17) 4 29 4
17 9 29 0 1 4 29 8 29 4 29 #(4 29) 4 29 4 29 4 29 4 29 4 10 29 17 29 4 5 29
5 29 5 4 29 4 29 4 29 5 29 5 10 29 17 29 4 29 9 29 17 29 21 29 21 29 21 6 5
21 6 26 5 21 5 21 5 21 29 21 5 21 29 21 29 10 29 0 1 0 1 29 1 0 1 #(0 29) 0
29 0 29 0 29 0 29 0 1 #(29 1 29) 1 29 1 0 1 0 29 0 29 0 29 0 29 1 0 29 0 29
0 #(29 0) 29 0 29 1 0 1 0 1 0 1 0 1 0 1 0 1 29 0 18 1 18 1 0 18 1 18 1 0 18
1 18 1 0 18 1 18 1 0 18 1 18 1 #(0 1) 29 8 29 4 29 4 29 4 29 26 29 26 29 5
29 28 29 28 29 28 29 28 29))
(define unicode-categories-name-vector
'#(Lu Ll Lt Lm Lo Mn Mc Me Nd Nl No Pc Pd Ps Pe Pi Pf Po Sm Sc Sk So Zs Zl Zp
Cc Cf Cs Co Cn))

View File

@ -21,6 +21,25 @@
[(or (fx= i n) (memv (string-ref str i) '(#\; #\#))) i] [(or (fx= i n) (memv (string-ref str i) '(#\; #\#))) i]
[else (find-semi/hash str (+ i 1) n)])) [else (find-semi/hash str (+ i 1) n)]))
(define (cleanup str)
(let ([lo
(let f ([i 0] [n (string-length str)])
(cond
[(= i n) n]
[(char=? #\space (string-ref str i))
(f (add1 i) n)]
[else i]))]
[hi
(let f ([i (sub1 (string-length str))])
(cond
[(< i 0) i]
[(char=? #\space (string-ref str i))
(f (sub1 i))]
[else i]))])
(if (> hi lo)
(substring str lo (+ hi 1))
"")))
(define (split str) (define (split str)
(let f ([i 0] [n (string-length str)]) (let f ([i 0] [n (string-length str)])
(cond (cond
@ -30,9 +49,9 @@
(let ([j (find-semi/hash str i n)]) (let ([j (find-semi/hash str i n)])
(cond (cond
[(or (= j n) (memv (string-ref str i) '(#\#))) [(or (= j n) (memv (string-ref str i) '(#\#)))
(list (substring str i j))] (list (cleanup (substring str i j)))]
[else [else
(cons (substring str i j) (cons (cleanup (substring str i j))
(f (+ j 1) n))]))]))) (f (+ j 1) n))]))])))
(define (extract-uni-data) (define (extract-uni-data)