mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-21 06:39:17 +02:00
Merge pull request #548 from pclouds/sre-error-check
More error checking on some SRE syntax
This commit is contained in:
commit
2a9bb14d2d
1 changed files with 15 additions and 5 deletions
|
@ -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)))))
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue