www

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

parse.rkt (1258B)


      1 #lang racket/base
      2 (require (for-syntax racket/base)
      3          racket/contract/base
      4          "parse/pre.rkt"
      5          "parse/experimental/provide.rkt"
      6          "parse/experimental/contract.rkt")
      7 (provide (except-out (all-from-out "parse/pre.rkt")
      8                      static)
      9          expr/c)
     10 (provide-syntax-class/contract
     11  [static (syntax-class/c [(-> any/c any/c) (or/c string? symbol? #f)])])
     12 
     13 (begin-for-syntax
     14   (require racket/contract/base
     15            syntax/parse/private/residual-ct)
     16   (provide pattern-expander?
     17            (contract-out
     18             [prop:syntax-class
     19              (struct-type-property/c (or/c identifier? (-> any/c identifier?)))]
     20             [pattern-expander
     21              (-> (-> syntax? syntax?) pattern-expander?)]
     22             [prop:pattern-expander
     23              (struct-type-property/c (-> pattern-expander? (-> syntax? syntax?)))]
     24             [syntax-local-syntax-parse-pattern-introduce
     25              (-> syntax? syntax?)]))
     26 
     27   (require (only-in (for-template syntax/parse) pattern-expander))
     28   #;(define pattern-expander
     29     (let ()
     30       (struct pattern-expander (proc) #:transparent
     31         #:omit-define-syntaxes
     32         #:property prop:pattern-expander (λ (this) (pattern-expander-proc this)))
     33       pattern-expander)))