--=-=-=
Hello. A while back I posted that typing (rx (|)) into scsh did not
work as expected. I think I've got a fix here, but someone who
understands the regexp code should check it.
After patching:
Welcome to scsh 0.6.4 (Olin Shivers)
Type ,? for help.
> (rx (|))
'#{re-char-set}
> (eq? (rx (|)) re-empty)
#t
> (regexp-search (rx (|)) "test")
#f
> (regexp-search (rx (|)) "")
#f
--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment; filename=scsh-rx-empty.diff
--- scsh/rx/parse.scm.old Thu Jul 24 15:31:48 2003
+++ scsh/rx/parse.scm Thu Jul 24 15:33:14 2003
@@ -437,11 +437,15 @@
re-choice:posix))
((re-char-set? re)
- (if (re-any? re)
- (r 're-any) ; Special hack for ANY.
- (doit/leaf 'make-re-char-set 'make-re-char-set/posix
- `(,(char-set->scheme (re-char-set:cset re) r))
- re-char-set:posix)))
+ (cond
+ ((re-any? re)
+ (r 're-any)) ; Special hack for ANY.
+ ((re-empty? re)
+ (r 're-empty)) ; Special hack for EMPTY.
+ (else
+ (doit/leaf 'make-re-char-set 'make-re-char-set/posix
+ `(,(char-set->scheme (re-char-set:cset re) r))
+ re-char-set:posix))))
((re-repeat? re)
(doit 'make-re-repeat 'make-re-repeat/tsm (re-repeat:tsm re)
--- scsh/rx/posixstr.scm.old Thu Jul 24 15:37:18 2003
+++ scsh/rx/posixstr.scm Thu Jul 24 15:37:36 2003
@@ -93,7 +93,7 @@
(define (regexp->posix-string re)
;; We *must* simplify, to guarantee correct translation.
(let ((re (simplify-regexp re)))
- (if (simple-empty-re? re) (values #f #f #f #f)
+ (if (simple-empty-re? re) (values #f #f #f '#())
(translate-regexp re))))
--=-=-=--
|