define.rkt (730B)
1 #lang racket/base 2 (require (for-syntax racket/base 3 stxparse-info/parse 4 "private/sc.rkt")) 5 (provide define-syntax-parse-rule 6 define-syntax-parser 7 (rename-out [define-syntax-parse-rule define-simple-macro]) 8 (for-syntax (all-from-out stxparse-info/parse))) 9 10 (define-syntax (define-syntax-parse-rule stx) 11 (syntax-parse stx 12 [(_ (macro:id . pattern) . body) 13 #`(define-syntax macro 14 (syntax-parser/template 15 #,((make-syntax-introducer) stx) 16 [((~var macro id) . pattern) . body]))])) 17 18 (define-syntax-parse-rule (define-syntax-parser macro:id option-or-clause ...) 19 (define-syntax macro 20 (syntax-parser option-or-clause ...))) 21