diff --git a/scsh/rx/parse.scm b/scsh/rx/parse.scm index b7881c4..d277f2e 100644 --- a/scsh/rx/parse.scm +++ b/scsh/rx/parse.scm @@ -153,7 +153,8 @@ ((c sre %eol) (non-cset) re-eol) ((pair? sre) - (let ((hygn-eq? (lambda (the-sym) (c (car sre) (r the-sym))))) + (let ((hygn-eq? (lambda (the-sym) (or (c (car sre) (r the-sym)) + (c (car sre) the-sym))))) (cond ((hygn-eq? '*) (non-cset) (re-repeat 0 #f (parse-seq (cdr sre)))) ((hygn-eq? '+) (non-cset) (re-repeat 1 #f (parse-seq (cdr sre)))) @@ -270,14 +271,11 @@ (if (null? sym-list) #f (or (c sre (r (car sym-list))) + (c sre (car sym-list)) (hygn-memq? (cdr sym-list))))))) (let ((cs (cond ((hygn-memq? '(nonl)) nonl-chars) ((hygn-memq? '(lower-case lower)) char-set:lower-case) - ;;; any is imported from scsh-utilities and for - ;;; some reason this screws the hygienic renaming - ;;; up here. So this is bogus: - ((eq? sre 'any) char-set:full) ((hygn-memq? '(any)) char-set:full) ((hygn-memq? '(upper-case upper)) char-set:upper-case) ((hygn-memq? '(alphabetic alpha)) char-set:letter)