www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

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