summaryrefslogtreecommitdiff
path: root/scheme
diff options
context:
space:
mode:
authormichele.simionato <devnull@localhost>2009-03-20 05:53:09 +0000
committermichele.simionato <devnull@localhost>2009-03-20 05:53:09 +0000
commit57cd2e80cd26f03328374ecd973256e0b8b89b97 (patch)
tree8fc5faf5be91e5ad34671404543be48c9c5edc62 /scheme
parent9a795474d7de901f6e76bd58861f508bdb68887b (diff)
downloadmicheles-57cd2e80cd26f03328374ecd973256e0b8b89b97.tar.gz
Cosmetic changes
Diffstat (limited to 'scheme')
-rw-r--r--scheme/sweet-macros/helper2.mzscheme.sls11
-rw-r--r--scheme/sweet-macros/helper3.mzscheme.sls19
-rw-r--r--scheme/sweet-macros/main.mzscheme.sls1
-rw-r--r--scheme/sweet-macros/main.sls31
4 files changed, 36 insertions, 26 deletions
diff --git a/scheme/sweet-macros/helper2.mzscheme.sls b/scheme/sweet-macros/helper2.mzscheme.sls
index 6a9a7de..2be4d40 100644
--- a/scheme/sweet-macros/helper2.mzscheme.sls
+++ b/scheme/sweet-macros/helper2.mzscheme.sls
@@ -6,17 +6,18 @@
(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 ...) ...)
+ ((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 ...) ...))
))
diff --git a/scheme/sweet-macros/helper3.mzscheme.sls b/scheme/sweet-macros/helper3.mzscheme.sls
index 5e05485..9d6108e 100644
--- a/scheme/sweet-macros/helper3.mzscheme.sls
+++ b/scheme/sweet-macros/helper3.mzscheme.sls
@@ -5,20 +5,23 @@
(define-syntax def-syntax
(syntax-match (extends)
- (sub (def-syntax name (extends parent) (literal ...) clause ...)
- #'(define-syntax name
- (syntax-match (literal ...)
- clause ...
- (sub x ((parent <transformer>) #'x)))))
+
(sub (def-syntax (name . args) skel rest ...)
- #'(def-syntax name (syntax-match () (sub (name . args) skel rest ...)))
- (identifier? #'name) (syntax-violation 'def-syntax "Invalid name" #'name))
+ #'(def-syntax name (syntax-match () (sub (name . args) skel rest ...))))
+
(sub (def-syntax name transformer)
#'(define-syntax name
(syntax-match (<source> <transformer>)
(sub (name <transformer>) #'(... (... transformer)))
(sub (name <source>) #''(... (... transformer)))
(sub x (transformer #'x))))
- (identifier? #'name) (syntax-violation 'def-syntax "Invalid name" #'name))
+ (identifier? #'name)
+ (syntax-violation 'def-syntax "Invalid name" #'name))
+
+ (sub (def-syntax name (extends parent) (literal ...) clause ...)
+ #'(def-syntax name
+ (syntax-match (literal ...)
+ clause ...
+ (sub x ((parent <transformer>) #'x)))))
))
)
diff --git a/scheme/sweet-macros/main.mzscheme.sls b/scheme/sweet-macros/main.mzscheme.sls
index a3ac852..1c6bd88 100644
--- a/scheme/sweet-macros/main.mzscheme.sls
+++ b/scheme/sweet-macros/main.mzscheme.sls
@@ -3,6 +3,7 @@
(export syntax-match def-syntax syntax-expand)
(import (rnrs) (for (sweet-macros helper3) run expand))
+;; this only works for macros defined through def-syntax
(def-syntax (syntax-expand (macro . args))
#'(syntax->datum ((macro <transformer>) #'(... (... (macro . args))))))
)
diff --git a/scheme/sweet-macros/main.sls b/scheme/sweet-macros/main.sls
index 10ce495..6cee564 100644
--- a/scheme/sweet-macros/main.sls
+++ b/scheme/sweet-macros/main.sls
@@ -33,17 +33,18 @@
;;SYNTAX-MATCH
(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 ...) ...)
+ ((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 ...) ...))
))
@@ -52,25 +53,29 @@
;; DEF-SYNTAX
(define-syntax def-syntax
(syntax-match (extends)
- (sub (def-syntax name (extends parent) (literal ...) clause ...)
- #'(define-syntax name
- (syntax-match (literal ...)
- clause ...
- (sub x ((parent <transformer>) #'x)))))
+
(sub (def-syntax (name . args) skel rest ...)
- #'(def-syntax name (syntax-match () (sub (name . args) skel rest ...)))
- (identifier? #'name) (syntax-violation 'def-syntax "Invalid name" #'name))
+ #'(def-syntax name (syntax-match () (sub (name . args) skel rest ...))))
+
(sub (def-syntax name transformer)
#'(define-syntax name
(syntax-match (<source> <transformer>)
(sub (name <transformer>) #'(... (... transformer)))
(sub (name <source>) #''(... (... transformer)))
(sub x (transformer #'x))))
- (identifier? #'name) (syntax-violation 'def-syntax "Invalid name" #'name))
+ (identifier? #'name)
+ (syntax-violation 'def-syntax "Invalid name" #'name))
+
+ (sub (def-syntax name (extends parent) (literal ...) clause ...)
+ #'(def-syntax name
+ (syntax-match (literal ...)
+ clause ...
+ (sub x ((parent <transformer>) #'x)))))
))
;;END
;;SYNTAX-EXPAND
+;; this only works for macros defined through def-syntax
(def-syntax (syntax-expand (macro . args))
#'(syntax->datum ((macro <transformer>) #'(... (... (macro . args))))))
;;END