~ chicken-core (chicken-5) 8d409f9d88243e94467bdf1e3b1a22310bf8a475
commit 8d409f9d88243e94467bdf1e3b1a22310bf8a475
Author: Peter Bex <peter.bex@xs4all.nl>
AuthorDate: Sun Sep 16 20:11:06 2012 +0200
Commit: felix <felix@call-with-current-continuation.org>
CommitDate: Tue Sep 18 23:02:55 2012 +0200
Irregex: Convert strings with charset ranges into large SRE ranges instead of alternation of several ranges, producing smaller NFAs. (upstream changeset e8822a0dbf06)
Signed-off-by: felix <felix@call-with-current-continuation.org>
diff --git a/irregex-core.scm b/irregex-core.scm
index e0fc2109..18bb50a6 100644
--- a/irregex-core.scm
+++ b/irregex-core.scm
@@ -3656,9 +3656,10 @@
(%irregex-error "not a valid sre char-set" sre)))))))
(define (cset->sre cset)
- (sre-alternate
- (map (lambda (x) (list '/ (car x) (cdr x)))
- (vector->list cset))))
+ (cons '/
+ (fold (lambda (x res) (cons (car x) (cons (cdr x) res)))
+ '()
+ (vector->list cset))))
(define (cset-contains? cset ch)
(let ((len (vector-length cset)))
Trap