blob: 2be4d405b5994278225b1df4c4aeb618284f6ef4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
#!r6rs
(library (sweet-macros helper2)
(export syntax-match)
(import (rnrs) (for (rnrs) (meta -1))
(for (sweet-macros helper1) (meta -1) (meta 0) (meta 1)))
(define-syntax syntax-match
(guarded-syntax-case () (sub)
((self (literal ...) (sub patt skel rest ...) ...)
#'(guarded-syntax-case ()
(<literals> <patterns> literal ...)
((ctx <literals>) #''(literal ...))
((ctx <patterns>) #''((... (... patt)) ...))
(patt skel rest ...)
...)
(for-all identifier? #'(literal ...))
(syntax-violation 'syntax-match "Found non identifier" #'(literal ...)
(remp identifier? #'(literal ...))))
((self x (literal ...) (sub patt skel rest ...) ...)
#'(guarded-syntax-case x (literal ...) (patt skel rest ...) ...))
))
)
|