#|-------------------- 0.1 |# "./char-set-literals.meta" 324 ((egg "char-set-literals.egg") (synopsis "A reader extension providing Gauche style literals for SRFI-14 char-sets") (category lang-exts) (license "BSD") (author "Moritz Heidkamp") (files "char-set-literals.meta" "char-set-literals.setup" "char-set-literals.scm" "tests/run.scm") (test-depends test) (doc-from-wiki)) #|-------------------- 0.1 |# "./char-set-literals.scm" 864 (module char-set-literals (read-char-set-literal) (import chicken scheme) (use srfi-14) (define (char-range->list lower upper) (char-set->list (ucs-range->char-set (char->integer lower) (add1 (char->integer upper))))) (define (read-char-set-literal #!optional (port (current-input-port))) (let loop ((buffer '())) (let ((char (read-char port))) (case char ((#\]) (list 'quote (list->char-set buffer))) ((#\\) (loop (case (and (pair? buffer) (car buffer)) ((#\\) (cons char buffer)) (else (cons (read-char port) buffer))))) ((#\-) (loop (if (null? buffer) (cons char buffer) (case (peek-char port) ((#\]) (cons char buffer)) (else (append (char-range->list (car buffer) (read-char port)) buffer)))))) (else (loop (cons char buffer))))))) (set-sharp-read-syntax! #\[ read-char-set-literal) ) #|-------------------- 0.1 |# "./char-set-literals.setup" 220 (compile -s -O2 -j char-set-literals char-set-literals.scm) (compile -s char-set-literals.import.scm) (install-extension 'char-set-literals '("char-set-literals.so" "char-set-literals.import.so") `((version "0.1")))