32 lines
1.1 KiB
Racket
32 lines
1.1 KiB
Racket
#lang racket/base
|
|
(require (for-syntax racket/base)
|
|
racket/contract/base
|
|
"parse/pre.rkt"
|
|
"parse/experimental/provide.rkt"
|
|
"parse/experimental/contract.rkt")
|
|
(provide (except-out (all-from-out "parse/pre.rkt")
|
|
static)
|
|
expr/c)
|
|
(provide-syntax-class/contract
|
|
[static (syntax-class/c [(-> any/c any/c) (or/c string? symbol? #f)])])
|
|
|
|
(begin-for-syntax
|
|
(require racket/contract/base
|
|
syntax/parse/private/residual-ct)
|
|
(provide pattern-expander?
|
|
(contract-out
|
|
[pattern-expander
|
|
(-> (-> syntax? syntax?) pattern-expander?)]
|
|
[prop:pattern-expander
|
|
(struct-type-property/c (-> pattern-expander? (-> syntax? syntax?)))]
|
|
[syntax-local-syntax-parse-pattern-introduce
|
|
(-> syntax? syntax?)]))
|
|
|
|
(require (only-in (for-template syntax/parse) pattern-expander))
|
|
#;(define pattern-expander
|
|
(let ()
|
|
#;(struct pattern-expander (proc) #:transparent
|
|
#:omit-define-syntaxes
|
|
#:property prop:pattern-expander (λ (this) (pattern-expander-proc this)))
|
|
pattern-expander)))
|