diff options
author | michele.simionato <devnull@localhost> | 2009-03-20 05:53:09 +0000 |
---|---|---|
committer | michele.simionato <devnull@localhost> | 2009-03-20 05:53:09 +0000 |
commit | 57cd2e80cd26f03328374ecd973256e0b8b89b97 (patch) | |
tree | 8fc5faf5be91e5ad34671404543be48c9c5edc62 /scheme | |
parent | 9a795474d7de901f6e76bd58861f508bdb68887b (diff) | |
download | micheles-57cd2e80cd26f03328374ecd973256e0b8b89b97.tar.gz |
Cosmetic changes
Diffstat (limited to 'scheme')
-rw-r--r-- | scheme/sweet-macros/helper2.mzscheme.sls | 11 | ||||
-rw-r--r-- | scheme/sweet-macros/helper3.mzscheme.sls | 19 | ||||
-rw-r--r-- | scheme/sweet-macros/main.mzscheme.sls | 1 | ||||
-rw-r--r-- | scheme/sweet-macros/main.sls | 31 |
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 |