mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-20 22:29:16 +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))
|
||||
(maybe-ci (string->char-set (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)
|
||||
(->cs
|
||||
`(or ,@(map (lambda (x)
|
||||
|
@ -689,10 +691,18 @@
|
|||
((~ complement) (char-set-complement (->cs `(or ,@(cdr sre)))))
|
||||
((- difference) (char-set-difference (->cs (cadr sre))
|
||||
(->cs `(or ,@(cddr sre)))))
|
||||
((w/case) (sre->char-set (cadr sre) (flag-clear flags ~ci?)))
|
||||
((w/nocase) (sre->char-set (cadr sre) (flag-join flags ~ci?)))
|
||||
((w/ascii) (sre->char-set (cadr sre) (flag-join flags ~ascii?)))
|
||||
((w/unicode) (sre->char-set (cadr sre) (flag-clear flags ~ascii?)))
|
||||
((w/case) (if (null? (cddr sre))
|
||||
(sre->char-set (cadr sre) (flag-clear flags ~ci?))
|
||||
(error "w/case takes only one char-set" sre)))
|
||||
((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)))))
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue