Merge pull request #548 from pclouds/sre-error-check

More error checking on some SRE syntax
This commit is contained in:
Alex Shinn 2019-07-24 22:47:36 +08:00 committed by GitHub
commit 2a9bb14d2d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -676,7 +676,9 @@
(if (string? (car sre)) (if (string? (car sre))
(maybe-ci (string->char-set (car sre))) (maybe-ci (string->char-set (car sre)))
(case (car sre) (case (car sre)
((char-set) (maybe-ci (string->char-set (cadr sre)))) ((char-set) (if (null? (cddr sre))
(maybe-ci (string->char-set (cadr sre)))
(error "(char-set) takes only one char-set" sre)))
((/ char-range) ((/ char-range)
(->cs (->cs
`(or ,@(map (lambda (x) `(or ,@(map (lambda (x)
@ -689,10 +691,18 @@
((~ complement) (char-set-complement (->cs `(or ,@(cdr sre))))) ((~ complement) (char-set-complement (->cs `(or ,@(cdr sre)))))
((- difference) (char-set-difference (->cs (cadr sre)) ((- difference) (char-set-difference (->cs (cadr sre))
(->cs `(or ,@(cddr sre))))) (->cs `(or ,@(cddr sre)))))
((w/case) (sre->char-set (cadr sre) (flag-clear flags ~ci?))) ((w/case) (if (null? (cddr sre))
((w/nocase) (sre->char-set (cadr sre) (flag-join flags ~ci?))) (sre->char-set (cadr sre) (flag-clear flags ~ci?))
((w/ascii) (sre->char-set (cadr sre) (flag-join flags ~ascii?))) (error "w/case takes only one char-set" sre)))
((w/unicode) (sre->char-set (cadr sre) (flag-clear flags ~ascii?))) ((w/nocase) (if (null? (cddr sre))
(sre->char-set (cadr sre) (flag-join flags ~ci?))
(error "w/nocase takes only one char-set" sre)))
((w/ascii) (if (null? (cddr sre))
(sre->char-set (cadr sre) (flag-join flags ~ascii?))
(error "w/ascii takes only one char-set" sre)))
((w/unicode) (if (null? (cddr sre))
(sre->char-set (cadr sre) (flag-clear flags ~ascii?))
(error "w/unicode takes only one char-set" sre)))
(else (error "invalid sre char-set" sre))))) (else (error "invalid sre char-set" sre)))))
(else (error "invalid sre char-set" sre))))) (else (error "invalid sre char-set" sre)))))