From 5fe7041f17cf06a26e9d49e2cf5e6d0a281e7bfd Mon Sep 17 00:00:00 2001 From: Scott Owens Date: Wed, 8 Feb 2006 16:39:29 +0000 Subject: [PATCH] Fix bug in set difference. svn: r2170 --- collects/parser-tools/doc.txt | 3 +-- collects/parser-tools/lex-sre.ss | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/collects/parser-tools/doc.txt b/collects/parser-tools/doc.txt index 8f5c195d98..cb484a8ef3 100644 --- a/collects/parser-tools/doc.txt +++ b/collects/parser-tools/doc.txt @@ -285,10 +285,9 @@ operators: > (: re ...) concatenation > (seq re ...) concatenation > (& re ...) intersection +> (- re re ...) set difference > (~ re ...) character set complement, each given regexp must match exactly one character -> (- re re ...) character set difference, each given regexp must match - exactly one character > (/ char-or-string ...) character ranges, matches characters between successive pairs of chars. diff --git a/collects/parser-tools/lex-sre.ss b/collects/parser-tools/lex-sre.ss index 6c8d777d4c..9c6a6a7ba1 100644 --- a/collects/parser-tools/lex-sre.ss +++ b/collects/parser-tools/lex-sre.ss @@ -73,7 +73,7 @@ ((_ re ...) (char-complement (union re ...))))) - ;; char-set difference + ;; set difference (define-lex-trans (sre-- stx) (syntax-case stx () ((_) @@ -81,7 +81,7 @@ "must have at least one argument" stx)) ((_ big-re re ...) - (syntax (intersect big-re (~ (union re) ...)))))) + (syntax (& big-re (complement (union re ...))))))) (define-lex-trans (sre-/ stx) (syntax-case stx ()