add matchable?
svn: r9067
This commit is contained in:
parent
eedaebefaf
commit
63df5e13f7
|
@ -8,9 +8,11 @@
|
||||||
"compiler.ss"
|
"compiler.ss"
|
||||||
(only-in srfi/1 delete-duplicates))
|
(only-in srfi/1 delete-duplicates))
|
||||||
|
|
||||||
(provide ddk? parse-literal all-vars pattern-var? match:syntax-err)
|
(provide ddk? parse-literal all-vars pattern-var? match:syntax-err
|
||||||
|
matchable?)
|
||||||
|
|
||||||
|
(define (matchable? e)
|
||||||
|
(or (string? e) (bytes? e)))
|
||||||
|
|
||||||
;; raise an error, blaming stx
|
;; raise an error, blaming stx
|
||||||
(define (match:syntax-err stx msg)
|
(define (match:syntax-err stx msg)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#lang scheme/base
|
#lang scheme/base
|
||||||
|
|
||||||
(require (for-template scheme/base)
|
(require (for-template scheme/base "parse-helper.ss")
|
||||||
syntax/boundmap
|
syntax/boundmap
|
||||||
syntax/stx
|
syntax/stx
|
||||||
scheme/struct-info
|
scheme/struct-info
|
||||||
|
@ -49,18 +49,18 @@
|
||||||
(let ([ps (map (compose make-Not parse) (syntax->list #'(p ...)))])
|
(let ([ps (map (compose make-Not parse) (syntax->list #'(p ...)))])
|
||||||
(make-And ps))]
|
(make-And ps))]
|
||||||
[(regexp r)
|
[(regexp r)
|
||||||
(make-And (list (make-Pred #'string?) (make-App #'(lambda (e) (regexp-match r e)) (make-Pred #'values))))]
|
(make-And (list (make-Pred #'matchable?) (make-App #'(lambda (e) (regexp-match r e)) (make-Pred #'values))))]
|
||||||
[(regexp r p)
|
[(regexp r p)
|
||||||
(make-And (list (make-Pred #'string?) (make-App #'(lambda (e) (regexp-match r e)) (parse #'p))))]
|
(make-And (list (make-Pred #'matchable?) (make-App #'(lambda (e) (regexp-match r e)) (parse #'p))))]
|
||||||
[(pregexp r)
|
[(pregexp r)
|
||||||
(make-And (list (make-Pred #'string?) (make-App (syntax/loc #'r
|
(make-And (list (make-Pred #'matchable?) (make-App (syntax/loc #'r
|
||||||
(lambda (e) (regexp-match (if (pregexp? r)
|
(lambda (e) (regexp-match (if (pregexp? r)
|
||||||
r
|
r
|
||||||
(pregexp r))
|
(pregexp r))
|
||||||
e)))
|
e)))
|
||||||
(make-Pred #'values))))]
|
(make-Pred #'values))))]
|
||||||
[(pregexp r p)
|
[(pregexp r p)
|
||||||
(make-And (list (make-Pred #'string?) (make-App (syntax/loc #'r
|
(make-And (list (make-Pred #'matchable?) (make-App (syntax/loc #'r
|
||||||
(lambda (e) (regexp-match (if (pregexp? r)
|
(lambda (e) (regexp-match (if (pregexp? r)
|
||||||
r
|
r
|
||||||
(pregexp r))
|
(pregexp r))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user