14945
((3) 0 () 26 ((q lib "syntax/parse.rkt") (q lib "syntax/location.rkt") (q lib "syntax/id-table.rkt") (q lib "syntax/keyword.rkt") (q lib "syntax/srcloc.rkt") (q lib "syntax/kerncase.rkt") (q lib "syntax/parse/experimental/template.rkt") (q lib "syntax/parse/experimental/reflect.rkt") (q lib "syntax/boundmap.rkt") (q lib "syntax/modcode.rkt") (q lib "syntax/struct.rkt") (q lib "syntax/parse/debug.rkt") (q lib "syntax/datum.rkt") (q lib "syntax/toplevel.rkt") (q lib "syntax/parse/experimental/eh.rkt") (q lib "syntax/readerr.rkt") (q lib "syntax/stx.rkt") (q 30427 . 4) (q lib "syntax/module-reader.rkt") (q lib "syntax/modresolve.rkt") (q lib "syntax/modcollapse.rkt") (q lib "syntax/parse/experimental/provide.rkt") (q lib "syntax/strip-context.rkt") (q lib "syntax/modread.rkt") (q lib "syntax/docprovide.rkt") (q lib "syntax/context.rkt")) () (h ! (equal) ((c form c (c (? . 0) q exact-nonnegative-integer)) q (9027 . 2)) ((c def c (c (? . 3) q check-stx-boolean)) q (27736 . 4)) ((c form c (c (? . 1) q quote-column-number)) q (45099 . 3)) ((c def c (c (? . 10) q struct-declaration-info?)) q (36150 . 3)) ((c form c (c (? . 0) q ~peek)) q (6271 . 2)) ((c form c (c (? . 1) q quote-srcloc-prefix)) q (45339 . 3)) ((c form c (c (? . 0) q ~describe)) q (4432 . 2)) ((c form c (c (? . 6) q define-template-metafunction)) q (13355 . 3)) ((c def c (c (? . 2) q bound-id-table-count)) q (18803 . 3)) ((c def c (c (? . 8) q free-identifier-mapping-map)) q (21838 . 4)) ((c def c (c (? . 4) q source-location-vector?)) q (42847 . 3)) ((c form c (c (? . 0) q ~peek-not)) q (6291 . 2)) ((c def c (c (? . 19) q resolve-module-path-index)) q (30865 . 7)) ((c def c (c (? . 2) q bound-id-table-set!)) q (17977 . 5)) ((c def c (c (? . 3) q options-select)) q (26666 . 4)) ((c def c (c (? . 4) q source-location-position)) q (43789 . 4)) ((c form c (c (? . 5) q kernel-syntax-case*/phase)) q (14265 . 3)) ((c form c (c (? . 0) q define-syntax-class)) q (2255 . 24)) ((c def c (c (? . 5) q kernel-form-identifier-list)) q (14354 . 2)) ((c def c (c (? . 15) q raise-read-eof-error)) q (39355 . 13)) ((c form c (c (? . 5) q kernel-syntax-case/phase)) q (14196 . 2)) ((c def c (c (? . 16) q module-or-top-identifier=?)) q (13935 . 4)) ((c def c (c (? . 7) q reified-syntax-class-arity)) q (11179 . 3)) ((c form c (c (? . 0) q pattern)) q (3831 . 2)) ((c form c (c (? . 12) q with-datum)) q (27938 . 3)) ((c form c (c (? . 6) q template)) q (12706 . 19)) ((c def c (c (? . 7) q reified-splicing-syntax-class?)) q (10922 . 3)) ((c form c (c (? . 0) q expr)) q (8894 . 2)) ((c def c (c (? . 8) q bound-identifier-mapping-for-each)) q (20569 . 5)) ((c form c (c (? . 0) q ~rest)) q (5174 . 2)) ((c def c (c (? . 9) q get-module-code)) q (28465 . 33)) ((c def c (c (? . 4) q source-location->prefix)) q (44823 . 3)) ((c def c (c (? . 4) q source-location-span)) q (43902 . 4)) ((c def c (c (? . 8) q free-identifier-mapping-put!)) q (21480 . 5)) ((c def c (c (? . 4) q source-location-line)) q (43564 . 4)) ((q form ((lib "syntax/parse/experimental/specialize.rkt") define-syntax-class/specialize)) q (12453 . 8)) ((c form c (c (? . 0) q ~not)) q (5078 . 2)) ((c def c (c (? . 3) q parse-keyword-options)) q (23587 . 25)) ((c def c (c (? . 2) q free-id-table-set)) q (15414 . 5)) ((c def c (c (? . 2) q free-id-table/c)) q (16799 . 7)) ((c def c (c (? . 8) q make-module-identifier-mapping)) q (22003 . 2)) ((c def c (c (? . 2) q id-table-iter?)) q (16739 . 3)) ((c def c (c (? . 2) q make-free-id-table)) q (14421 . 5)) ((c def c (c (? . 9) q make-exn:get-module-code)) c (? . 17)) ((c def c (c (? . 8) q make-free-identifier-mapping)) q (20995 . 2)) ((c def c (c (? . 3) q check-stx-listof)) q (27471 . 5)) ((c def c (c (? . 2) q free-id-table-map)) q (15837 . 4)) ((c def c (c (? . 8) q make-bound-identifier-mapping)) q (19826 . 2)) ((c def c (c (? . 4) q source-location-list?)) q (42780 . 3)) ((c def c (c (? . 23) q with-module-reading-parameterization)) q (28088 . 3)) ((c form c (c (? . 0) q ~once)) q (6350 . 10)) ((c def c (c (? . 7) q reified-syntax-class?)) q (10855 . 3)) ((c form c (c (? . 0) q number)) q (8977 . 2)) ((c form c (c (? . 0) q ~var)) q (4397 . 2)) ((c def c (c (? . 4) q build-source-location-syntax)) q (43308 . 3)) ((c def c (c (? . 2) q bound-id-table-iterate-key)) q (19197 . 4)) ((q form ((lib "syntax/parse/experimental/splicing.rkt") define-primitive-splicing-syntax-class)) q (12032 . 8)) ((c def c (c (? . 2) q bound-id-table-iterate-first)) q (18905 . 3)) ((c def c (c (? . 2) q free-id-table-iterate-value)) q (16560 . 5)) ((c form c (c (? . 24) q provide-and-document)) q (46051 . 9)) ((c form c (c (? . 0) q ~seq)) q (5868 . 2)) ((c def c (c (? . 8) q bound-identifier-mapping-get)) q (19970 . 8)) ((c def c (c (? . 8) q module-identifier-mapping-get)) q (22150 . 8)) ((c form c (c (? . 11) q syntax-class-parse)) q (10164 . 4)) ((c def c (c (? . 4) q source-location-known?)) q (43401 . 3)) ((c def c (c (? . 7) q reified-syntax-class-keywords)) q (11315 . 4)) ((c def c (c (? . 4) q source-location->string)) q (44740 . 3)) ((c form c (c (? . 1) q quote-srcloc)) q (44906 . 4)) ((c def c (c (? . 18) q wrap-read-all)) q (42075 . 17)) ((c form c (c (? . 0) q literal-set->predicate)) q (8546 . 2)) ((c def c (c (? . 2) q free-id-table-remove)) q (15682 . 5)) ((c form c (c (? . 0) q ~between)) q (6954 . 9)) ((c def c (c (? . 10) q build-struct-generation)) q (33356 . 18)) ((c form c (c (? . 0) q id)) q (9090 . 2)) ((c form c (c (? . 0) q ~do)) q (7774 . 2)) ((c def c (c (? . 2) q mutable-bound-id-table?)) q (17650 . 3)) ((c form c (c (? . 11) q syntax-class-keywords)) q (10116 . 2)) ((c form c (c (? . 7) q ~reflect)) q (11821 . 5)) ((c form c (c (? . 14) q ~eh-var)) q (12413 . 2)) ((c form c (c (? . 0) q boolean)) q (8924 . 2)) ((c form c (c (? . 6) q ??)) q (13335 . 2)) ((q def ((lib "syntax/define.rkt") normalize-definition)) q (32067 . 9)) ((c form c (c (? . 12) q undatum-splicing)) q (28056 . 2)) ((c form c (c (? . 0) q define-literal-set)) q (7889 . 18)) ((c def c (c (? . 2) q bound-id-table/c)) q (19521 . 7)) ((c def c (c (? . 2) q bound-id-table-set)) q (18111 . 5)) ((c def c (c (? . 4) q source-location?)) q (42718 . 3)) ((c def c (c (? . 3) q check-identifier)) q (27249 . 4)) ((c def c (c (? . 22) q strip-context)) q (23412 . 3)) ((c def c (c (? . 2) q free-id-table-ref)) q (15097 . 5)) ((c form c (c (? . 0) q ~bind)) q (7253 . 5)) ((c def c (c (? . 2) q free-id-table-set!)) q (15282 . 5)) ((c def c (c (? . 13) q expand-top-level-with-compile-time-evals)) q (45641 . 3)) ((c def c (c (? . 13) q expand-syntax-top-level-with-compile-time-evals)) q (45543 . 3)) ((q def ((lib "syntax/moddep.rkt") show-import-tree)) q (31778 . 3)) ((c form c (c (? . 0) q exact-positive-integer)) q (9060 . 2)) ((c def c (c (? . 0) q static)) q (9111 . 4)) ((c def c (c (? . 20) q collapse-module-path-index)) q (31476 . 7)) ((c form c (c (? . 0) q kernel-literals)) q (9998 . 2)) ((c form c (c (? . 14) q define-eh-alternative-set)) q (12310 . 4)) ((c def c (c (? . 15) q raise-read-error)) q (38665 . 15)) ((c def c (c (? . 16) q stx-pair?)) q (13544 . 3)) ((c form c (c (? . 0) q ~parse)) q (7690 . 4)) ((c form c (c (? . 1) q quote-character-position)) q (45156 . 3)) ((q def ((lib "syntax/name.rkt") syntax-local-infer-name)) q (31868 . 3)) ((c def c (c (? . 2) q bound-id-table-iterate-next)) q (19007 . 5)) ((c form c (c (? . 1) q quote-source-file)) q (44993 . 3)) ((c def c (c (? . 13) q eval-compile-time-part-of-top-level)) q (45849 . 3)) ((q def ((lib "syntax/flatten-begin.rkt") flatten-begin)) q (32420 . 3)) ((c form c (c (? . 0) q str)) q (8939 . 2)) ((c form c (c (? . 1) q quote-module-name)) q (45396 . 2)) ((c def c (c (? . 4) q source-location-source)) q (43484 . 3)) ((c def c (c (? . 2) q make-immutable-bound-id-table)) q (17338 . 6)) ((c def c (c (? . 8) q free-identifier-mapping-for-each)) q (21630 . 5)) ((c def c (c (? . 16) q stx-list?)) q (13599 . 3)) ((c form c (c (? . 0) q integer)) q (8991 . 2)) ((c form c (c (? . 0) q ~commit)) q (4449 . 2)) ((c form c (c (? . 0) q ~fail)) q (7371 . 11)) ((c def c (c (? . 9) q exn:get-module-code-path)) c (? . 17)) ((c def c (c (? . 3) q options-select-value)) q (27012 . 7)) ((c form c (c (? . 18) q #%module-begin)) q (39826 . 28)) ((c form c (c (? . 12) q datum-case)) q (27846 . 3)) ((c def c (c (? . 2) q free-id-table-for-each)) q (15963 . 4)) ((c form c (c (? . 0) q identifier)) q (8906 . 2)) ((c def c (c (? . 19) q resolve-module-path)) q (30562 . 7)) ((c form c (c (? . 0) q ...+)) q (4997 . 2)) ((c def c (c (? . 9) q exn:get-module-code)) c (? . 17)) ((c def c (c (? . 4) q build-source-location-vector)) q (43199 . 3)) ((c def c (c (? . 25) q generate-expand-context)) q (32020 . 2)) ((c form c (c (? . 5) q kernel-syntax-case*)) q (14114 . 2)) ((c form c (c (? . 0) q ~!)) q (7249 . 2)) ((c def c (c (? . 2) q make-bound-id-table)) q (17105 . 5)) ((c def c (c (? . 2) q free-id-table?)) q (14899 . 3)) ((c def c (c (? . 3) q parse-keyword-options/eol)) q (24973 . 30)) ((c def c (c (? . 8) q bound-identifier-mapping-map)) q (20782 . 5)) ((c def c (c (? . 2) q bound-id-table?)) q (17589 . 3)) ((q def ((lib "syntax/free-vars.rkt") free-vars)) q (23278 . 4)) ((c form c (c (? . 0) q syntax-parse)) q (104 . 29)) ((q form ((lib "syntax/quote.rkt") quote-syntax/keep-srcloc)) q (45502 . 2)) ((c form c (c (? . 0) q ~delimit-cut)) q (4464 . 2)) ((c def c (c (? . 20) q collapse-module-path)) q (31196 . 7)) ((c def c (c (? . 2) q free-id-table-iterate-key)) q (16427 . 4)) ((c def c (c (? . 3) q check-stx-string)) q (27627 . 4)) ((q form ((lib "syntax/parse/define.rkt") define-simple-macro)) q (7800 . 3)) ((c form c (c (? . 21) q syntax-class/c)) q (10788 . 2)) ((c def c (c (? . 4) q build-source-location-list)) q (43094 . 3)) ((c form c (c (? . 0) q exact-integer)) q (9006 . 2)) ((c form c (c (? . 5) q kernel-syntax-case)) q (14050 . 2)) ((q def ((lib "syntax/for-body.rkt") split-for-body)) q (42614 . 4)) ((c def c (c (? . 8) q free-identifier-mapping-get)) q (21136 . 8)) ((c def c (c (? . 2) q bound-id-table-iterate-value)) q (19336 . 5)) ((c form c (c (? . 0) q define/syntax-parse)) q (2148 . 4)) ((c def c (c (? . 8) q bound-identifier-mapping?)) q (19899 . 3)) ((c def c (c (? . 2) q bound-id-table-for-each)) q (18670 . 4)) ((c def c (c (? . 7) q reified-syntax-class-curry)) q (11477 . 8)) ((c def c (c (? . 9) q exn:get-module-code?)) c (? . 17)) ((c def c (c (? . 13) q expand-syntax-top-level-with-compile-time-evals/flatten)) q (45732 . 4)) ((q def ((lib "syntax/to-string.rkt") syntax->string)) q (23201 . 3)) ((c def c (c (? . 2) q free-id-table-iterate-next)) q (16290 . 4)) ((c def c (c (? . 2) q bound-id-table-ref)) q (17790 . 5)) ((c def c (c (? . 16) q stx-map)) q (13840 . 4)) ((c form c (c (? . 0) q syntax-parser)) q (2092 . 2)) ((c def c (c (? . 2) q bound-id-table-remove)) q (18384 . 5)) ((c form c (c (? . 6) q ?@)) q (13345 . 2)) ((c form c (c (? . 12) q undatum)) q (28033 . 2)) ((c form c (c (? . 0) q ~and)) q (4409 . 2)) ((c def c (c (? . 8) q module-identifier-mapping-put!)) q (22504 . 7)) ((c def c (c (? . 10) q generate-struct-declaration)) q (36220 . 17)) ((c def c (c (? . 8) q module-identifier-mapping-for-each)) q (22762 . 5)) ((c form c (c (? . 0) q keyword)) q (8962 . 2)) ((c def c (c (? . 8) q bound-identifier-mapping-put!)) q (20319 . 7)) ((c def c (c (? . 16) q stx->list)) q (13654 . 3)) ((c def c (c (? . 2) q make-immutable-free-id-table)) q (14651 . 6)) ((c form c (c (? . 1) q quote-srcloc-string)) q (45282 . 3)) ((c def c (c (? . 16) q stx-cdr)) q (13788 . 3)) ((c form c (c (? . 11) q syntax-class-arity)) q (10071 . 2)) ((c def c (c (? . 4) q check-source-location!)) q (42916 . 4)) ((c form c (c (? . 21) q provide-syntax-class/contract)) q (10333 . 12)) ((c def c (c (? . 0) q expr/c)) q (9256 . 15)) ((c form c (c (? . 0) q ~or)) q (4421 . 2)) ((c form c (c (? . 7) q reify-syntax-class)) q (10810 . 2)) ((c form c (c (? . 0) q attribute)) q (4369 . 2)) ((c def c (c (? . 4) q build-source-location)) q (43008 . 3)) ((c form c (c (? . 7) q ~splicing-reflect)) q (11959 . 2)) ((c def c (c (? . 10) q build-struct-generation*)) q (34153 . 20)) ((c def c (c (? . 22) q replace-context)) q (23476 . 4)) ((c form c (c (? . 12) q datum)) q (27913 . 2)) ((c def c (c (? . 2) q immutable-free-id-table?)) q (15027 . 3)) ((c form c (c (? . 12) q quasidatum)) q (28003 . 2)) ((c def c (c (? . 2) q free-id-table-remove!)) q (15566 . 4)) ((c def c (c (? . 8) q module-identifier-mapping?)) q (22078 . 3)) ((c form c (c (? . 0) q ~datum)) q (4896 . 2)) ((c def c (c (? . 7) q reified-syntax-class-attributes)) q (10998 . 4)) ((q def ((lib "syntax/template.rkt") transform-template)) q (37345 . 24)) ((c def c (c (? . 8) q module-identifier-mapping-map)) q (22982 . 5)) ((c def c (c (? . 2) q mutable-free-id-table?)) q (14959 . 3)) ((c def c (c (? . 4) q update-source-location)) q (44125 . 13)) ((c form c (c (? . 0) q define-conventions)) q (8589 . 10)) ((c def c (c (? . 4) q source-location-column)) q (43675 . 4)) ((c def c (c (? . 2) q free-id-table-iterate-first)) q (16194 . 3)) ((c def c (c (? . 2) q bound-id-table-map)) q (18542 . 4)) ((c def c (c (? . 16) q stx-null?)) q (13489 . 3)) ((c def c (c (? . 9) q struct:exn:get-module-code)) c (? . 17)) ((c def c (c (? . 13) q eval-compile-time-part-of-top-level/compile)) q (45933 . 4)) ((c form c (c (? . 11) q debug-parse)) q (10257 . 4)) ((c form c (c (? . 1) q quote-character-span)) q (45223 . 3)) ((c form c (c (? . 1) q quote-line-number)) q (45046 . 3)) ((c def c (c (? . 23) q check-module-form)) q (28177 . 8)) ((c form c (c (? . 1) q quote-module-path)) q (45449 . 2)) ((c def c (c (? . 16) q stx-car)) q (13736 . 3)) ((c def c (c (? . 2) q bound-id-table-remove!)) q (18266 . 4)) ((c def c (c (? . 10) q build-struct-names)) q (32776 . 14)) ((c form c (c (? . 0) q nat)) q (9100 . 2)) ((c form c (c (? . 0) q ~literal)) q (4788 . 5)) ((c def c (c (? . 3) q check-expression)) q (27362 . 4)) ((c def c (c (? . 18) q make-meta-reader)) q (41245 . 17)) ((c def c (c (? . 2) q free-id-table-count)) q (16094 . 3)) ((c form c (c (? . 0) q char)) q (8950 . 2)) ((c def c (c (? . 10) q build-struct-expand-info)) q (35061 . 21)) ((c form c (c (? . 0) q ~optional)) q (4484 . 2)) ((c form c (c (? . 11) q syntax-class-attributes)) q (10021 . 2)) ((c def c (c (? . 24) q lookup-documentation)) q (46402 . 5)) ((q def ((lib "syntax/path-spec.rkt") resolve-path-spec)) q (37028 . 9)) ((c def c (c (? . 25) q build-expand-context)) q (31940 . 3)) ((c def c (c (? . 2) q immutable-bound-id-table?)) q (17719 . 3)) ((c def c (c (? . 9) q moddep-current-open-input-file)) q (30243 . 5)) ((c def c (c (? . 3) q options-select-row)) q (26781 . 7)) ((c form c (c (? . 0) q define-splicing-syntax-class)) q (3632 . 5)) ((c def c (c (? . 10) q parse-define-struct)) q (32494 . 7)) ((c def c (c (? . 8) q free-identifier-mapping?)) q (21066 . 3)) ((c def c (c (? . 4) q source-location-end)) q (44014 . 4))))

(mylet ([var-id rhs-expr] ...) body ...+)
(mylet loop-id ([var-id rhs-expr] ...) body ...+)
syntax
(syntax-parse stx-expr parse-option ... clause ...+)
 
parse-option       = #:context context-expr
                   | #:literals (literal ...)
                   | #:datum-literals (datum-literal ...)
                   | #:literal-sets (literal-set ...)
                   | #:conventions (convention-id ...)
                   | #:local-conventions (convention-rule ...)
                   | #:disable-colon-notation
                      
literal            = literal-id
                   | (pattern-id literal-id)
                   | (pattern-id literal-id #:phase phase-expr)
                      
datum-literal      = literal-id
                   | (pattern-id literal-id)
                      
literal-set        = literal-set-id
                   | (literal-set-id literal-set-option ...)
                      
literal-set-option = #:at context-id
                   | #:phase phase-expr
                      
clause             = (syntax-pattern pattern-directive ... body ...+)
 
  stx-expr : syntax?
  context-expr : syntax?
  phase-expr : (or/c exact-integer? #f)

#:context context-expr
 
  context-expr : syntax?

#:literals (literal ...)
 
literal = literal-id
        | (pattern-id literal-id)
        | (pattern-id literal-id #:phase phase-expr)
 
  phase-expr : (or/c exact-integer? #f)

#:datum-literals (datum-literal ...)
 
datum-literal = literal-id
              | (pattern-id literal-id)

#:literal-sets (literal-set ...)
 
literal-set        = literal-set-id
                   | (literal-set-id literal-set-option ...)
                      
literal-set-option = #:at lctx
                   | #:phase phase-expr
 
  phase-expr : (or/c exact-integer? #f)

#:conventions (conventions-id ...)

#:local-conventions (convention-rule ...)

#:disable-colon-notation
syntax
(syntax-parser parse-option ... clause ...+)
syntax
(define/syntax-parse syntax-pattern pattern-directive ... stx-expr)
 
  stx-expr : syntax?
syntax
(define-syntax-class name-id stxclass-option ...
  stxclass-variant ...+)
(define-syntax-class (name-id . kw-formals) stxclass-option ...
  stxclass-variant ...+)
 
stxclass-option  = #:attributes (attr-arity-decl ...)
                 | #:description description-expr
                 | #:opaque
                 | #:commit
                 | #:no-delimit-cut
                 | #:literals (literal-entry ...)
                 | #:datum-literals (datum-literal-entry ...)
                 | #:literal-sets (literal-set ...)
                 | #:conventions (convention-id ...)
                 | #:local-conventions (convention-rule ...)
                 | #:disable-colon-notation
                    
attr-arity-decl  = attr-name-id
                 | (attr-name-id depth)
                    
stxclass-variant = (pattern syntax-pattern pattern-directive ...)
 
  description-expr : (or/c string? #f)

#:attributes (attr-arity-decl ...)
 
attr-arity-decl = attr-id
                | (attr-id depth)

#:description description-expr
 
  description-expr : (or/c string? #f)

#:opaque

#:commit

#:no-delimit-cut

#:literals (literal-entry ...)

#:datum-literals (datum-literal-entry ...)

#:literal-sets (literal-set ...)

#:conventions (convention-id ...)
syntax
(define-splicing-syntax-class name-id stxclass-option ...
  stxclass-variant ...+)
(define-splicing-syntax-class (name-id kw-formals) stxclass-option ...
  stxclass-variant ...+)
syntax
(pattern syntax-pattern pattern-directive ...)

#:declare pvar-id stxclass maybe-role
 
stxclass   = syntax-class-id
           | (syntax-class-id arg ...)
              
maybe-role = 
           | #:role role-expr

#:with syntax-pattern stx-expr

#:attr attr-arity-decl expr

#:fail-when condition-expr message-expr
 
  message-expr : (or/c string? #f)

#:fail-unless condition-expr message-expr
 
  message-expr : (or/c string? #f)

#:when condition-expr

#:do [def-or-expr ...]
syntax
(attribute attr-id)
syntax
~var
syntax
~and
syntax
~or
syntax
~describe
syntax
~commit
syntax
~delimit-cut
syntax
~optional

id

(~var pvar-id)

(~var pvar-id syntax-class-use maybe-role)
 
syntax-class-use = syntax-class-id
                 | (syntax-class-id arg ...)
                    
maybe-role       = 
                 | #:role role-expr
 
  role-expr : (or/c string? #f)

(~literal literal-id maybe-phase)
 
maybe-phase = 
            | #:phase phase-expr

atomic-datum

(~datum datum)

(H-pattern . S-pattern)

(A-pattern . S-pattern)

(EH-pattern ... . S-pattern)

(H-pattern ...+ . S-pattern)

(~and S/A-pattern ...)

(~or S-pattern ...)

(~not S-pattern)

#(pattern-part ...)

#s(prefab-struct-key pattern-part ...)

#&S-pattern

(~rest S-pattern)

(~describe maybe-opaque expr S-pattern)
 
maybe-opaque = 
             | #:opaque
                
maybe-role   = 
             | #:role role-expr
 
  expr : (or/c string? #f)
  role-expr : (or/c string? #f)

(~commit S-pattern)

(~delimit-cut S-pattern)

A-pattern

pvar-id:splicing-syntax-class-id

(~var pvar-id splicing-syntax-class-use maybe-role)
 
splicing-syntax-class-use = splicing-syntax-class-id
                          | (splicing-syntax-class-id arg ...)
                             
maybe-role                = 
                          | #:role role-expr
 
  role-expr : (or/c string? #f)

(~seq . L-pattern)

(~and H-pattern ...)

(~or H-pattern ...)

(~optional H-pattern maybe-optional-option)
 
maybe-optional-option = 
                      | #:defaults ([attr-arity-decl expr] ...)
                         
attr-arity-decl       = attr-id
                      | (attr-id depth)

(~describe expr H-pattern)

(~commit H-pattern)

(~delimit-cut H-pattern)

(~peek H-pattern)

(~peek-not H-pattern)

S-pattern

(~or EH-pattern ...)

(~once H-pattern once-option ...)
 
once-option = #:name name-expr
            | #:too-few too-few-message-expr
            | #:too-many too-many-message-expr
 
  name-expr : (or/c string? #f)
  too-few-message-expr : (or/c string? #f)
  too-many-message-expr : (or/c string? #f)

(~optional H-pattern optional-option ...)
 
optional-option = #:name name-expr
                | #:too-many too-many-message-expr
                | #:defaults ([attr-id expr] ...)
 
  name-expr : (or/c string? #f)
  too-many-message-expr : (or/c string? #f)

(~between H-pattern min-number max-number between-option ...)
 
reps-option = #:name name-expr
            | #:too-few too-few-message-expr
            | #:too-many too-many-message-expr
 
  name-expr : (or/c syntax? #f)
  too-few-message-expr : (or/c syntax? #f)

~!

(~bind [attr-arity-decl expr] ...)
 
attr-arity-decl = attr-name-id
                | (attr-name-id depth)

(~fail maybe-fail-condition maybe-message-expr)
 
maybe-fail-condition = 
                     | #:when condition-expr
                     | #:unless condition-expr
                        
maybe-message-expr   = 
                     | message-expr
 
  message-expr : (or/c string? #f)

(~parse S-pattern stx-expr)
 
  stx-expr : syntax?

(~and A-pattern ...+)

(~do defn-or-expr ...)
syntax
(define-simple-macro (macro-id . pattern) pattern-directive ...
  template)
syntax
(define-literal-set id maybe-phase maybe-imports maybe-datum-literals
  (literal ...))
 
literal              = literal-id
                     | (pattern-id literal-id)
                        
maybe-phase          = 
                     | #:for-template
                     | #:for-syntax
                     | #:for-label
                     | #:phase phase-level
                        
maybe-datum-literals = 
                     | #:datum-literals (datum-literal ...)
                        
maybe-imports        = 
                     | #:literal-sets (imported-litset-id ...)
syntax
(literal-set->predicate litset-id)
syntax
(define-conventions name-id convention-rule ...)
 
convention-rule = (name-pattern syntax-class)
                   
name-pattern    = exact-id
                | name-rx
                   
syntax-class    = syntax-class-id
                | (syntax-class-id expr ...)
syntax
expr
syntax
identifier
syntax
boolean
syntax
str
syntax
char
syntax
keyword
syntax
number
syntax
integer
syntax
exact-integer
syntax
exact-nonnegative-integer
syntax
exact-positive-integer
syntax
id
syntax
nat
procedure
(static predicate description) -> (attributes value)
  predicate : (-> any/c any/c)
  description : (or/c string? #f)
procedure
(expr/c  contract-expr            
        [#:positive pos-blame     
         #:negative neg-blame     
         #:name expr-name         
         #:macro macro-name       
         #:context ctx])      -> (attributes c)
  contract-expr : syntax?
  pos-blame : (or/c syntax? string? module-path-index? 'from-macro 'use-site 'unknown)
            = 'use-site
  neg-blame : (or/c syntax? string? module-path-index? 'from-macro 'use-site 'unknown)
            = 'from-macro
  expr-name : (or/c identifier? string? symbol?) = #f
  macro-name : (or/c identifier? string? symbol?) = #f
  ctx : (or/c syntax? #f) = determined automatically
syntax
kernel-literals
syntax
(syntax-class-attributes syntax-class-id)
syntax
(syntax-class-arity syntax-class-id)
syntax
(syntax-class-keywords syntax-class-id)
syntax
(syntax-class-parse syntax-class-id stx-expr arg ...)
 
  stx-expr : syntax?
syntax
(debug-parse stx-expr S-pattern ...+)
 
  stx-expr : syntax?
syntax
(provide-syntax-class/contract
  [syntax-class-id syntax-class-contract] ...)
 
syntax-class-contract = (syntax-class/c (mandatory-arg ...))
                      | (syntax-class/c (mandatory-arg ...)
                                        (optional-arg ...))
                         
arg                   = contract-expr
                      | keyword contract-expr
 
  contract-expr : contract?
syntax
syntax-class/c
syntax
(reify-syntax-class syntax-class-id)
procedure
(reified-syntax-class? x) -> boolean?
  x : any/c
procedure
(reified-splicing-syntax-class? x) -> boolean?
  x : any/c
procedure
(reified-syntax-class-attributes r)
 -> (listof (list/c symbol? exact-nonnegative-integer?))
  r : (or/c reified-syntax-class? reified-splicing-syntax-class?)
procedure
(reified-syntax-class-arity r) -> procedure-arity?
  r : (or/c reified-syntax-class? reified-splicing-syntax-class?)
procedure
(reified-syntax-class-keywords r)
 -> (listof keyword?) (listof keyword?)
  r : (or/c reified-syntax-class? reified-splicing-syntax-class?)
procedure
(reified-syntax-class-curry r                  
                            arg ...            
                            #:<kw> kw-arg ...) 
 -> (or/c reified-syntax-class? reified-splicing-syntax-class?)
  r : (or/c reified-syntax-class? reified-splicing-syntax-class?)
  arg : any/c
  kw-arg : any/c

(~reflect var-id (reified-expr arg-expr ...) maybe-attrs)
 
maybe-attrs = 
            | #:attributes (attr-arity-decl ...)

(~splicing-reflect var-id (reified-expr arg-expr ...) maybe-attrs)
syntax
(define-primitive-splicing-syntax-class (name-id param-id ...)
  maybe-description maybe-attrs
  parser-expr)
 
  parser : (-> syntax?
               (->* () ((or/c string? #f) -> any))
               (cons/c exact-positive-integer? list?))
syntax
(define-eh-alternative-set name eh-alternative ...)
 
alternative = (pattern EH-pattern)

(~eh-var name eh-alternative-set-id)
syntax
(define-syntax-class/specialize header syntax-class-use)
 
header           = id
                 | (id . kw-formals)
                    
syntax-class-use = target-stxclass-id
                 | (target-stxclass-id arg ...)
syntax
(template tmpl)
 
tmpl       = pattern-variable-id
           | (head-tmpl . tmpl)
           | (head-tmpl ellipsis ...+ . tmpl)
           | (metafunction-id . tmpl)
           | (?? tmpl tmpl)
           | #(head-tmpl ...)
           | #s(prefab-struct-key head-tmpl ...)
           | #&tmpl
           | constant-term
              
head-templ = tmpl
           | (?? head-tmpl)
           | (?? head-tmpl head-tmpl)
           | (?@ . tmpl)
              
ellipsis   = ...

(?? tmpl alt-tmpl)

(?? head-tmpl)

(?@ . tmpl)

(metafunction-id . tmpl)
syntax
??
syntax
?@
syntax
(define-template-metafunction metafunction-id expr)
(define-template-metafunction (metafunction-id . formals) body ...+)
procedure
(stx-null? v) -> boolean?
  v : any/c
procedure
(stx-pair? v) -> boolean?
  v : any/c
procedure
(stx-list? v) -> boolean?
  v : any/c
procedure
(stx->list stx-list) -> (or/c list? #f)
  stx-list : stx-list?
procedure
(stx-car v) -> any
  v : stx-pair?
procedure
(stx-cdr v) -> any
  v : stx-pair?
procedure
(stx-map proc stxl ...) -> list?
  proc : procedure?
  stxl : stx-list?
procedure
(module-or-top-identifier=? a-id b-id) -> boolean?
  a-id : identifier?
  b-id : identifier?
syntax
(kernel-syntax-case stx-expr trans?-expr clause ...)
syntax
(kernel-syntax-case* stx-expr trans?-expr (extra-id ...) clause ...)
syntax
(kernel-syntax-case/phase stx-expr phase-expr clause ...)
syntax
(kernel-syntax-case*/phase stx-expr phase-expr (extra-id ..)
  clause ...)
procedure
(kernel-form-identifier-list) -> (listof identifier?)
procedure
(make-free-id-table [init-dict           
                     #:phase phase]) -> mutable-free-id-table?
  init-dict : dict? = null
  phase : (or/c exact-integer? #f) = (syntax-local-phase-level)
procedure
(make-immutable-free-id-table [init-dict       
                               #:phase phase]) 
 -> immutable-free-id-table?
  init-dict : dict? = null
  phase : (or/c exact-integer? #f) = (syntax-local-phase-level)
procedure
(free-id-table? v) -> boolean?
  v : any/c
procedure
(mutable-free-id-table? v) -> boolean?
  v : any/c
procedure
(immutable-free-id-table? v) -> boolean?
  v : any/c
procedure
(free-id-table-ref table id [failure]) -> any
  table : free-id-table?
  id : identifier?
  failure : any/c = (lambda () (raise (make-exn:fail .....)))
procedure
(free-id-table-set! table id v) -> void?
  table : mutable-free-id-table?
  id : identifier?
  v : any/c
procedure
(free-id-table-set table id v) -> immutable-free-id-table?
  table : immutable-free-id-table?
  id : identifier?
  v : any/c
procedure
(free-id-table-remove! table id) -> void?
  table : mutable-free-id-table?
  id : identifier?
procedure
(free-id-table-remove table id v) -> immutable-free-id-table?
  table : immutable-free-id-table?
  id : identifier?
  v : any/c
procedure
(free-id-table-map table proc) -> list?
  table : free-id-table?
  proc : (-> identifier? any/c any)
procedure
(free-id-table-for-each table proc) -> void?
  table : free-id-table?
  proc : (-> identifier? any/c any)
procedure
(free-id-table-count table) -> exact-nonnegative-integer?
  table : free-id-table?
procedure
(free-id-table-iterate-first table) -> id-table-iter?
  table : free-id-table?
procedure
(free-id-table-iterate-next table position) -> id-table-iter?
  table : free-id-table?
  position : id-table-iter?
procedure
(free-id-table-iterate-key table position) -> identifier?
  table : free-id-table?
  position : id-table-iter?
procedure
(free-id-table-iterate-value table         
                             position) -> identifier?
  table : bound-it-table?
  position : id-table-iter?
procedure
(id-table-iter? v) -> boolean?
  v : any/c
procedure
(free-id-table/c  key-ctc                      
                  val-ctc                      
                 [#:immutable immutable?]) -> contract?
  key-ctc : flat-contract?
  val-ctc : chaperone-contract?
  immutable? : (or/c #t #f 'dont-care) = 'dont-care
procedure
(make-bound-id-table [init-dict           
                      #:phase phase]) -> mutable-bound-id-table?
  init-dict : dict? = null
  phase : (or/c exact-integer? #f) = (syntax-local-phase-level)
procedure
(make-immutable-bound-id-table [init-dict       
                                #:phase phase]) 
 -> immutable-bound-id-table?
  init-dict : dict? = null
  phase : (or/c exact-integer? #f) = (syntax-local-phase-level)
procedure
(bound-id-table? v) -> boolean?
  v : any/c
procedure
(mutable-bound-id-table? v) -> boolean?
  v : any/c
procedure
(immutable-bound-id-table? v) -> boolean?
  v : any/c
procedure
(bound-id-table-ref table id [failure]) -> any
  table : bound-id-table?
  id : identifier?
  failure : any/c = (lambda () (raise (make-exn:fail .....)))
procedure
(bound-id-table-set! table id v) -> void?
  table : mutable-bound-id-table?
  id : identifier?
  v : any/c
procedure
(bound-id-table-set table id v) -> immutable-bound-id-table?
  table : immutable-bound-id-table?
  id : identifier?
  v : any/c
procedure
(bound-id-table-remove! table id) -> void?
  table : mutable-bound-id-table?
  id : identifier?
procedure
(bound-id-table-remove table id v) -> immutable-bound-id-table?
  table : immutable-bound-id-table?
  id : identifier?
  v : any/c
procedure
(bound-id-table-map table proc) -> list?
  table : bound-id-table?
  proc : (-> identifier? any/c any)
procedure
(bound-id-table-for-each table proc) -> void?
  table : bound-id-table?
  proc : (-> identifier? any/c any)
procedure
(bound-id-table-count table) -> exact-nonnegative-integer?
  table : bound-id-table?
procedure
(bound-id-table-iterate-first table) -> id-table-position?
  table : bound-id-table?
procedure
(bound-id-table-iterate-next table         
                             position) -> id-table-position?
  table : bound-id-table?
  position : id-table-position?
procedure
(bound-id-table-iterate-key table position) -> identifier?
  table : bound-id-table?
  position : id-table-position?
procedure
(bound-id-table-iterate-value table         
                              position) -> identifier?
  table : bound-id-table?
  position : id-table-position?
procedure
(bound-id-table/c  key-ctc                     
                   val-ctc                     
                  [#:immutable immutable]) -> contract?
  key-ctc : flat-contract?
  val-ctc : chaperone-contract?
  immutable : (or/c #t #f 'dont-care) = 'dont-care
procedure
(make-bound-identifier-mapping) -> bound-identifier-mapping?
procedure
(bound-identifier-mapping? v) -> boolean?
  v : any/c
procedure
(bound-identifier-mapping-get  bound-map           
                               id                  
                              [failure-thunk]) -> any
  bound-map : bound-identifier-mapping?
  id : identifier?
  failure-thunk : (-> any)
                = (lambda () (raise (make-exn:fail ....)))
procedure
(bound-identifier-mapping-put! bound-map     
                               id            
                               v)        -> void?
  bound-map : bound-identifier-mapping?
  id : identifier?
  v : any/c
procedure
(bound-identifier-mapping-for-each bound-map     
                                   proc)     -> void?
  bound-map : boud-identifier-mapping?
  proc : (identifier? any/c . -> . any)
procedure
(bound-identifier-mapping-map bound-map     
                              proc)     -> (listof any?)
  bound-map : bound-identifier-mapping?
  proc : (identifier? any/c . -> . any)
procedure
(make-free-identifier-mapping) -> free-identifier-mapping?
procedure
(free-identifier-mapping? v) -> boolean?
  v : any/c
procedure
(free-identifier-mapping-get  free-map            
                              id                  
                             [failure-thunk]) -> any
  free-map : free-identifier-mapping?
  id : identifier?
  failure-thunk : (-> any)
                = (lambda () (raise (make-exn:fail ....)))
procedure
(free-identifier-mapping-put! free-map id v) -> void?
  free-map : free-identifier-mapping?
  id : identifier?
  v : any/c
procedure
(free-identifier-mapping-for-each free-map     
                                  proc)    -> void?
  free-map : free-identifier-mapping?
  proc : (identifier? any/c . -> . any)
procedure
(free-identifier-mapping-map free-map proc) -> (listof any?)
  free-map : free-identifier-mapping?
  proc : (identifier? any/c . -> . any)
procedure
(make-module-identifier-mapping) -> module-identifier-mapping?
procedure
(module-identifier-mapping? v) -> boolean?
  v : any/c
procedure
(module-identifier-mapping-get  module-map          
                                id                  
                               [failure-thunk]) -> any
  module-map : module-identifier-mapping?
  id : identifier?
  failure-thunk : (-> any)
                = (lambda () (raise (make-exn:fail ....)))
procedure
(module-identifier-mapping-put! module-map     
                                id             
                                v)         -> void?
  module-map : module-identifier-mapping?
  id : identifier?
  v : any/c
procedure
(module-identifier-mapping-for-each module-map     
                                    proc)      -> void?
  module-map : module-identifier-mapping?
  proc : (identifier? any/c . -> . any)
procedure
(module-identifier-mapping-map module-map     
                               proc)      -> (listof any?)
  module-map : module-identifier-mapping?
  proc : (identifier? any/c . -> . any)
procedure
(syntax->string stx-list) -> string?
  stx-list : stx-list?
procedure
(free-vars expr-stx [insp]) -> (listof identifier?)
  expr-stx : syntax?
  insp : inspector? = mod-decl-insp
procedure
(strip-context stx) -> syntax?
  stx : syntax?
procedure
(replace-context ctx-stx stx) -> syntax?
  ctx-stx : (or/c syntax? #f)
  stx : syntax?
procedure
(parse-keyword-options  stx                                      
                        table                                    
                       [#:context ctx                            
                        #:no-duplicates? no-duplicates?          
                        #:incompatible incompatible              
                        #:on-incompatible incompatible-handler   
                        #:on-too-short too-short-handler         
                        #:on-not-in-table not-in-table-handler]) 
 -> options any/c
  stx : syntax?
  table : keyword-table
  ctx : (or/c false/c syntax?) = #f
  no-duplicates? : boolean? = #f
  incompatible : (listof (listof keyword?)) = '()
  incompatible-handler : (-> keyword? keyword?
                             options syntax? syntax?
                             (values options syntax?))
                       = (lambda (....) (error ....))
  too-short-handler : (-> keyword? options syntax? syntax?
                          (values options syntax?))
                    = (lambda (....) (error ....))
  not-in-table-handler : (-> keyword? options syntax? syntax?
                             (values options syntax?))
                       = (lambda (....) (error ....))
procedure
(parse-keyword-options/eol                                         
                            stx                                    
                            table                                  
                           [#:context ctx                          
                            #:no-duplicates? no-duplicates?        
                            #:incompatible incompatible            
                            #:on-incompatible incompatible-handler 
                            #:on-too-short too-short-handler       
                            #:on-not-in-table not-in-table-handler 
                            #:on-not-eol not-eol-handler])         
 -> options
  stx : syntax?
  table : keyword-table
  ctx : (or/c false/c syntax?) = #f
  no-duplicates? : boolean? = #f
  incompatible : (listof (list keyword? keyword?)) = '()
  incompatible-handler : (-> keyword? keyword?
                             options syntax? syntax?
                             (values options syntax?))
                       = (lambda (....) (error ....))
  too-short-handler : (-> keyword? options syntax? syntax?
                          (values options syntax?))
                    = (lambda (....) (error ....))
  not-in-table-handler : (-> keyword? options syntax? syntax?
                             (values options syntax?))
                       = (lambda (....) (error ....))
  not-eol-handler : (-> options syntax? syntax?
                        options)
                  = (lambda (....) (error ....))
procedure
(options-select options keyword) -> (listof list?)
  options : options
  keyword : keyword?
procedure
(options-select-row options                
                    keyword                
                    #:default default) -> any
  options : options
  keyword : keyword?
  default : any/c
procedure
(options-select-value options                
                      keyword                
                      #:default default) -> any
  options : options
  keyword : keyword?
  default : any/c
procedure
(check-identifier stx ctx) -> identifier?
  stx : syntax?
  ctx : (or/c false/c syntax?)
procedure
(check-expression stx ctx) -> syntax?
  stx : syntax?
  ctx : (or/c false/c syntax?)
procedure
((check-stx-listof check) stx ctx) -> (listof any/c)
  check : check-procedure
  stx : syntax?
  ctx : (or/c false/c syntax?)
procedure
(check-stx-string stx ctx) -> syntax?
  stx : syntax?
  ctx : (or/c false/c syntax?)
procedure
(check-stx-boolean stx ctx) -> syntax?
  stx : syntax?
  ctx : (or/c false/c syntax?)
syntax
(datum-case datum-expr (literal-id ...)
  clause ...)
syntax
(datum template)
syntax
(with-datum ([pattern datum-expr] ...)
  body ...+)
syntax
(quasidatum template)
syntax
(undatum expr)
syntax
(undatum-splicing expr)
procedure
(with-module-reading-parameterization thunk) -> any
  thunk : (-> any)
procedure
(check-module-form stx                 
                   expected-module-sym 
                   source-v)           
 -> (or/c syntax? false/c)
  stx : (or/c syntax? eof-object?)
  expected-module-sym : symbol?
  source-v : (or/c string? false/c)
procedure
(get-module-code  path                                   
                 [#:submodule-path submodule-path        
                  #:sub-path compiled-subdir0            
                  compiled-subdir                        
                  #:roots roots                          
                  #:compile compile-proc0                
                  compile-proc                           
                  #:extension-handler ext-proc0          
                  ext-proc                               
                  #:choose choose-proc                   
                  #:notify notify-proc                   
                  #:source-reader read-syntax-proc]) -> any
  path : path?
  submodule-path : (listof symbol?) = '()
  compiled-subdir0 : (and/c path-string? relative-path?)
                   = "compiled"
  compiled-subdir : (and/c path-string? relative-path?)
                  = compiled-subdir0
  roots : (listof (or/c path-string? 'same))
        = (current-compiled-file-roots)
  compile-proc0 : (any/c . -> . any) = compile
  compile-proc : (any/c . -> . any) = compile-proc0
  ext-proc0 : (or/c false/c (path? boolean? . -> . any)) = #f
  ext-proc : (or/c false/c (path? boolean? . -> . any))
           = ext-proc0
  choose-proc : (path? path? path?
                 . -> .
                 (or/c (symbols 'src 'zo 'so) false/c))
              = (lambda (src zo so) #f)
  notify-proc : (any/c . -> . any) = void
  read-syntax-proc : (any/c input-port? . -> . (or/c syntax? eof-object?))
                   = read-syntax
parameter
(moddep-current-open-input-file)
 -> (path-string? . -> . input-port?)
(moddep-current-open-input-file proc) -> void?
  proc : (path-string? . -> . input-port?)
struct
(struct exn:get-module-code exn:fail (path)
        #:extra-constructor-name make-exn:get-module-code)
  path : path?
procedure
(resolve-module-path module-path-v  
                     rel-to-path-v) 
 -> (or/c path? symbol?
          (cons/c 'submod (cons/c (or/c path? symbol?) (listof symbol?))))
  module-path-v : module-path?
  rel-to-path-v : (or/c path-string? (-> any) false/c)
procedure
(resolve-module-path-index module-path-index 
                           rel-to-path-v)    
 -> (or/c path? symbol?
          (cons/c 'submod (cons/c (or/c path? symbol?) (listof symbol?))))
  module-path-index : module-path-index?
  rel-to-path-v : (or/c path-string? (-> any) false/c)
procedure
(collapse-module-path module-path-v         
                      rel-to-module-path-v) 
 -> (or/c path? module-path?)
  module-path-v : module-path?
  rel-to-module-path-v : (or/c module-path?
                               (-> module-path?))
procedure
(collapse-module-path-index module-path-index     
                            rel-to-module-path-v) 
 -> (or/c path? module-path?)
  module-path-index : module-path-index?
  rel-to-module-path-v : (or/c module-path?
                               (-> module-path?))
procedure
(show-import-tree module-path-v) -> void?
  module-path-v : module-path?
procedure
(syntax-local-infer-name stx) -> any/c
  stx : syntax?
procedure
(build-expand-context v) -> list?
  v : (or/c symbol? list?)
procedure
(generate-expand-context) -> list?
procedure
(normalize-definition  defn-stx           
                       lambda-id-stx      
                      [check-context?     
                       opt+kws?])     -> identifier? syntax?
  defn-stx : syntax?
  lambda-id-stx : identifier?
  check-context? : boolean? = #t
  opt+kws? : boolean? = #f
procedure
(flatten-begin stx) -> (listof syntax?)
  stx : syntax?
procedure
(parse-define-struct stx orig-stx) -> identifier?
                                      (or/c identifier? false/c)
                                      (listof identifier?)
                                      syntax?
  stx : syntax?
  orig-stx : syntax?
procedure
(build-struct-names  name-id                      
                     field-ids                    
                    [#:constructor-name ctr-name] 
                     omit-sel?                    
                     omit-set?                    
                    [src-stx])                    
 -> (listof identifier?)
  name-id : identifier?
  field-ids : (listof identifier?)
  ctr-name : (or/c identifier? #f) = #f
  omit-sel? : boolean?
  omit-set? : boolean?
  src-stx : (or/c syntax? false/c) = #f
procedure
(build-struct-generation  name-id                      
                          field-ids                    
                         [#:constructor-name ctr-name] 
                          omit-sel?                    
                          omit-set?                    
                         [super-type                   
                          prop-value-list              
                          immutable-k-list])           
 -> (listof identifier?)
  name-id : identifier?
  field-ids : (listof identifier?)
  ctr-name : (or/c identifier? #f) = #f
  omit-sel? : boolean?
  omit-set? : boolean?
  super-type : any/c = #f
  prop-value-list : list? = '(list)
  immutable-k-list : list? = '(list)
procedure
(build-struct-generation*  all-name-ids                 
                           name-id                      
                           field-ids                    
                          [#:constructor-name ctr-name] 
                           omit-sel?                    
                           omit-set?                    
                          [super-type                   
                           prop-value-list              
                           immutable-k-list])           
 -> (listof identifier?)
  all-name-ids : (listof identifier?)
  name-id : identifier?
  field-ids : (listof identifier?)
  ctr-name : (or/c identifier? #f) = #f
  omit-sel? : boolean?
  omit-set? : boolean?
  super-type : any/c = #f
  prop-value-list : list? = '(list)
  immutable-k-list : list? = '(list)
procedure
(build-struct-expand-info  name-id                           
                           field-ids                         
                          [#:omit-constructor? no-ctr?       
                           #:constructor-name ctr-name       
                           #:omit-struct-type? no-type?]     
                           omit-sel?                         
                           omit-set?                         
                           base-name                         
                           base-getters                      
                           base-setters)                 -> any
  name-id : identifier?
  field-ids : (listof identifier?)
  no-ctr? : any/c = #f
  ctr-name : (or/c identifier? #f) = #f
  no-type? : any/c = #f
  omit-sel? : boolean?
  omit-set? : boolean?
  base-name : (or/c identifier? boolean?)
  base-getters : (listof (or/c identifier? false/c))
  base-setters : (listof (or/c identifier? false/c))
procedure
(struct-declaration-info? v) -> boolean?
  v : any/c
procedure
(generate-struct-declaration  orig-stx                  
                              name-id                   
                              super-id-or-false         
                              field-id-list             
                              current-context           
                              make-make-struct-type     
                             [omit-sel?                 
                              omit-set?])           -> syntax?
  orig-stx : syntax?
  name-id : identifier?
  super-id-or-false : (or/c identifier? false/c)
  field-id-list : (listof identifier?)
  current-context : any/c
  make-make-struct-type : procedure?
  omit-sel? : boolean? = #f
  omit-set? : boolean? = #f
procedure
(resolve-path-spec path-spec-stx       
                   source-stx          
                   expr-stx            
                   build-path-stx) -> complete-path?
  path-spec-stx : syntax?
  source-stx : syntax?
  expr-stx : syntax?
  build-path-stx : syntax?
procedure
(transform-template  template-stx                             
                     #:save save-proc                         
                     #:restore-stx restore-proc-stx           
                    [#:leaf-save leaf-save-proc               
                     #:leaf-restore-stx leaf-restore-proc-stx 
                     #:leaf-datum-stx leaf-datum-proc-stx     
                     #:pvar-save pvar-save-proc               
                     #:pvar-restore-stx pvar-restore-stx      
                     #:cons-stx cons-proc-stx                 
                     #:ellipses-end-stx ellipses-end-stx      
                     #:constant-as-leaf? constant-as-leaf?])  
 -> syntax?
  template-stx : syntax?
  save-proc : (syntax? . -> . any/c)
  restore-proc-stx : syntax?
  leaf-save-proc : (syntax? . -> . any/c) = save-proc
  leaf-restore-proc-stx : syntax? = #'(lambda (data stx) stx)
  leaf-datum-proc-stx : syntax? = #'(lambda (v) v)
  pvar-save-proc : (identifier? . -> . any/c) = (lambda (x) #f)
  pvar-restore-stx : syntax? = #'(lambda (d stx) stx)
  cons-proc-stx : syntax? = cons
  ellipses-end-stx : syntax? = #'values
  constant-as-leaf? : boolean? = #f
procedure
(raise-read-error  msg-string                          
                   source                              
                   line                                
                   col                                 
                   pos                                 
                   span                                
                  [#:extra-srclocs extra-srclocs]) -> any
  msg-string : string?
  source : any/c
  line : (or/c number? false/c)
  col : (or/c number? false/c)
  pos : (or/c number? false/c)
  span : (or/c number? false/c)
  extra-srclocs : (listof srcloc?) = '()
procedure
(raise-read-eof-error msg-string     
                      source         
                      line           
                      col            
                      pos            
                      span)      -> any
  msg-string : string?
  source : any/c
  line : (or/c number? false/c)
  col : (or/c number? false/c)
  pos : (or/c number? false/c)
  span : (or/c number? false/c)
syntax
(#%module-begin module-path)
(#%module-begin module-path reader-option ... form ....)
(#%module-begin             reader-option ... form ....)
 
reader-option = #:read        read-expr
              | #:read-syntax read-syntax-expr
              | #:whole-body-readers? whole?-expr
              | #:wrapper1    wrapper1-expr
              | #:wrapper2    wrapper2-expr
              | #:language    lang-expr
              | #:info        info-expr
              | #:language-info language-info-expr
 
  read-expr : (input-port? . -> . any/c)
  read-syntax-expr : (any/c input-port? . -> . any/c)
  whole-expr : any/c
  wrapper1-expr : (or/c ((-> any/c) . -> . any/c)
                        ((-> any/c) boolean? . -> . any/c))
  wrapper2-expr : (or/c (input-port? (input-port? . -> . any/c)
                         . -> . any/c)
                        (input-port? (input-port? . -> . any/c)
                         boolean? . -> . any/c))
  info-expr : (symbol? any/c (symbol? any/c . -> . any/c) . -> . any/c)
  module-info-expr : (or/c (vector/c module-path? symbol? any/c) #f)
  lang-expr : (or/c module-path?
                    (and/c syntax? (compose module-path? syntax->datum))
                    procedure?)
procedure
(make-meta-reader  self-sym               
                   path-desc-str          
                  [#:read-spec read-spec] 
                   module-path-parser     
                   convert-read           
                   convert-read-syntax    
                   convert-get-info)      
 -> procedure? procedure? procedure?
  self-sym : symbol?
  path-desc-str : string?
  read-spec : (input-port? . -> . any/c) = (lambda (in) ....)
  module-path-parser : (any/c . -> . (or/c module-path? #f
                                           (vectorof module-path?)))
  convert-read : (procedure? . -> . procedure?)
  convert-read-syntax : (procedure? . -> . procedure?)
  convert-get-info : (procedure? . -> . procedure?)
procedure
(wrap-read-all mod-path         
               in               
               read             
               mod-path-stx     
               src              
               line             
               col              
               pos)         -> any/c
  mod-path : module-path?
  in : input-port?
  read : (input-port . -> . any/c)
  mod-path-stx : syntax?
  src : (or/c syntax? #f)
  line : number?
  col : number?
  pos : number?
procedure
(split-for-body stx body-stxes) -> syntax?
  stx : syntax?
  body-stxes : syntax?
procedure
(source-location? x) -> boolean?
  x : any/c
procedure
(source-location-list? x) -> boolean?
  x : any/c
procedure
(source-location-vector? x) -> boolean?
  x : any/c
procedure
(check-source-location! name x) -> void?
  name : symbol?
  x : any/c
procedure
(build-source-location loc ...) -> srcloc?
  loc : source-location?
procedure
(build-source-location-list loc ...) -> source-location-list?
  loc : source-location?
procedure
(build-source-location-vector loc ...) -> source-location-vector?
  loc : source-location?
procedure
(build-source-location-syntax loc ...) -> syntax?
  loc : source-location?
procedure
(source-location-known? loc) -> boolean?
  loc : source-location?
procedure
(source-location-source loc) -> any/c
  loc : source-location?
procedure
(source-location-line loc)
 -> (or/c orexact-positive-integer? #f)
  loc : source-location?
procedure
(source-location-column loc)
 -> (or/c exact-nonnegative-integer? #f)
  loc : source-location?
procedure
(source-location-position loc)
 -> (or/c exact-positive-integer? #f)
  loc : source-location?
procedure
(source-location-span loc)
 -> (or/c exact-nonnegative-integer? #f)
  loc : source-location?
procedure
(source-location-end loc)
 -> (or/c exact-nonnegative-integer? #f)
  loc : source-location?
procedure
(update-source-location loc                     
                        #:source source         
                        #:line line             
                        #:column column         
                        #:position position     
                        #:span span)        -> source-location?
  loc : source-location?
  source : any/c
  line : (or/c exact-nonnegative-integer? #f)
  column : (or/c exact-positive-integer? #f)
  position : (or/c exact-nonnegative-integer? #f)
  span : (or/c exact-positive-integer? #f)
procedure
(source-location->string loc) -> string?
  loc : source-location?
procedure
(source-location->prefix loc) -> string?
  loc : source-location?
syntax
(quote-srcloc)
(quote-srcloc form)
(quote-srcloc form #:module-source expr)
syntax
(quote-source-file)
(quote-source-file form)
syntax
(quote-line-number)
(quote-line-number form)
syntax
(quote-column-number)
(quote-column-number form)
syntax
(quote-character-position)
(quote-character-position form)
syntax
(quote-character-span)
(quote-character-span form)
syntax
(quote-srcloc-string)
(quote-srcloc-string form)
syntax
(quote-srcloc-prefix)
(quote-srcloc-prefix form)
syntax
(quote-module-name submod-path-element ...)
syntax
(quote-module-path submod-path-element ...)
syntax
(quote-syntax/keep-srcloc datum)
procedure
(expand-syntax-top-level-with-compile-time-evals stx) -> syntax?
  stx : syntax?
procedure
(expand-top-level-with-compile-time-evals stx) -> syntax?
  stx : syntax?
procedure
(expand-syntax-top-level-with-compile-time-evals/flatten stx)
 -> (listof syntax?)
  stx : syntax?
procedure
(eval-compile-time-part-of-top-level stx) -> void?
  stx : syntax?
procedure
(eval-compile-time-part-of-top-level/compile stx)
 -> (listof compiled-expression?)
  stx : syntax?
syntax
(provide-and-document doc-label-id doc-row ...)
 
doc-row = (section-string (name type-datum doc-string ...) ...)
        | (all-from prefix-id module-path doc-label-id)
        | (all-from-except prefix-id module-path doc-label-id id ...)
           
name    = id
        | (local-name-id external-name-id)
procedure
(lookup-documentation module-path-v     
                      label-sym)    -> any
  module-path-v : module-path?
  label-sym : symbol?
