17025
#hash(((def ((lib "syntax/stx.rkt") stx-pair?)) . ((12843 . 3))) ((def ((lib "syntax/id-table.rkt") bound-id-table-map)) . ((17841 . 4))) ((def ((lib "syntax/moddep.rkt") show-import-tree)) . ((31077 . 3))) ((def ((lib "syntax/srcloc.rkt") build-source-location-syntax)) . ((42364 . 3))) ((form ((lib "syntax/parse.rkt") nat)) . ((8399 . 2))) ((form ((lib "syntax/parse/experimental/template.rkt") ?@)) . ((12644 . 2))) ((def ((lib "syntax/id-table.rkt") bound-id-table-iterate-value)) . ((18635 . 5))) ((form ((lib "syntax/datum.rkt") quasidatum)) . ((27302 . 2))) ((def ((lib "syntax/stx.rkt") stx-null?)) . ((12788 . 3))) ((def ((lib "syntax/template.rkt") transform-template)) . ((36644 . 24))) ((form ((lib "syntax/parse.rkt") ~rest)) . ((4696 . 2))) ((def ((lib "syntax/parse/experimental/reflect.rkt") reified-syntax-class?)) . ((10154 . 3))) ((def ((lib "syntax/keyword.rkt") parse-keyword-options/eol)) . ((24272 . 30))) ((form ((lib "syntax/parse/experimental/reflect.rkt") ~reflect)) . ((11120 . 5))) ((form ((lib "syntax/location.rkt") quote-character-span)) . ((44279 . 3))) ((def ((lib "syntax/srcloc.rkt") build-source-location)) . ((42064 . 3))) ((form ((lib "syntax/parse/experimental/template.rkt") template)) . ((12005 . 19))) ((def ((lib "syntax/id-table.rkt") free-id-table-remove!)) . ((14865 . 4))) ((def ((lib "syntax/id-table.rkt") make-immutable-bound-id-table)) . ((16637 . 6))) ((def ((lib "syntax/id-table.rkt") bound-id-table-remove)) . ((17683 . 5))) ((form ((lib "syntax/location.rkt") quote-module-path)) . ((44391 . 2))) ((form ((lib "syntax/parse.rkt") ~commit)) . ((4041 . 2))) ((form ((lib "syntax/parse.rkt") define-syntax-class)) . ((1965 . 23))) ((form ((lib "syntax/parse.rkt") ~optional)) . ((4076 . 2))) ((def ((lib "syntax/keyword.rkt") check-stx-listof)) . ((26770 . 5))) ((def ((lib "syntax/modread.rkt") with-module-reading-parameterization)) . ((27387 . 3))) ((def ((lib "syntax/srcloc.rkt") source-location?)) . ((41774 . 3))) ((def ((lib "syntax/modresolve.rkt") resolve-module-path-index)) . ((30164 . 7))) ((form ((lib "syntax/parse/experimental/reflect.rkt") ~splicing-reflect)) . ((11258 . 2))) ((def ((lib "syntax/boundmap.rkt") free-identifier-mapping?)) . ((20365 . 3))) ((def ((lib "syntax/id-table.rkt") free-id-table-for-each)) . ((15262 . 4))) ((form ((lib "syntax/parse.rkt") ~literal)) . ((4380 . 2))) ((form ((lib "syntax/parse.rkt") ~delimit-cut)) . ((4056 . 2))) ((form ((lib "syntax/parse.rkt") define/syntax-parse)) . ((1858 . 4))) ((def ((lib "syntax/id-table.rkt") bound-id-table-set!)) . ((17276 . 5))) ((form ((lib "syntax/parse.rkt") exact-nonnegative-integer)) . ((8326 . 2))) ((form ((lib "syntax/parse.rkt") expr)) . ((8193 . 2))) ((form ((lib "syntax/parse.rkt") pattern)) . ((3423 . 2))) ((def ((lib "syntax/boundmap.rkt") module-identifier-mapping-put!)) . ((21803 . 7))) ((def ((lib "syntax/srcloc.rkt") source-location-line)) . ((42620 . 4))) ((def ((lib "syntax/strip-context.rkt") replace-context)) . ((22775 . 4))) ((def ((lib "syntax/srcloc.rkt") source-location->string)) . ((43796 . 3))) ((form ((lib "syntax/datum.rkt") with-datum)) . ((27237 . 3))) ((form ((lib "syntax/parse.rkt") ~datum)) . ((4418 . 2))) ((form ((lib "syntax/parse.rkt") ~do)) . ((7296 . 2))) ((def ((lib "syntax/id-table.rkt") free-id-table-map)) . ((15136 . 4))) ((def ((lib "syntax/struct.rkt") build-struct-generation*)) . ((33452 . 20))) ((def ((lib "syntax/stx.rkt") stx-map)) . ((13139 . 4))) ((def ((lib "syntax/id-table.rkt") bound-id-table-iterate-next)) . ((18306 . 5))) ((def ((lib "syntax/keyword.rkt") options-select)) . ((25965 . 4))) ((def ((lib "syntax/free-vars.rkt") free-vars)) . ((22577 . 4))) ((form ((lib "syntax/parse.rkt") attribute)) . ((3961 . 2))) ((def ((lib "syntax/toplevel.rkt") expand-syntax-top-level-with-compile-time-evals)) . ((44485 . 3))) ((form ((lib "syntax/parse.rkt") define-conventions)) . ((7888 . 10))) ((form ((lib "syntax/parse/debug.rkt") syntax-class-attributes)) . ((9320 . 2))) ((form ((lib "syntax/parse.rkt") identifier)) . ((8205 . 2))) ((form ((lib "syntax/parse/experimental/splicing.rkt") define-primitive-splicing-syntax-class)) . ((11331 . 8))) ((form ((lib "syntax/quote.rkt") quote-syntax/keep-srcloc)) . ((44444 . 2))) ((def ((lib "syntax/boundmap.rkt") bound-identifier-mapping?)) . ((19198 . 3))) ((def ((lib "syntax/boundmap.rkt") bound-identifier-mapping-for-each)) . ((19868 . 5))) ((def ((lib "syntax/srcloc.rkt") source-location-list?)) . ((41836 . 3))) ((def ((lib "syntax/readerr.rkt") raise-read-error)) . ((37964 . 13))) ((form ((lib "syntax/parse.rkt") ~and)) . ((4001 . 2))) ((def ((lib "syntax/boundmap.rkt") module-identifier-mapping?)) . ((21377 . 3))) ((def ((lib "syntax/boundmap.rkt") module-identifier-mapping-map)) . ((22281 . 5))) ((def ((lib "syntax/modcode.rkt") exn:get-module-code)) . ((29726 . 4))) ((form ((lib "syntax/datum.rkt") undatum)) . ((27332 . 2))) ((form ((lib "syntax/parse/debug.rkt") syntax-class-arity)) . ((9370 . 2))) ((form ((lib "syntax/parse.rkt") integer)) . ((8290 . 2))) ((def ((lib "syntax/modcode.rkt") moddep-current-open-input-file)) . ((29542 . 5))) ((def ((lib "syntax/srcloc.rkt") update-source-location)) . ((43181 . 13))) ((def ((lib "syntax/boundmap.rkt") bound-identifier-mapping-get)) . ((19269 . 8))) ((def ((lib "syntax/srcloc.rkt") source-location-known?)) . ((42457 . 3))) ((def ((lib "syntax/id-table.rkt") make-free-id-table)) . ((13720 . 5))) ((form ((lib "syntax/parse.rkt") ~or)) . ((4013 . 2))) ((def ((lib "syntax/id-table.rkt") bound-id-table-set)) . ((17410 . 5))) ((def ((lib "syntax/boundmap.rkt") free-identifier-mapping-for-each)) . ((20929 . 5))) ((form ((lib "syntax/datum.rkt") datum)) . ((27212 . 2))) ((def ((lib "syntax/id-table.rkt") free-id-table-iterate-key)) . ((15726 . 4))) ((form ((lib "syntax/parse.rkt") keyword)) . ((8261 . 2))) ((form ((lib "syntax/parse.rkt") ~var)) . ((3989 . 2))) ((def ((lib "syntax/id-table.rkt") bound-id-table?)) . ((16888 . 3))) ((def ((lib "syntax/srcloc.rkt") source-location->prefix)) . ((43879 . 3))) ((def ((lib "syntax/modread.rkt") check-module-form)) . ((27476 . 8))) ((form ((lib "syntax/datum.rkt") undatum-splicing)) . ((27355 . 2))) ((def ((lib "syntax/modcollapse.rkt") collapse-module-path)) . ((30495 . 7))) ((form ((lib "syntax/parse.rkt") number)) . ((8276 . 2))) ((def ((lib "syntax/keyword.rkt") options-select-row)) . ((26080 . 7))) ((form ((lib "syntax/parse.rkt") literal-set->predicate)) . ((7845 . 2))) ((def ((lib "syntax/name.rkt") syntax-local-infer-name)) . ((31167 . 3))) ((form ((lib "syntax/parse.rkt") ~between)) . ((6476 . 9))) ((form ((lib "syntax/parse/debug.rkt") debug-parse)) . ((9556 . 4))) ((def ((lib "syntax/id-table.rkt") bound-id-table-iterate-key)) . ((18496 . 4))) ((def ((lib "syntax/flatten-begin.rkt") flatten-begin)) . ((31719 . 3))) ((form ((lib "syntax/kerncase.rkt") kernel-syntax-case)) . ((13349 . 2))) ((form ((lib "syntax/kerncase.rkt") kernel-syntax-case*/phase)) . ((13564 . 3))) ((def ((lib "syntax/struct.rkt") build-struct-generation)) . ((32655 . 18))) ((form ((lib "syntax/docprovide.rkt") provide-and-document)) . ((44993 . 9))) ((def ((lib "syntax/struct.rkt") parse-define-struct)) . ((31793 . 7))) ((def ((lib "syntax/id-table.rkt") immutable-bound-id-table?)) . ((17018 . 3))) ((def ((lib "syntax/boundmap.rkt") free-identifier-mapping-get)) . ((20435 . 8))) ((form ((lib "syntax/parse.rkt") kernel-literals)) . ((9297 . 2))) ((def ((lib "syntax/stx.rkt") stx-car)) . ((13035 . 3))) ((form ((lib "syntax/parse.rkt") id)) . ((8389 . 2))) ((def ((lib "syntax/parse/experimental/reflect.rkt") reified-syntax-class-curry)) . ((10776 . 8))) ((form ((lib "syntax/parse.rkt") ~seq)) . ((5390 . 2))) ((form ((lib "syntax/parse/experimental/reflect.rkt") reify-syntax-class)) . ((10109 . 2))) ((form ((lib "syntax/datum.rkt") datum-case)) . ((27145 . 3))) ((def ((lib "syntax/srcloc.rkt") source-location-source)) . ((42540 . 3))) ((def ((lib "syntax/id-table.rkt") free-id-table-set)) . ((14713 . 5))) ((def ((lib "syntax/struct.rkt") build-struct-expand-info)) . ((34360 . 21))) ((form ((lib "syntax/parse.rkt") str)) . ((8238 . 2))) ((def ((lib "syntax/id-table.rkt") bound-id-table-for-each)) . ((17969 . 4))) ((def ((lib "syntax/id-table.rkt") make-bound-id-table)) . ((16404 . 5))) ((def ((lib "syntax/srcloc.rkt") source-location-column)) . ((42731 . 4))) ((def ((lib "syntax/id-table.rkt") free-id-table-set!)) . ((14581 . 5))) ((def ((lib "syntax/toplevel.rkt") expand-top-level-with-compile-time-evals)) . ((44583 . 3))) ((form ((lib "syntax/location.rkt") quote-column-number)) . ((44155 . 3))) ((form ((lib "syntax/parse.rkt") syntax-parse)) . ((104 . 25))) ((form ((lib "syntax/location.rkt") quote-character-position)) . ((44212 . 3))) ((def ((lib "syntax/context.rkt") generate-expand-context)) . ((31319 . 2))) ((form ((lib "syntax/parse.rkt") boolean)) . ((8223 . 2))) ((form ((lib "syntax/parse.rkt") ~parse)) . ((7212 . 4))) ((def ((lib "syntax/modcode.rkt") get-module-code)) . ((27764 . 33))) ((def ((lib "syntax/parse/experimental/reflect.rkt") reified-syntax-class-keywords)) . ((10614 . 4))) ((def ((lib "syntax/modcollapse.rkt") collapse-module-path-index)) . ((30775 . 7))) ((def ((lib "syntax/srcloc.rkt") source-location-end)) . ((43070 . 4))) ((form ((lib "syntax/parse/experimental/provide.rkt") provide-syntax-class/contract)) . ((9632 . 12))) ((def ((lib "syntax/stx.rkt") stx-cdr)) . ((13087 . 3))) ((form ((lib "syntax/parse/experimental/eh.rkt") define-eh-alternative-set)) . ((11609 . 4))) ((form ((lib "syntax/parse/experimental/template.rkt") ??)) . ((12634 . 2))) ((form ((lib "syntax/parse.rkt") syntax-parser)) . ((1802 . 2))) ((def ((lib "syntax/struct.rkt") generate-struct-declaration)) . ((35519 . 17))) ((def ((lib "syntax/id-table.rkt") free-id-table-iterate-value)) . ((15859 . 5))) ((form ((lib "syntax/parse.rkt") ~not)) . ((4600 . 2))) ((form ((lib "syntax/parse.rkt") ~!)) . ((6771 . 2))) ((form ((lib "syntax/parse/experimental/eh.rkt") ~eh-var)) . ((11712 . 2))) ((def ((lib "syntax/srcloc.rkt") source-location-vector?)) . ((41903 . 3))) ((def ((lib "syntax/modcode.rkt") exn:get-module-code-path)) . ((29726 . 4))) ((def ((lib "syntax/readerr.rkt") raise-read-eof-error)) . ((38411 . 13))) ((def ((lib "syntax/id-table.rkt") free-id-table-remove)) . ((14981 . 5))) ((def ((lib "syntax/boundmap.rkt") free-identifier-mapping-map)) . ((21137 . 4))) ((def ((lib "syntax/id-table.rkt") bound-id-table-iterate-first)) . ((18204 . 3))) ((def ((lib "syntax/srcloc.rkt") source-location-position)) . ((42845 . 4))) ((form ((lib "syntax/parse.rkt") define-splicing-syntax-class)) . ((3224 . 5))) ((form ((lib "syntax/kerncase.rkt") kernel-syntax-case/phase)) . ((13495 . 2))) ((def ((lib "syntax/modcode.rkt") exn:get-module-code?)) . ((29726 . 4))) ((form ((lib "syntax/parse.rkt") ~bind)) . ((6775 . 5))) ((form ((lib "syntax/location.rkt") quote-module-name)) . ((44338 . 2))) ((def ((lib "syntax/keyword.rkt") check-identifier)) . ((26548 . 4))) ((def ((lib "syntax/keyword.rkt") check-stx-boolean)) . ((27035 . 4))) ((def ((lib "syntax/parse.rkt") static)) . ((8410 . 4))) ((def ((lib "syntax/module-reader.rkt") make-meta-reader)) . ((40301 . 17))) ((def ((lib "syntax/toplevel.rkt") eval-compile-time-part-of-top-level)) . ((44791 . 3))) ((def ((lib "syntax/id-table.rkt") immutable-free-id-table?)) . ((14326 . 3))) ((form ((lib "syntax/parse.rkt") char)) . ((8249 . 2))) ((def ((lib "syntax/kerncase.rkt") kernel-form-identifier-list)) . ((13653 . 2))) ((def ((lib "syntax/id-table.rkt") bound-id-table-count)) . ((18102 . 3))) ((def ((lib "syntax/struct.rkt") struct-declaration-info?)) . ((35449 . 3))) ((form ((lib "syntax/parse.rkt") ~fail)) . ((6893 . 11))) ((def ((lib "syntax/stx.rkt") stx-list?)) . ((12898 . 3))) ((def ((lib "syntax/id-table.rkt") make-immutable-free-id-table)) . ((13950 . 6))) ((def ((lib "syntax/define.rkt") normalize-definition)) . ((31366 . 9))) ((def ((lib "syntax/boundmap.rkt") make-bound-identifier-mapping)) . ((19125 . 2))) ((def ((lib "syntax/context.rkt") build-expand-context)) . ((31239 . 3))) ((def ((lib "syntax/id-table.rkt") free-id-table-iterate-first)) . ((15493 . 3))) ((def ((lib "syntax/srcloc.rkt") build-source-location-list)) . ((42150 . 3))) ((def ((lib "syntax/boundmap.rkt") module-identifier-mapping-get)) . ((21449 . 8))) ((form ((lib "syntax/location.rkt") quote-srcloc)) . ((43962 . 4))) ((def ((lib "syntax/boundmap.rkt") make-module-identifier-mapping)) . ((21302 . 2))) ((def ((lib "syntax/boundmap.rkt") module-identifier-mapping-for-each)) . ((22061 . 5))) ((def ((lib "syntax/struct.rkt") build-struct-names)) . ((32075 . 14))) ((def ((lib "syntax/parse.rkt") expr/c)) . ((8555 . 15))) ((def ((lib "syntax/id-table.rkt") free-id-table?)) . ((14198 . 3))) ((form ((lib "syntax/parse.rkt") exact-positive-integer)) . ((8359 . 2))) ((form ((lib "syntax/parse.rkt") ~once)) . ((5872 . 10))) ((form ((lib "syntax/parse.rkt") ~peek-not)) . ((5813 . 2))) ((def ((lib "syntax/strip-context.rkt") strip-context)) . ((22711 . 3))) ((def ((lib "syntax/stx.rkt") module-or-top-identifier=?)) . ((13234 . 4))) ((def ((lib "syntax/toplevel.rkt") expand-syntax-top-level-with-compile-time-evals/flatten)) . ((44674 . 4))) ((def ((lib "syntax/parse/experimental/reflect.rkt") reified-syntax-class-attributes)) . ((10297 . 4))) ((def ((lib "syntax/docprovide.rkt") lookup-documentation)) . ((45344 . 5))) ((def ((lib "syntax/parse/experimental/reflect.rkt") reified-splicing-syntax-class?)) . ((10221 . 3))) ((form ((lib "syntax/location.rkt") quote-source-file)) . ((44049 . 3))) ((def ((lib "syntax/boundmap.rkt") bound-identifier-mapping-map)) . ((20081 . 5))) ((def ((lib "syntax/to-string.rkt") syntax->string)) . ((22500 . 3))) ((def ((lib "syntax/id-table.rkt") mutable-bound-id-table?)) . ((16949 . 3))) ((def ((lib "syntax/id-table.rkt") id-table-iter?)) . ((16038 . 3))) ((form ((lib "syntax/kerncase.rkt") kernel-syntax-case*)) . ((13413 . 2))) ((def ((lib "syntax/id-table.rkt") bound-id-table/c)) . ((18820 . 7))) ((form ((lib "syntax/parse/debug.rkt") syntax-class-parse)) . ((9463 . 4))) ((form ((lib "syntax/parse/experimental/specialize.rkt") define-syntax-class/specialize)) . ((11752 . 8))) ((def ((lib "syntax/toplevel.rkt") eval-compile-time-part-of-top-level/compile)) . ((44875 . 4))) ((def ((lib "syntax/id-table.rkt") free-id-table/c)) . ((16098 . 7))) ((def ((lib "syntax/boundmap.rkt") bound-identifier-mapping-put!)) . ((19618 . 7))) ((def ((lib "syntax/modresolve.rkt") resolve-module-path)) . ((29861 . 7))) ((def ((lib "syntax/keyword.rkt") check-stx-string)) . ((26926 . 4))) ((def ((lib "syntax/id-table.rkt") free-id-table-ref)) . ((14396 . 5))) ((def ((lib "syntax/srcloc.rkt") build-source-location-vector)) . ((42255 . 3))) ((form ((lib "syntax/parse/define.rkt") define-simple-macro)) . ((7322 . 3))) ((def ((lib "syntax/keyword.rkt") options-select-value)) . ((26311 . 7))) ((def ((lib "syntax/for-body.rkt") split-for-body)) . ((41670 . 4))) ((def ((lib "syntax/boundmap.rkt") make-free-identifier-mapping)) . ((20294 . 2))) ((def ((lib "syntax/srcloc.rkt") check-source-location!)) . ((41972 . 4))) ((form ((lib "syntax/parse/debug.rkt") syntax-class-keywords)) . ((9415 . 2))) ((def ((lib "syntax/id-table.rkt") mutable-free-id-table?)) . ((14258 . 3))) ((def ((lib "syntax/keyword.rkt") parse-keyword-options)) . ((22886 . 25))) ((def ((lib "syntax/keyword.rkt") check-expression)) . ((26661 . 4))) ((def ((lib "syntax/srcloc.rkt") source-location-span)) . ((42958 . 4))) ((form ((lib "syntax/parse.rkt") ~describe)) . ((4024 . 2))) ((def ((lib "syntax/id-table.rkt") bound-id-table-ref)) . ((17089 . 5))) ((def ((lib "syntax/module-reader.rkt") wrap-read-all)) . ((41131 . 17))) ((form ((lib "syntax/parse.rkt") define-literal-set)) . ((7411 . 14))) ((form ((lib "syntax/parse.rkt") exact-integer)) . ((8305 . 2))) ((form ((lib "syntax/location.rkt") quote-line-number)) . ((44102 . 3))) ((def ((lib "syntax/id-table.rkt") bound-id-table-remove!)) . ((17565 . 4))) ((def ((lib "syntax/modcode.rkt") make-exn:get-module-code)) . ((29726 . 4))) ((form ((lib "syntax/parse/experimental/template.rkt") define-template-metafunction)) . ((12654 . 3))) ((def ((lib "syntax/id-table.rkt") free-id-table-iterate-next)) . ((15589 . 4))) ((def ((lib "syntax/path-spec.rkt") resolve-path-spec)) . ((36327 . 9))) ((form ((lib "syntax/parse/experimental/provide.rkt") syntax-class/c)) . ((10087 . 2))) ((form ((lib "syntax/parse.rkt") ...+)) . ((4519 . 2))) ((def ((lib "syntax/stx.rkt") stx->list)) . ((12953 . 3))) ((def ((lib "syntax/boundmap.rkt") free-identifier-mapping-put!)) . ((20779 . 5))) ((def ((lib "syntax/modcode.rkt") struct:exn:get-module-code)) . ((29726 . 4))) ((form ((lib "syntax/parse.rkt") ~peek)) . ((5793 . 2))) ((form ((lib "syntax/module-reader.rkt") #%module-begin)) . ((38882 . 28))) ((def ((lib "syntax/parse/experimental/reflect.rkt") reified-syntax-class-arity)) . ((10478 . 3))) ((def ((lib "syntax/id-table.rkt") free-id-table-count)) . ((15393 . 3))))

(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 ...)
                   | #: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)
                      
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)

#: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 ...)
                 | #: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)

#: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)

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 (literal ...))
 
literal       = literal-id
              | (pattern-id literal-id)
                 
maybe-phase   = 
              | #:for-template
              | #:for-syntax
              | #:for-label
              | #:phase phase-level
                 
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)      -> 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)
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-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?
