21 lines
653 B
Racket
21 lines
653 B
Racket
#lang racket/base
|
|
(require (for-syntax racket/base
|
|
stxparse-info/parse
|
|
"private/sc.rkt"))
|
|
(provide define-simple-macro
|
|
define-syntax-parser
|
|
(for-syntax (all-from-out stxparse-info/parse)))
|
|
|
|
(define-syntax (define-simple-macro stx)
|
|
(syntax-parse stx
|
|
[(define-simple-macro (~and (macro:id . _) pattern) . body)
|
|
#`(define-syntax macro
|
|
(syntax-parser/template
|
|
#,((make-syntax-introducer) stx)
|
|
[pattern . body]))]))
|
|
|
|
(define-simple-macro (define-syntax-parser macro:id option-or-clause ...)
|
|
(define-syntax macro
|
|
(syntax-parser option-or-clause ...)))
|
|
|