3.99.0.13: generalize require and provide to work with arbitrary phases

svn: r8742
This commit is contained in:
Matthew Flatt 2008-02-20 14:17:37 +00:00
parent 68ba174c67
commit ba63bd6f95
36 changed files with 4170 additions and 3281 deletions

View File

@ -25,11 +25,11 @@
(x (apply max x))))
(define (get-deps code path)
(let-values ([(imports fs-imports ft-imports fl-imports) (module-compiled-imports code)])
(let-values ([(imports) (apply append (map cdr (module-compiled-imports code)))])
(map path->bytes
(let ([l (map (lambda (x)
(resolve-module-path-index x path))
(append imports fs-imports ft-imports fl-imports))])
imports)])
;; Filter symbols:
(let loop ([l l])
(cond

View File

@ -133,7 +133,6 @@
"private/match/match-error.ss"
"private/match/test-no-order.ss")
(define-syntax match-definer
(syntax-rules ()
[(match-definer name clauses ...)

View File

@ -9,7 +9,7 @@
(provide
;; PLT Scheme pre-requisites:
(rename-out [datum #%datum])
#%app
#%app #%top #%top-interaction
;; 11.2
(rename-out [r5rs:define define]

View File

@ -38,13 +38,13 @@
(if for-stx
(with-syntax ([for for-stx])
(syntax/loc stx
(#%require (for elem ...))))
(#%require (for-meta for (just-meta 0 elem ...)))))
(syntax/loc stx
(#%require elem ...)))])))])
(values (mk #f)
(mk #'for-syntax)
(mk #'for-template)
(mk #'for-label))))
(mk #'1)
(mk #'-1)
(mk #'#f))))
(define-syntaxes (provide provide-for-syntax provide-for-label)
(let ([mk

View File

@ -8,9 +8,9 @@
"struct-info.ss"))
(#%provide lib file planet
for-syntax for-template for-label
for-syntax for-template for-label for-meta
require
only-in rename-in prefix-in except-in
only-in rename-in prefix-in except-in only-meta-in
provide
all-defined-out all-from-out
rename-out except-out prefix-out struct-out
@ -31,7 +31,7 @@
(define-for-syntax (xlate-path stx)
(if (pair? (syntax-e stx))
(let ([kw
;; free-identifier=? identifers are not necessarily module=?
;; symbolic-identifier=? identifers are not necessarily free-identifier=?
(syntax-case stx (lib planet file quote)
[(quote . _) 'quote]
[(lib . _) 'lib]
@ -57,26 +57,27 @@
(define-syntaxes (lib file planet)
(let ([t (lambda (stx)
(check-lib-form stx)
(let*-values ([(mod-path) (syntax->datum stx)]
[(names et-names lt-names) (syntax-local-module-exports stx)])
(let* ([mod-path (syntax->datum stx)]
[namess (syntax-local-module-exports stx)])
(values
(apply
append
(map (lambda (names mode)
(map (lambda (name)
(make-import (datum->syntax
stx
name
stx)
name
mod-path
mode
'run
stx))
names))
(list names et-names lt-names)
(list 'run 'syntax 'label)))
(list (make-import-source stx 'run)))))])
(map (lambda (names)
(let ([mode (car names)])
(map (lambda (name)
(make-import (datum->syntax
stx
name
stx)
name
mod-path
mode
0
mode
stx))
(cdr names))))
namess))
(list (make-import-source stx 0)))))])
(let ([t2
(let-values ([(s: mk s? s-ref s-set!)
(make-struct-type 'req+prov
@ -96,6 +97,9 @@
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; for-syntax, for-template, for-label
(define-for-syntax (phase+ a b)
(and a b (+ a b)))
(define-for-syntax (shift-subs stx mode)
(syntax-case stx ()
[(_ in ...)
@ -110,18 +114,17 @@
(make-import (import-local-id import)
(import-src-sym import)
(import-src-mod-path import)
mode
mode
(phase+ mode (import-mode import))
(phase+ mode (import-req-mode import))
(import-orig-mode import)
(import-orig-stx import)))
(filter (lambda (import)
(eq? (import-mode import) 'run))
imports))
imports)
(map (lambda (source)
(make-import-source (import-source-mod-path-stx source)
mode))
(filter (lambda (source)
(eq? (import-source-mode source) 'run))
sources))))]))
(make-import-source
(import-source-mod-path-stx source)
(phase+ mode
(import-source-mode source))))
sources)))]))
(define-for-syntax (make-require+provide-transformer r p)
(let-values ([(s: mk s? s-ref s-set!)
@ -149,21 +152,50 @@
(define-syntax for-syntax
(make-require+provide-transformer
(lambda (stx)
(shift-subs stx 'syntax))
(shift-subs stx 1))
(lambda (stx modes)
(exports-at-phase stx modes 'syntax))))
(exports-at-phase stx modes 1))))
(define-syntax for-template
(make-require-transformer
(make-require+provide-transformer
(lambda (stx)
(shift-subs stx 'template))))
(shift-subs stx -1))
(lambda (stx modes)
(exports-at-phase stx modes -1))))
(define-syntax for-label
(make-require+provide-transformer
(lambda (stx)
(shift-subs stx 'label))
(shift-subs stx #f))
(lambda (stx modes)
(exports-at-phase stx modes 'label))))
(exports-at-phase stx modes #f))))
(define-syntax for-meta
(make-require+provide-transformer
(lambda (stx)
(syntax-case stx ()
[(_ mode in ...)
(let ([base-mode (syntax-e #'mode)])
(unless (or (not base-mode)
(exact-integer? base-mode))
(raise-syntax-error
#f
"phase level must be #f or an exact integer"
stx
#'mode))
(shift-subs #'(for-meta in ...) base-mode))]))
(lambda (stx modes)
(syntax-case stx ()
[(_ mode out ...)
(let ([base-mode (syntax-e #'mode)])
(unless (or (not base-mode)
(exact-integer? base-mode))
(raise-syntax-error
#f
"phase level must be #f or an exact integer"
stx
#'mode))
(exports-at-phase #'(for-meta out ...) modes base-mode))]))))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; require
@ -176,11 +208,8 @@
(letrec ([mode-wrap
(lambda (mode base)
(cond
[(eq? mode 'run) base]
[(eq? mode 'syntax) #`(for-syntax #,base)]
[(eq? mode 'template) #`(for-template #,base)]
[(eq? mode 'label) #`(for-label #,base)]
[else (error "huh?" mode)]))]
[(eq? mode 0) base]
[else #`(for-meta #,mode #,base)]))]
[simple-path? (lambda (p)
(syntax-case p (lib quote)
[(lib . _)
@ -249,27 +278,17 @@
;; TODO: collapse back to simple cases when possible
(append
(map (lambda (import)
(mode-wrap (if (eq? base-mode 'run)
(import-req-mode import)
base-mode)
#`(rename #,(import-src-mod-path import)
#,(import-local-id import)
#,(import-src-sym import))))
(if (eq? base-mode 'run)
imports
(filter (lambda (import)
(eq? (import-mode import) 'run))
imports)))
#`(just-meta
#,(import-orig-mode import)
#,(mode-wrap (phase+ base-mode (import-req-mode import))
#`(rename #,(import-src-mod-path import)
#,(import-local-id import)
#,(import-src-sym import)))))
imports)
(map (lambda (src)
(mode-wrap (if (eq? base-mode 'run)
(import-source-mode src)
base-mode)
(mode-wrap (phase+ base-mode (import-source-mode src))
#`(only #,(import-source-mod-path-stx src))))
(if (eq? base-mode 'run)
sources
(filter (lambda (source)
(eq? (import-source-mode source) 'run))
sources)))))]))]
sources)))]))]
[transform-one
(lambda (in)
;; Recognize `for-syntax', etc. for simple cases:
@ -283,13 +302,13 @@
(transform-simple in
(cond
[(free-identifier=? #'for-something #'for-syntax)
'syntax]
1]
[(free-identifier=? #'for-something #'for-template)
'template]
-1]
[(free-identifier=? #'for-something #'for-label)
'label])))
#f])))
(syntax->list #'(elem ...))))]
[_ (transform-simple in 'run)]))])
[_ (transform-simple in 0 #| run phase |#)]))])
(syntax-case stx ()
[(_ in ...)
(with-syntax ([(new-in ...)
@ -339,26 +358,32 @@
stx
dup-id)))
(values
(map (lambda (new-id orig-id)
(or (ormap (lambda (import)
(and (free-identifier=? orig-id
(import-local-id import))
(if (eq? new-id orig-id)
import
(make-import new-id
(import-src-sym import)
(import-src-mod-path import)
(import-mode import)
(import-req-mode import)
new-id))))
imports)
(raise-syntax-error
#f
(format "identifier `~a' not included in nested require spec"
(syntax-e orig-id))
stx
#'in)))
new-ids orig-ids)
(apply
append
(map (lambda (new-id orig-id)
(let ([l (filter
values
(map (lambda (import)
(and (free-identifier=? orig-id (import-local-id import)) ; don't compare at mode
(if (eq? new-id orig-id)
import
(make-import new-id
(import-src-sym import)
(import-src-mod-path import)
(import-mode import)
(import-req-mode import)
(import-orig-mode import)
new-id))))
imports))])
(if (null? l)
(raise-syntax-error
#f
(format "identifier `~a' not included in nested require spec"
(syntax-e orig-id))
stx
#'in)
l)))
new-ids orig-ids))
sources)))]))))
(define-syntax except-in
@ -402,6 +427,31 @@
imports)
sources))]))))
(define-syntax only-meta-in
(make-require-transformer
(lambda (stx)
(syntax-case stx ()
[(_ mode in ...)
(let ([base-mode (syntax-e #'mode)])
(unless (or (not base-mode)
(exact-integer? base-mode))
(raise-syntax-error
#f
"phase level must be #f or an exact integer"
stx
#'mode))
(let ([subs
(map (lambda (in)
(let-values ([(imports sources) (expand-import in)])
(cons
(filter (lambda (import)
(equal? (import-mode import) base-mode))
imports)
sources)))
(syntax->list #'(in ...)))])
(values (apply append (map car subs))
(apply append (map cdr subs)))))]))))
(define-syntax rename-in
(make-require-transformer
(lambda (stx)
@ -444,6 +494,7 @@
(import-src-mod-path import)
(import-mode import)
(import-req-mode import)
(import-orig-mode import)
bind-id)
import)))
orig-ids bind-ids)])
@ -500,6 +551,7 @@
(import-src-mod-path import)
(import-mode import)
(import-req-mode import)
(import-orig-mode import)
(import-orig-stx import))))
imports)
sources))]))))
@ -538,9 +590,8 @@
[mode (export-mode export)])
(let ([phased
(cond
[(eq? mode 'run) base]
[(eq? mode 'syntax) #`(for-syntax #,base)]
[(eq? mode 'label) #`(for-label #,base)])])
[(eq? mode 0) base]
[else #`(for-meta #,mode #,base)])])
(if (export-protect? export)
#`(protect #,phased)
phased))))
@ -569,16 +620,16 @@
stx
(syntax-e id)))))])
(append
(if (memq 'syntax modes)
(if (memq 1 modes)
(map (lambda (id)
(make-export id (syntax-e id) 'syntax #f stx))
(make-export id (syntax-e id) 1 #f stx))
(filter (same-ctx? free-transformer-identifier=?)
stx-ids))
null)
(if (or (null? modes)
(memq 'run modes))
(memq 0 modes))
(map (lambda (id)
(make-export id (syntax-e id) 'run #f stx))
(make-export id (syntax-e id) 0 #f stx))
(filter (same-ctx? free-identifier=?)
ids))
null)))]))))
@ -598,61 +649,42 @@
"bad module path"
stx
mp))
(let-values ([(ids stx-ids label-ids)
(syntax-local-module-required-identifiers (syntax->datum mp)
(or (null? modes)
(memq 'run modes))
(memq 'syntax modes)
(memq 'label modes))]
[(ok-context?) (lambda (id id=?)
(id=? id
(datum->syntax mp (syntax-e id))))])
(when (or (null? modes)
(memq 'run modes))
(unless ids
(raise-syntax-error
#f
"no corresponding require"
stx
mp)))
(when (memq 'syntax modes)
(unless stx-ids
(raise-syntax-error
#f
"no corresponding for-syntax require"
stx
mp)))
(when (memq 'label modes)
(unless label-ids
(raise-syntax-error
#f
"no corresponding for-label require"
stx
mp)))
(let ([idss
(apply
append
(map (lambda (mode)
(let ([r (syntax-local-module-required-identifiers (syntax->datum mp)
mode)])
(or r
(raise-syntax-error
#f
(format "no corresponding require~a"
(cond
[(eq? mode 0) ""]
[(not mode)
" at the label phase level"]
[else
(format " at phase level ~a" mode)]))
stx
mp))))
(if (null? modes)
'(0)
modes)))]
[ok-context? (lambda (id id=?)
(id=? id
(datum->syntax mp (syntax-e id))))])
(filter
values
(append
(map (lambda (id)
(and (ok-context? id free-transformer-identifier=?)
(make-export id (syntax-e id) 'syntax #f stx)))
(if (or (null? modes)
(memq 'syntax modes))
(or stx-ids null)
null))
(map (lambda (id)
(and (ok-context? id free-label-identifier=?)
(make-export id (syntax-e id) 'label #f stx)))
(if (or (null? modes)
(memq 'label modes))
(or label-ids null)
null))
(map (lambda (id)
(and (ok-context? id free-identifier=?)
(make-export id (syntax-e id) 'run #f stx)))
(if (or (null? modes)
(memq 'run modes))
ids
null))))))
(apply
append
(map (lambda (ids)
(let ([mode (car ids)])
(map (lambda (id)
(and (free-identifier=? id (datum->syntax mp (syntax-e id))
mode)
(make-export id (syntax-e id) mode #f stx)))
(cdr ids))))
idss)))))
(syntax->list #'(mp ...))))]))))
(define-syntax rename-out
@ -672,12 +704,16 @@
(append orig-ids bind-ids))
(apply
append
(map (lambda (mode identifier-binding env-desc)
(map (lambda (mode)
(map (lambda (orig-id bind-id)
(unless (list? (identifier-binding orig-id))
(unless (list? (identifier-binding orig-id mode))
(raise-syntax-error
#f
(format "no binding~a for identifier" env-desc)
(format "no binding~a for identifier"
(cond
[(eq? mode 0) ""]
[(not mode) " in the label phase level"]
[(not mode) (format " at phase level ~a" mode)]))
stx
orig-id))
(make-export orig-id
@ -687,24 +723,8 @@
bind-id))
orig-ids bind-ids))
(if (null? modes)
'(run)
modes)
(if (null? modes)
(list identifier-binding)
(map (lambda (mode)
(cond
[(eq? mode 'run) identifier-binding]
[(eq? mode 'syntax) identifier-transformer-binding]
[(eq? mode 'label) identifier-label-binding]))
modes))
(if (null? modes)
(list "")
(map (lambda (mode)
(cond
[(eq? mode 'run) ""]
[(eq? mode 'syntax) " for-syntax"]
[(eq? mode 'label) " for-label"]))
modes)))))]))))
'(0)
modes))))]))))
(define-syntax except-out
(make-provide-transformer
@ -728,26 +748,22 @@
"duplicate identifier"
stx
dup-id)))
(map (lambda (id)
(or (ormap (lambda (export)
(free-identifier=? id (export-local-id export)))
exports)
(raise-syntax-error
#f
(format "identifier `~a' not included in nested provide spec"
(syntax-e id))
stx
#'out)))
ids)
(for-each (lambda (id)
(or (ormap (lambda (export)
(free-identifier=? id (export-local-id export)
(export-mode export)))
exports)
(raise-syntax-error
#f
(format "identifier `~a' not included in nested provide spec"
(syntax-e id))
stx
#'out)))
ids)
(filter (lambda (export)
(not (ormap (lambda (id)
((let ([mode (export-mode export)])
(cond
[(eq? mode 'run) free-identifier=?]
[(eq? mode 'syntax) free-transformer-identifier=?]
[(eq? mode 'label) free-label-identifier=?]))
id
(export-local-id export)))
(free-identifier=? id (export-local-id export)
(export-mode export)))
ids)))
exports))]))))
@ -767,10 +783,10 @@
(make-provide-transformer
(lambda (stx modes)
(unless (or (null? modes)
(memq 'run modes))
(equal? '(0) modes))
(raise-syntax-error
#f
"allowed only for run-time bindings"
"allowed only for phase level 0"
stx))
(syntax-case stx ()
[(_ id)
@ -805,9 +821,13 @@
;; used a lot.
[avail-ids (append (let-values ([(ids _) (syntax-local-module-defined-identifiers)])
ids)
(let-values ([(ids _ __)
(syntax-local-module-required-identifiers #f #t #f #f)])
ids))]
(let ([idss (syntax-local-module-required-identifiers #f #t)])
(if idss
(let ([a (assoc 0 idss)])
(if a
(cdr a)
null))
null)))]
[find-imported/defined (lambda (id)
(let ([ids (filter (lambda (id2)
(and (free-identifier=? id2 id)
@ -839,7 +859,7 @@
(let ([id (find-imported/defined id)])
(make-export id
(syntax-e id)
'run
0
#f
id))))
(append

View File

@ -19,8 +19,9 @@
(raise-type-error 'make-export "identifier" i))
(unless (symbol? s)
(raise-type-error 'make-export "symbol" s))
(unless (memq mode '(run syntax label))
(raise-type-error 'make-export "'run, 'syntax, or 'label" mode))
(unless (or (not mode)
(exact-integer? mode))
(raise-type-error 'make-export "exact integer or #f" mode))
(unless (syntax? stx)
(raise-type-error 'make-export "syntax" stx))
(values i s mode (and protect? #t) stx)))
@ -42,9 +43,9 @@
(map (lambda (mode)
(list (make-export stx (syntax-e stx) mode #f stx)))
(if (null? modes)
'(run)
'(0)
modes)))
(syntax-case stx (lib)
(syntax-case stx ()
[(id . rest)
(identifier? #'id)
(let ([t (syntax-local-value #'id (lambda () #f))])

View File

@ -12,34 +12,46 @@
make-require-transformer prop:require-transformer require-transformer?
;; the import struct type:
import struct:import make-import import?
import-local-id import-src-sym import-src-mod-path import-orig-stx import-mode import-req-mode
import-local-id import-src-sym import-src-mod-path import-orig-stx import-mode import-req-mode import-orig-mode
;; the import-source struct type:
import-source struct:import-source make-import-source import-source?
import-source-mod-path-stx import-source-mode)
(define-struct* import (local-id src-sym src-mod-path mode req-mode orig-stx)
#:guard (lambda (i s path mode req-mode stx info)
(define-struct* import (local-id src-sym src-mod-path mode req-mode orig-mode orig-stx)
#:guard (lambda (i s path mode req-mode orig-mode stx info)
(unless (identifier? i)
(raise-type-error 'make-import "identifier" i))
(unless (symbol? s)
(raise-type-error 'make-import "symbol" s))
(unless (module-path? path)
(raise-type-error 'make-import "module-path" path))
(unless (memq mode '(run syntax template label))
(raise-type-error 'make-import "'run, 'syntax, 'template, or 'label" mode))
(unless (memq req-mode '(run syntax template label))
(raise-type-error 'make-import "'run, 'syntax, 'template, or 'label" req-mode))
(unless (or (not mode)
(exact-integer? mode))
(raise-type-error 'make-import "exact integer or #f" mode))
(unless (or (not req-mode)
(exact-integer? req-mode))
(raise-type-error 'make-import "'exact integer or #f" req-mode))
(unless (or (not orig-mode)
(exact-integer? orig-mode))
(raise-type-error 'make-import "'exact integer or #f" orig-mode))
(unless (equal? mode (and req-mode orig-mode (+ req-mode orig-mode)))
(raise-mismatch-error 'make-import
(format
"orig mode: ~a and require mode: ~a not consistent with mode: "
orig-mode req-mode)
mode))
(unless (syntax? stx)
(raise-type-error 'make-import "syntax" stx))
(values i s path mode req-mode stx)))
(values i s path mode req-mode orig-mode stx)))
(define-struct* import-source (mod-path-stx mode)
#:guard (lambda (path mode info)
(unless (and (syntax? path)
(module-path? (syntax->datum path)))
(raise-type-error 'make-import-source "syntax module-path" path))
(unless (memq mode '(run syntax template label))
(raise-type-error 'make-import-source "'run, 'syntax, 'template, or 'label" mode))
(unless (or (not mode)
(exact-integer? mode))
(raise-type-error 'make-import-source "exact integer or #f" mode))
(values path mode)))
(define-values (prop:require-transformer require-transformer? require-transformer-get-proc)
@ -69,25 +81,26 @@
#f
"invalid module-path form"
stx))
(let-values ([(names et-names lt-names) (syntax-local-module-exports stx)])
(let ([namess (syntax-local-module-exports stx)])
(values
(apply
append
(map (lambda (names mode)
(map (lambda (name)
(make-import (datum->syntax
stx
name
stx)
name
mod-path
mode
'run
stx))
names))
(list names et-names lt-names)
(list 'run 'syntax 'label)))
(list (make-import-source #'simple 'run)))))]
(map (lambda (names)
(let ([mode (car names)])
(map (lambda (name)
(make-import (datum->syntax
stx
name
stx)
name
mod-path
mode
0
mode
stx))
(cdr names))))
namess))
(list (make-import-source #'simple 0)))))]
[(id . rest)
(identifier? #'id)
(let ([t (syntax-local-value #'id (lambda () #f))])

View File

@ -446,7 +446,7 @@
(let ([s (to-element/no-color elem)])
(make-delayed-element
(lambda (renderer sec ri)
(let* ([tag (find-scheme-tag sec ri sig 'for-label)]
(let* ([tag (find-scheme-tag sec ri sig #f)]
[taglet (and tag (append (cadr tag) (list elem)))]
[vtag (and tag `(sig-val ,taglet))]
[stag (and tag `(sig-form ,taglet))]
@ -490,7 +490,7 @@
(lambda (c mk)
(make-delayed-element
(lambda (ren p ri)
(let ([tag (find-scheme-tag p ri id/tag 'for-label)])
(let ([tag (find-scheme-tag p ri id/tag #f)])
(if tag
(list (mk tag))
content)))
@ -1851,7 +1851,7 @@
(list
(make-link-element #f
content
(or (find-scheme-tag p ri stx-id 'for-label)
(or (find-scheme-tag p ri stx-id #f)
(format "--UNDEFINED:~a--" (syntax-e stx-id))))))
(lambda () content)
(lambda () content))))
@ -2023,15 +2023,17 @@
(if (path? p)
(intern-taglet (path->main-collects-relative p))
p))
(cadddr b)
(list-ref b 5))
(list-ref b 3)
(list-ref b 4)
(list-ref b 5)
(list-ref b 6))
(error 'scribble "no class/interface/mixin information for identifier: ~e"
id))))
(define-serializable-struct cls/intf (name-element app-mixins super intfs methods))
(define (make-inherited-table r d ri decl)
(let* ([start (let ([key (find-scheme-tag d ri (decl-name decl) 'for-label)])
(let* ([start (let ([key (find-scheme-tag d ri (decl-name decl) #f)])
(if key
(list (cons key (lookup-cls/intf d ri key)))
null))]
@ -2047,7 +2049,7 @@
(let ([super (car supers)])
(loop (append (filter values
(map (lambda (i)
(let ([key (find-scheme-tag d ri i 'for-label)])
(let ([key (find-scheme-tag d ri i #f)])
(and key
(cons key (lookup-cls/intf d ri key)))))
(append
@ -2452,14 +2454,14 @@
null))])
(make-delayed-element
(lambda (r d ri)
(let loop ([search (get d ri (find-scheme-tag d ri cname 'for-label))])
(let loop ([search (get d ri (find-scheme-tag d ri cname #f))])
(cond
[(null? search)
(list (make-element #f '("<method not found>")))]
[(not (car search))
(loop (cdr search))]
[else
(let* ([a-key (find-scheme-tag d ri (car search) 'for-label)]
(let* ([a-key (find-scheme-tag d ri (car search) #f)]
[v (and a-key (lookup-cls/intf d ri a-key))])
(if v
(if (member name (cls/intf-methods v))
@ -2468,7 +2470,7 @@
(list (**method name a-key)
" in "
(cls/intf-name-element v))))
(loop (append (cdr search) (get d ri (find-scheme-tag d ri (car search) 'for-label)))))
(loop (append (cdr search) (get d ri (find-scheme-tag d ri (car search) #f)))))
(loop (cdr search))))])))
(lambda () (format "~a in ~a" (syntax-e cname) name))
(lambda () (format "~a in ~a" (syntax-e cname) name)))))

View File

@ -85,7 +85,7 @@
(weak-box-value b))))
(let ([e (make-cached-delayed-element
(lambda (renderer sec ri)
(let* ([tag (find-scheme-tag sec ri c 'for-label)])
(let* ([tag (find-scheme-tag sec ri c #f)])
(if tag
(list
(case (car tag)

View File

@ -36,17 +36,21 @@
v)))
;; mode is #f, 'for-label, or 'for-run
(define (find-scheme-tag part ri stx/binding mode)
(define (find-scheme-tag part ri stx/binding phase-level)
;; The phase-level argument is used only when `stx/binding'
;; is an identifier.
;;
;; Note: documentation key currently don't distinguish different
;; phase definitions of an identifier from a source module.
;; That is, there's no way to document (define x ....) differently
;; from (define-for-syntax x ...). This isn't a problem in practice,
;; because no one uses the same name for different-phase exported
;; bindings.
(let ([b (cond
[(identifier? stx/binding)
((case mode
[(for-label) identifier-label-binding]
[(for-syntax) identifier-transformer-binding]
[else identifier-binding])
stx/binding)]
(identifier-binding stx/binding phase-level)]
[(and (list? stx/binding)
(= 6 (length stx/binding)))
(= 7 (length stx/binding)))
stx/binding]
[else
(and (not (symbol? (car stx/binding)))
@ -57,15 +61,20 @@
(cadr stx/binding)
p
(cadr stx/binding)
#f
(if (= 2 (length stx/binding))
mode
(caddr stx/binding)))))])])
0
(caddr stx/binding))
(if (= 2 (length stx/binding))
0
(cadddr stx/binding))
(if (= 2 (length stx/binding))
0
(cadddr (cdr stx/binding))))))])])
(and
(pair? b)
(let ([seen (make-hash-table)]
[search-key #f])
(let loop ([queue (list (list (caddr b) (cadddr b) (eq? mode (list-ref b 5))))]
(let loop ([queue (list (list (caddr b) (cadddr b) (list-ref b 4) (list-ref b 5) (list-ref b 6)))]
[rqueue null])
(cond
[(null? queue)
@ -74,12 +83,14 @@
#f
(loop (reverse rqueue) null))]
[else
(let ([mod (caar queue)]
[id (cadar queue)]
[here? (caddar queue)]
(let ([mod (list-ref (car queue) 0)]
[id (list-ref (car queue) 1)]
[defn-phase (list-ref (car queue) 2)]
[import-phase (list-ref (car queue) 3)]
[export-phase (list-ref (car queue) 4)]
[queue (cdr queue)])
(let* ([rmp (module-path-index-resolve mod)]
[eb (and here?
[eb (and (equal? defn-phase export-phase)
(list (let ([p (resolved-module-path-name rmp)])
(if (path? p)
(intern-taglet (path->main-collects-relative p))
@ -106,35 +117,46 @@
module-info-cache
rmp
(lambda ()
(let-values ([(run-vals run-stxes
syntax-vals syntax-stxes
label-vals label-stxes)
(let-values ([(valss stxess)
(module-compiled-exports
(get-module-code (resolved-module-path-name rmp)))])
(let ([t (list (append run-vals run-stxes)
(append syntax-vals syntax-stxes)
(append label-vals label-stxes))])
(let ([t
;; Merge the two association lists:
(let loop ([base valss]
[stxess stxess])
(cond
[(null? stxess) base]
[(assoc (caar stxess) base)
=> (lambda (l)
(loop (cons (cons (car l)
(append (cdar stxess)
(cdr l)))
(remq l base))
(cdr stxess)))]
[else (loop (cons (car stxess)
base)
(cdr stxess))]))])
(hash-table-put! module-info-cache rmp t)
t))))])
(hash-table-put! seen rmp #t)
(let ([a (assq id (list-ref exports
(if here?
0
(case mode
[(for-syntax) 1]
[(for-label) 2]
[else 0]))))])
(let ([a (assq id (let ([a (assoc export-phase exports)])
(if a
(cdr a)
null)))])
(if a
(loop queue
(append (map (lambda (m)
(if (pair? m)
(list (module-path-index-rejoin (car m) mod)
(caddr m)
(or here?
(eq? mode (cadr m))))
(list-ref m 2)
defn-phase
(list-ref m 1)
(list-ref m 3))
(list (module-path-index-rejoin m mod)
id
here?)))
0
0
0)))
(cadr a))
rqueue))
(error 'find-scheme-tag

View File

@ -242,37 +242,34 @@ the module's declared name.}
@defproc[(module-compiled-imports [compiled-module-code compiled-module-expression?])
(values (listof module-path-index?)
(listof module-path-index?)
(listof module-path-index?)
(listof module-path-index?))]{
(listof (cons/c (or/c exact-integer? false/c)
(listof module-path-index?)))]{
Takes a module declaration in compiled form and returns an association
list mapping @tech{phase level} shifts (where @scheme[#f] corresponds
to a shift into the @tech{label phase level}) to module references for
the module's explicit imports.}
Takes a module declaration in compiled form and returns four values: a
list of module references for the module's explicit imports, a list of
module references for the module's explicit for-syntax imports, a list
of module references for the module's explicit for-template imports,
and a list of module references for the module's explicit for-label
imports.}
@defproc[(module-compiled-exports [compiled-module-code compiled-module-expression?])
(values list? list? list? list? list? list?)]{
(values (listof (cons/c (or/c exact-integer? false/c) list?))
(listof (cons/c (or/c exact-integer? false/c) list?)))]
Returns six lists: one for the module's explicit variable exports, one
for the module's explicit syntax exports, one for the module's
explicit @scheme[for-syntax] variable exports, one for the module's
explicit @scheme[for-syntax] syntax exports, one for the module's
explicit @scheme[for-label] variable exports, one for the module's
explicit @scheme[for-label] syntax exports.
Returns two association lists mapping @tech{phase level} values (where
@scheme[#f] corresponds to the @tech{label phase level}) to exports at
the corresponding phase. The first association list is for exported
variables, and the second is for exported syntax.
Each list more precisely matches the contract
Each associated list more precisely matches the contract
@schemeblock[
(listof (list/c symbol?
(listof
(or/c module-path-index?
(list/c module-path-index?
(one-of/c #f 'for-syntax 'for-label)
symbol?)))))
(or/c exact-integer? false/c)
symbol?
(or/c exact-integer? false/c))))))
]
For each element of the list, the leading symbol is the name of the
@ -287,12 +284,15 @@ The origin list has more than one element if the binding was imported
multiple times from (possibly) different sources.
For each origin, a @tech{module path index} by itself means that the
binding was imported with a plain @scheme[require] (not
@scheme[for-syntax] or @scheme[for-label]), and imported identifier
has the same name as the re-exported name. An origin represented with
a list indicates explicitly the import, the import mode (plain
@scheme[require], @scheme[for-syntax], or @scheme[for-label]) and the
original export name of the re-exported binding.}
binding was imported with a @tech{phase level} shift of @scheme[0]
(i.e., a plain @scheme[require] without @scheme[for-meta],
@scheme[for-syntax], etc.), and imported identifier has the same name
as the re-exported name. An origin represented with a list indicates
explicitly the import, the import @tech{phase level} shift (where
@scheme[#f] corresponds to a @scheme[for-label] import), the import
name of the re-exported binding, and the @tech{phase level} of the
import.}
@;------------------------------------------------------------------------
@section[#:tag "dynreq"]{Dynamic Module Access}

View File

@ -3,19 +3,30 @@
@title[#:tag "stxcmp"]{Syntax Object Bindings}
@defproc[(bound-identifier=? [a-id syntax?][b-id syntax?]) boolean?]{
@defproc[(bound-identifier=? [a-id syntax?][b-id syntax?]
[phase-level (or/c exact-integer? false/c)
(syntax-local-phase-level)])
boolean?]{
Returns @scheme[#t] if the identifier @scheme[a-id] would bind
@scheme[b-id] (or vice-versa) if the identifiers were substituted in a
suitable expression context, @scheme[#f] otherwise.}
suitable expression context at the @tech{phase level} indicated by
@scheme[phase-level], @scheme[#f] otherwise. A @scheme[#f] value for
@scheme[phase-level] corresponds to the @tech{label phase level}.}
@defproc[(free-identifier=? [a-id syntax?][b-id syntax?]) boolean?]{
@defproc[(free-identifier=? [a-id syntax?][b-id syntax?]
[phase-level (or/c exact-integer? false/c)
(syntax-local-phase-level)])
boolean?]{
Returns @scheme[#t] if @scheme[a-id] and @scheme[b-id] access the same
lexical, module, or top-level binding at @tech{phase level} 0. ``Same
module binding'' means that the identifiers refer to the same original
definition site, not necessarily the @scheme[require] or
lexical, module, or top-level binding at the @tech{phase level}
indicated by @scheme[phase-level]. A @scheme[#f] value for
@scheme[phase-level] corresponds to the @tech{label phase level}.
``Same module binding'' means that the identifiers refer to the same
original definition site, not necessarily the @scheme[require] or
@scheme[provide] site. Due to renaming in @scheme[require] and
@scheme[provide], the identifiers may return distinct results with
@scheme[syntax-e].}
@ -23,23 +34,15 @@ definition site, not necessarily the @scheme[require] or
@defproc[(free-transformer-identifier=? [a-id syntax?][b-id syntax?]) boolean?]{
Returns @scheme[#t] if @scheme[a-id] and @scheme[b-id] access the same
lexical, module, or top-level binding at @tech{phase level} 1 (see
@secref["id-model"]).}
Same as @scheme[(free-identifier=? a-id b-id (add1 (syntax-local-phase-level)))].}
@defproc[(free-template-identifier=? [a-id syntax?][b-id syntax?]) boolean?]{
Returns @scheme[#t] if @scheme[a-id] and @scheme[b-id] access the same
lexical or module binding at @tech{phase level} -1 (see
@secref["id-model"]).}
Same as @scheme[(free-identifier=? a-id b-id (sub1 (syntax-local-phase-level)))].}
@defproc[(free-label-identifier=? [a-id syntax?][b-id syntax?]) boolean?]{
Returns @scheme[#t] if @scheme[a-id] and @scheme[b-id] access the same
lexical or module binding at the @tech{label phase level} (see
@secref["id-model"]).}
Same as @scheme[(free-identifier=? a-id b-id #f)].}
@defproc[(check-duplicate-identifier [ids (listof identifier?)])
@ -52,33 +55,41 @@ first one in @scheme[ids] that is a duplicate), otherwise the result
is @scheme[#f].}
@defproc[(identifier-binding [id-stx syntax?])
@defproc[(identifier-binding [id-stx syntax?]
[phase-level (or/c exact-integer? false/c)
(syntax-local-phase-level)])
(or/c (one-of 'lexical #f)
(listof module-path-index?
symbol?
module-path-index?
symbol?
boolean?
(one-of/c #f 'for-syntax 'for-template)))]{
(one-of/c 0 1)
(or/c exact-integer? false/c)
(or/c exact-integer? false/c)))]{
Returns one of three kinds of values, depending on the binding of
@scheme[id-stx] at @tech{phase level} 0:
@scheme[id-stx] at the @tech{phase level} indicated by
@scheme[phase-level] (where a @scheme[#f] value for
@scheme[phase-level] corresponds to the @tech{label phase level}):
@itemize{
@item{The result is @indexed-scheme['lexical] if @scheme[id-stx]
has a @tech{local binding}.}
has a @tech{local binding}. If @scheme['lexical] is produced for
any @scheme[phase-level] value, then it is produced for all
@scheme[phase-level] values.}
@item{The result is a list of six items when @scheme[id-stx]
has a @tech{module binding}: @scheme[(list source-mod source-id
nominal-source-mod nominal-source-id et? mode)].
has a @tech{module binding}: @scheme[(list _source-mod _source-id
_nominal-source-mod _nominal-source-id _source-phase _import-phase
_nominal-export-phase)].
@itemize{
@item{@scheme[source-mod] is a module path index (see
@item{@scheme[_source-mod] is a module path index (see
@secref["modpathidx"]) that indicates the defining module.}
@item{@scheme[source-id] is a symbol for the identifier's name
@item{@scheme[_source-id] is a symbol for the identifier's name
at its definition site in the source module. This can be
different from the local name returned by
@scheme[syntax->datum] for several reasons: the identifier is
@ -86,27 +97,32 @@ Returns one of three kinds of values, depending on the binding of
implicitly renamed because the identifier (or its import) was
generated by a macro invocation.}
@item{@scheme[nominal-source-mod] is a module path index (see
@item{@scheme[_nominal-source-mod] is a module path index (see
@secref["modpathidx"]) that indicates the module
@scheme[require]d into the context of @scheme[id-stx] to
provide its binding. It can be different from
@scheme[source-mod] due to a re-export in
@scheme[nominal-source-mod] of some imported identifier.}
@scheme[_source-mod] due to a re-export in
@scheme[_nominal-source-mod] of some imported identifier. If
the same binding is imported in multiple ways, an arbitrary
representative is chosen.}
@item{@scheme[nominal-source-id] is a symbol for the
@item{@scheme[_nominal-source-id] is a symbol for the
identifier's name as exported by
@scheme[nominal-source-mod]. It can be different from
@scheme[source-id] due to a renaming @scheme[provide], even if
@scheme[source-mod] and @scheme[nominal-source-mod] are the
@scheme[_nominal-source-mod]. It can be different from
@scheme[_source-id] due to a renaming @scheme[provide], even if
@scheme[_source-mod] and @scheme[_nominal-source-mod] are the
same.}
@item{@scheme[et?] is @scheme[#t] if the source definition is
for-syntax, @scheme[#f] otherwise.}
@item{@scheme[_source-phase] is @scheme[1] if the source
definition is for-syntax, @scheme[0] otherwise.}
@item{@scheme[mode] is @scheme[#f] if the binding import is a
plain @scheme[require], @scheme['for-syntax] if it is from a
@scheme[for-syntax] import, or @scheme['for-template] if it is
from a @scheme[for-template] import.}
@item{@scheme[_import-phase] is @scheme[0] if the binding
import of @scheme[_nominal-source-mode] is a plain
@scheme[require], @scheme[1] if it is from a
@scheme[for-syntax] import, etc.}
@item{@scheme[_nominal-export-phase] is the @tech{phase level}
of the export from @scheme[_nominal-source-mod].}
}}
@ -121,17 +137,11 @@ Returns one of three kinds of values, depending on the binding of
symbol?
module-path-index?
symbol?
boolean?
(one-of/c #f 'for-syntax 'for-template)))]{
(one-of/c 0 1)
(or/c exact-integer? false/c)
(or/c exact-integer? false/c)))]{
Like @scheme[identifier-binding], but that the reported information is
for the identifier's binding in @tech{phase level} 1 (see
@secref["id-model"]).
If the result is @scheme['lexical] for either of
@scheme[identifier-binding] or
@scheme[identifier-transformer-binding], then the result is always
@scheme['lexical] for both.}
Same as @scheme[(identifier-binding id-stx (add1 (syntax-local-phase-level)))].}
@defproc[(identifier-template-binding [id-stx syntax?])
@ -140,32 +150,22 @@ If the result is @scheme['lexical] for either of
symbol?
module-path-index?
symbol?
boolean?
(one-of/c #f 'for-syntax 'for-template)))]{
(one-of/c 0 1)
(or/c exact-integer? false/c)
(or/c exact-integer? false/c)))]{
Like @scheme[identifier-binding], but that the reported information is
for the identifier's binding in @tech{phase level} -1 (see
@secref["id-model"]).
If the result is @scheme['lexical] for either of
@scheme[identifier-binding] or
@scheme[identifier-template-binding], then the result is always
@scheme['lexical] for both.}
Same as @scheme[(identifier-binding id-stx (sub1 (syntax-local-phase-level)))].}
@defproc[(identifier-label-binding [id-stx syntax?])
(or/c false/c
(listof (or/c module-path-index? symbol?)
(or/c (one-of 'lexical #f)
(listof module-path-index?
symbol?
(or/c module-path-index? symbol?)
module-path-index?
symbol?
boolean?
(one-of/c #f 'for-label)))]{
(one-of/c 0 1)
(or/c exact-integer? false/c)
(or/c exact-integer? false/c)))]{
Like @scheme[identifier-binding], but that the reported information is
for the identifier's binding in the @tech{label phase level} (see
@secref["id-model"]).
Unlike @scheme[identifier-binding], the result cannot be
@scheme['lexical].}
Same as @scheme[(identifier-binding id-stx #f)].}

View File

@ -356,6 +356,13 @@ contexts.
@transform-time[]}
@defproc[(syntax-local-phase-level) (or/c exact-integer? false/c)]{
During the dynamic extent of a @tech{syntax transformer} application
by the expander, the result is the @tech{phase level} of the form
being expanded. Otherwise, the result is @scheme[0].}
@defproc[(syntax-local-module-exports [mod-path module-path?])
(values (listof symbol?) (listof symbol?) (listof symbol?))]{
@ -558,9 +565,10 @@ Returns @scheme[#t] if @scheme[v] has the
@defstruct[import ([local-id identifier?]
[src-sym symbol?]
[src-mod-path module-path?]
[orig-stx syntax?]
[mode (one-of/c 'run 'syntax 'template 'label)]
[req-mode (one-of/c 'run 'syntax 'template 'label)])]{
[mode (or/c exact-integer? false/c)]
[req-mode (or/c exact-integer? false/c)]
[orig-mode (or/c exact-integer? false/c)]
[orig-stx syntax?])]{
A structure representing a single imported identifier:
@ -582,11 +590,10 @@ A structure representing a single imported identifier:
importing module.}
@item{@scheme[req-mode] --- the @tech{phase level} shift of the
import relative to the exporting module. Since the underlying
module system currently allows only for-run @scheme[require]s
to import into other @tech{phase levels}, if this value is not
@scheme['run], then it must match the @scheme[mode] field's
value.}
import relative to the exporting module.}
@item{@scheme[orig-mode] --- the @tech{phase level} of the
binding as exported by the exporting module.}
}}
@ -594,7 +601,7 @@ A structure representing a single imported identifier:
@defstruct[import-source ([mod-path-stx (and/c syntax?
(lambda (x)
(module-path? (syntax->datum x))))]
[mode (one-of/c 'run 'syntax 'template 'label)])]{
[mode (or/c exact-integer? false/c)])]{
A structure representing an imported module, which must be
instantiated or visited even if no binding is imported into a module.
@ -630,7 +637,7 @@ If the derived form contains a sub-form that is a
transform the sub-@scheme[_provide-spec] to a lists of exports.
@defproc[(expand-export [stx syntax?] [modes (listof (one-of/c 'run 'syntax 'label))])
@defproc[(expand-export [stx syntax?] [modes (listof (or/c exact-integer? false/c))])
(listof export?)]{
Expands the given @scheme[_provide-spec] to a list of exports. The
@ -638,10 +645,10 @@ Expands the given @scheme[_provide-spec] to a list of exports. The
sub-@scheme[_provide-specs]; for example, an identifier refers to a
@tech{phase level} 0 binding unless the @scheme[modes] list specifies
otherwise. Normally, @scheme[modes] is either empty or contains a
single symbol.}
single element.}
@defproc[(make-provide-transformer [proc (syntax? (listof (one-of/c 'run 'syntax 'label))
@defproc[(make-provide-transformer [proc (syntax? (listof (or/c exact-integer? false/c))
. -> . (listof export?))])
provide-transformer?]{
@ -667,7 +674,7 @@ Returns @scheme[#t] if @scheme[v] has the
[out-sym symbol?]
[orig-stx syntax?]
[protect? any/c]
[mode (one-of/c 'run 'syntax 'label)])]{
[mode (or/c exact-integer? false/c)])]{
A structure representing a single imported identifier:

View File

@ -79,7 +79,7 @@ run time of the enclosing module (or the run time of top-level
expression). Bindings in @tech{phase level} 0 constitute the
@deftech{base environment}. @tech{Phase level} 1 corresponds to the
time during which the enclosing module (or top-level expression) is
expanded; bindings in @tech{phase level} 0 constitute the
expanded; bindings in @tech{phase level} 1 constitute the
@deftech{transformer environment}. Phase level -1 corresponds to the
run time of a different module for which the enclosing module is
imported for use at @tech{phase level} 1 (relative to the importing
@ -385,20 +385,21 @@ core syntactic forms are encountered:
@tech{phase level}s specified by the exporting modules:
@tech{phase level} 0 for each normal @scheme[provide],
@tech{phase level} 1 for each @scheme[for-syntax]
@scheme[provide], and the @tech{label phase level} for each
@scheme[for-label] @scheme[provide].
@scheme[provide], and so on. The @scheme[for-meta]
@scheme[provide] form allows exports at an arbitrary
@tech{phase level} (as long as a binding exists within the
module at the @tech{phase level}).
A @scheme[for-syntax] sub-form within @scheme[require] imports
only @tech{phase level} 0 exports from the specified modules,
but the resulting bindings are for @tech{phase level} 1.
A @scheme[for-template] sub-form within @scheme[require] imports
only @tech{phase level} 0 exports from the specified modules,
but the resulting bindings are for @tech{phase level} -1.
A @scheme[for-label] sub-form within @scheme[require] imports
only @tech{phase level} 0 exports from the specified modules,
but the resulting bindings are for the @tech{label phase level}.}
similarly, but the resulting bindings have a @tech{phase level}
that is one more than the exported @tech{phase levels}, when
exports for the @tech{label phase level} are still imported at
the @tech{label phase level}. More generally, a
@scheme[for-meta] sub-form within @scheme[require] imports with
the specified @tech{phase level} shift; if the specified shift
is @scheme[#f], or if @scheme[for-label] is used to import,
then all bindings are imported into the @tech{label phase
level}.}
@item{When a @scheme[define], @scheme[define-values],
@scheme[define-syntax], or @scheme[define-syntaxes] form is

View File

@ -1238,16 +1238,18 @@ Legal only in a @tech{module begin context}, and handled by the
@guideintro["module-require"]{@scheme[require]}
@defform/subs[#:literals (only-in prefix-in except-in rename-in lib file planet + - =
for-syntax for-template for-label quote)
for-syntax for-template for-label for-meta only-meta-in quote)
(require require-spec ...)
([require-spec module-path
(only-in require-spec id-maybe-renamed ...)
(except-in require-spec id ...)
(prefix-in prefix-id require-spec)
(rename-in require-spec [orig-id bind-id] ...)
(only-meta-in require-spec ...)
(for-syntax require-spec ...)
(for-template require-spec ...)
(for-label require-spec ...)
(for-meta phase-level require-spec ...)
derived-require-spec]
[module-path (#,(scheme quote) id)
rel-string
@ -1259,6 +1261,7 @@ Legal only in a @tech{module begin context}, and handled by the
rel-string ...)]
[id-maybe-renamed id
[orig-id bind-id]]
[phase-level exact-integer #f]
[vers nat
(nat nat)
(= nat)
@ -1316,22 +1319,29 @@ pre-defined forms are as follows.
@scheme[orig-id] is not in the set that @scheme[require-spec]
describes, a syntax error is reported.}
@defsubform[(only-meta-in phase-level require-spec ...)]{
Like the combination of @scheme[require-spec]s, but removing any
binding that is not for @scheme[phase-level], where @scheme[#f] for
@scheme[phase-level] corresponds to the @tech{label phase level}.}
@specsubform[#:literals (for-meta)
(for-meta phase-level require-spec ...)]{Like the combination of
@scheme[require-spec]s, but constrained each binding specified by
each @scheme[require-spec] is shifted by @scheme[phase-level]. The
@tech{label phase level} corresponds to @scheme[#f], and a shifting
combination that involves @scheme[#f] produces @scheme[#f].}
@specsubform[#:literals (for-syntax)
(for-syntax require-spec ...)]{Like the combination of
@scheme[require-spec]s, but constrained to imports specified as
@tech{phase level} 0 imports, each shifted to a @tech{phase level} 1
binding. A @scheme[for-syntax] form cannot appear within a
@scheme[for-syntax], @scheme[for-template], or @scheme[for-label]
form.}
(for-syntax require-spec ...)]{Same as
@scheme[(for-meta 1 require-spec ...)].}
@specsubform[#:literals (for-template)
(for-template require-spec ...)]{Analogous to
@scheme[for-syntax-spec], but shifts bindings to @tech{phase level} -1.}
(for-template require-spec ...)]{Same as
@scheme[(for-meta -1 require-spec ...)].}
@specsubform[#:literals (for-label)
(for-label require-spec ...)]{Analogous to
@scheme[for-syntax-spec], but shifts bindings to the @tech{label
phase level}.}
(for-label require-spec ...)]{Same as
@scheme[(for-meta #f require-spec ...)].}
@specsubform[derived-require-spec]{See @secref["require-trans"] for
information on expanding the set of @scheme[require-spec] forms.}
@ -1427,8 +1437,8 @@ an identifier can be either imported or defined for a given
@guideintro["module-provide"]{@scheme[provide]}
@defform/subs[#:literals (protect-out all-defined-out all-from-out rename-out
except-out prefix-out struct-out
for-syntax for-label)
except-out prefix-out struct-out for-meta
for-syntax for-label for-template)
(provide provide-spec ...)
([provide-spec id
(all-defined-out)
@ -1438,7 +1448,12 @@ an identifier can be either imported or defined for a given
(prefix-out prefix-id provide-spec)
(struct-out id)
(protect-out provide-spec ...)
derived-provide-spec])]{
(for-meta phase-level provide-spec ...)
(for-syntax provide-spec ...)
(for-template provide-spec ...)
(for-label provide-spec ...)
derived-provide-spec]
[phase-level exact-integer #f])]{
Declares exports from a module. A @scheme[provide] form must appear in
a @tech{module context} or a @tech{module-begin context}.
@ -1514,19 +1529,27 @@ pre-defined forms are as follows.
@secref["modprotect"]. The @scheme[provide-spec] must specify only
bindings that are defined within the exporting module.}
@specsubform[#:literals (for-syntax)
(for-syntax provide-spec ...)]{ Like the union of the
@specsubform[#:literals (for-meta)
(for-meta phase-level provide-spec ...)]{ Like the union of the
@scheme[provide-spec]s, but adjusted to apply to @tech{phase level}
1. In particular, an @scheme[id] or @scheme[rename-out] formas a
@scheme[provide-spec] refers to a @tech{phase-level}-1 binding, an
@scheme[all-define-out] exports only @tech{phase-level}-1
definitions, and an @scheme[all-from-out] exports only bindings
imported with a shift to @tech{phase level} 1.}
specified by @scheme[phase-level] (where @scheme[#f] corresponds to the
@tech{label phase level}). In particular, an @scheme[id] or @scheme[rename-out] form as
a @scheme[provide-spec] refers to a binding at @scheme[phase-level], an
@scheme[all-define-out] exports only @scheme[phase-level]
definitions, and an @scheme[all-from-out] exports bindings
imported with a shift by @scheme[phase-level].}
@specsubform[#:literals (for-label)
(for-label provide-spec ...)]{Analogous to
@scheme[for-syntax], adjusting each @scheme[provide-spec] to the
@tech{label phase level}.}
@specsubform[#:literals (for-syntax)
(for-syntax provide-spec ...)]{Same as
@scheme[(for-meta 1 provide-spec ...)].}
@specsubform[#:literals (for-template)
(for-template provide-spec ...)]{Same as
@scheme[(for-meta -1 provide-spec ...)].}
@specsubform[#:literals (for-label)
(for-label provide-spec ...)]{Same as
@scheme[(for-meta #f provide-spec ...)].}
@specsubform[derived-provide-spec]{See @secref["provide-trans"] for
information on expanding the set of @scheme[provide-spec] forms.}
@ -1536,15 +1559,20 @@ export name, though the same binding can be specified with the
multiple symbolic names.}
@defform[(for-meta require-spec ...)]{See @scheme[require] and @scheme[provide].}
@defform[(for-syntax require-spec ...)]{See @scheme[require] and @scheme[provide].}
@defform[(for-template require-spec ...)]{See @scheme[require].}
@defform[(for-template require-spec ...)]{See @scheme[require] and @scheme[provide].}
@defform[(for-label require-spec ...)]{See @scheme[require] and @scheme[provide].}
@defform/subs[(#%require raw-require-spec ...)
([raw-require-spec phaseless-require-spec
([raw-require-spec phaseless-spec
(#,(schemeidfont "for-meta") phase-level phaseless-spec ...)
(#,(schemeidfont "for-syntax") phaseless-spec ...)
(#,(schemeidfont "for-template") phaseless-spec ...)
(#,(schemeidfont "for-label") phaseless-spec ...)]
(#,(schemeidfont "for-label") phaseless-spec ...)
(#,(schemeidfont "just-meta") phase-level raw-require-spec ...)]
[phase-level exact-integer
#f]
[phaseless-spec raw-module-path
(#,(schemeidfont "only") rw-module-path id ...)
(#,(schemeidfont "prefix") prefix-id raw-module-path)
@ -1565,7 +1593,9 @@ The primitive import form, to which @scheme[require] expands. A
@scheme[require] form, except that the syntax is more constrained, not
composable, and not extensible. Also, sub-form names like
@schemeidfont{for-syntax} and @schemeidfont{lib} are recognized
symbolically, instead of via bindings.
symbolically, instead of via bindings. Although not formalized in the
grammar above, a @schemeidfont{just-meta} form cannot appear within a
@schemeidfont{just-meta} form.
Each @scheme[raw-require-spec] corresponds to the obvious
@scheme[_require-spec], but the @schemeidfont{rename} sub-form has the
@ -1579,9 +1609,12 @@ where the lexical context of the @scheme[local-id] is preserved.}
@defform/subs[(#%provide raw-provide-spec ...)
([raw-provide-spec phaseless-spec
(#,(schemeidfont "for-meta") phase-level phaseless-spec)
(#,(schemeidfont "for-syntax") phaseless-spec)
(#,(schemeidfont "for-label") phaseless-spec)
(#,(schemeidfont "protect") raw-provide-spec)]
[phase-level exact-integer
#f]
[phaseless-spec id
(#,(schemeidfont "rename") local-id export-id)
(#,(schemeidfont "struct") struct-id (field-id ...))

View File

@ -49,15 +49,18 @@ get all cross-reference information for installed documentation.}
symbol?
module-path-index?
symbol?
boolean?
(one-of/c #f 'for-syntax 'for-label))
(one-of/c 0 1)
(or/c exact-integer? false/c)
(or/c exact-integer? false/c))
(list/c (or/c module-path?
module-path-index?
path?
resolved-module-path?)
symbol?
(one-of/c #f 'for-syntax 'for-label)))]
[mode (one-of/c #f 'for-syntax 'for-label)])
(one-of/c 0 1)
(or/c exact-integer? false/c)
(or/c exact-integer? false/c)))]
[mode (or/c exact-integer? false/c)])
(or/c tag? false/c)]{
Locates a tag in @scheme[xref] that documents a module export. The
@ -68,35 +71,27 @@ either for the specified module or, if the exported name is
re-exported from other other module, for the other module
(transitively).
The @scheme[mode] argument specifies more information about the
binding: whether it refers to a normal binding, a @scheme[for-syntax]
binding, or a @scheme[for-label] binding.
The @scheme[binding] is specified in one of four ways:
The @scheme[mode] argument specifies the relevant phase level for the
binding. The @scheme[binding] is specified in one of four ways:
@itemize{
@item{If @scheme[binding] is an identifier, then
@scheme[identifier-binding],
@scheme[identifier-transformer-binding], or
@scheme[identifier-label-binding] is used to determine the
binding, depending on the value of @scheme[mode].}
@scheme[identifier-binding] is used with @scheme[mode] to
determine the binding.}
@item{If @scheme[binding] is a two-element list, then the first
element provides the exporting module and the second the
exported name. The @scheme[mode] argument is effectively
ignored.}
@item{If @scheme[binding] is a six-element list, then it corresponds
to a result from @scheme[identifier-binding],
@scheme[identifier-transformer-binding], or
@scheme[identifier-label-binding], depending on the value of
@item{If @scheme[binding] is a seven-element list, then it corresponds
to a result from @scheme[identifier-binding] using
@scheme[mode].}
@item{If @scheme[binding] is a three-element list, then the first
element is as for the 2-element-list case, the second element
is like the fourth element of the six-element case, and the
third element is like the sixth element of the six-element
@item{If @scheme[binding] is a five-element list, then the first
element is as for the two-element-list case, and the remain
elements are as in the last four elements of the seven-element
case.}
}

View File

@ -445,11 +445,11 @@
(cdddr b))
b)))
(test '('#%kernel case-lambda (lib "scheme/init") case-lambda #f #f) identifier-binding* #'case-lambda)
(test '(scheme/promise delay (lib "scheme/init") delay #f #f) identifier-binding* #'delay)
(test '('#%kernel #%module-begin (lib "scheme/init") #%plain-module-begin #f #f) identifier-binding* #'#%plain-module-begin)
(test '('#%kernel case-lambda (lib "scheme/init") case-lambda 0 0 0) identifier-binding* #'case-lambda)
(test '(scheme/promise delay (lib "scheme/init") delay 0 0 0) identifier-binding* #'delay)
(test '('#%kernel #%module-begin (lib "scheme/init") #%plain-module-begin 0 0 0) identifier-binding* #'#%plain-module-begin)
(require (only-in scheme/base [#%plain-module-begin #%pmb]))
(test '('#%kernel #%module-begin scheme/base #%plain-module-begin #f #f) identifier-binding* #'#%pmb)
(test '('#%kernel #%module-begin scheme/base #%plain-module-begin 0 0 0) identifier-binding* #'#%pmb)
(let ([b (identifier-binding (syntax-case (expand #'(module m scheme/base
(require (only-in (lib "lang/htdp-intermediate.ss") [cons bcons]))
@ -1275,6 +1275,97 @@
;; If we get here, then macro expansion didn't fail.
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Check that the free-identifier=? cache doesn't kick in too eagerly.
(module @w@ scheme/base
(define add '+)
(provide (rename-out [add plus])))
(module @q@ scheme/base
(require (for-syntax scheme/base))
(provide result)
(define-for-syntax a #'plus)
(define-for-syntax b #'plus)
(define-for-syntax accum null)
(begin-for-syntax
(set! accum (cons (free-identifier=? a #'plus)
accum)))
(require '@w@)
(begin-for-syntax
(set! accum (list*
(free-identifier=? a #'plus)
(free-identifier=? b #'plus)
accum)))
(define-syntax (accumulated stx)
(datum->syntax stx `',accum))
(define result (accumulated)))
(require '@q@)
(test '(#t #t #t) values result)
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Test namespace-attach with phase-levels -2 and 2
(when (file-exists? "tmp10")
(delete-file "tmp10"))
(module @!a scheme/base
(provide x)
(with-output-to-file "tmp10"
#:exists 'append
(lambda ()
(printf "a\n")))
(define x 5))
(module @!b scheme/base
(provide get-x)
(require (for-meta -2 '@!a))
(define (get-x) #'x))
(module @!c scheme/base
(require (for-meta 2 '@!b)
(for-syntax scheme/base
(for-syntax scheme/base)))
(define-syntax (foo stx)
(let-syntax ([ref-x (lambda (stx)
#`(quote-syntax #,(get-x)))])
(ref-x)))
(with-output-to-file "tmp10"
#:exists 'append
(lambda ()
(printf "~s\n" (foo)))))
(define (check-tmp10 s)
(test s with-input-from-file "tmp10" (lambda () (read-string 1000))))
(require '@!c)
(check-tmp10 "a\n5\n")
(let ()
(define n (make-base-namespace))
(namespace-attach-module (current-namespace) ''@!c n)
(test 5
'use-a
(parameterize ([current-namespace n])
;; Shouldn't instantiate new:
(namespace-require ''@!a)
;; Should see `x' from @!a:
(eval 'x)))
(check-tmp10 "a\n5\n"))
(when (file-exists? "tmp10")
(delete-file "tmp10"))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(report-errs)

View File

@ -55,10 +55,9 @@
(printf "Copying ~a to ~a~n" path target)
(copy-file path target)
(let ([code (get-module-code path "no-such-dir")])
(let-values ([(a b c d) (module-compiled-imports code)])
(map (lambda (x)
(go x path #f))
(append a b c d)))))))))
(map (lambda (x)
(go x path #f))
(apply append (map cdr (module-compiled-imports code))))))))))
(unless (directory-exists? "xform-collects")
(make-directory "xform-collects"))

View File

@ -1,112 +1,111 @@
{
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,49,49,50,0,0,0,1,0,0,6,0,
9,0,14,0,18,0,23,0,36,0,41,0,45,0,52,0,55,0,62,0,69,
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,49,51,50,0,0,0,1,0,0,6,0,
9,0,22,0,27,0,31,0,36,0,41,0,45,0,52,0,55,0,62,0,69,
0,78,0,84,0,98,0,112,0,115,0,119,0,121,0,132,0,134,0,148,0,
155,0,177,0,179,0,193,0,203,0,209,0,232,0,33,1,43,1,60,1,99,
1,138,1,212,1,1,2,94,2,139,2,144,2,164,2,54,3,74,3,124,3,
190,3,75,4,238,4,25,5,36,5,115,5,0,0,133,7,0,0,65,98,101,
103,105,110,29,11,11,64,108,101,116,42,63,108,101,116,64,119,104,101,110,72,
112,97,114,97,109,101,116,101,114,105,122,101,64,99,111,110,100,63,97,110,100,
155,0,177,0,179,0,193,0,250,0,17,1,23,1,29,1,39,1,56,1,95,
1,134,1,203,1,248,1,80,2,125,2,130,2,150,2,40,3,60,3,110,3,
176,3,61,4,219,4,6,5,17,5,96,5,0,0,117,7,0,0,65,98,101,
103,105,110,29,11,11,72,112,97,114,97,109,101,116,101,114,105,122,101,64,108,
101,116,42,63,108,101,116,64,119,104,101,110,64,99,111,110,100,63,97,110,100,
66,108,101,116,114,101,99,62,111,114,66,100,101,102,105,110,101,66,117,110,108,
101,115,115,68,104,101,114,101,45,115,116,120,65,113,117,111,116,101,29,94,2,
14,68,35,37,112,97,114,97,109,122,11,29,94,2,14,68,35,37,107,101,114,
110,101,108,11,62,105,102,63,115,116,120,61,115,70,108,101,116,45,118,97,108,
14,68,35,37,107,101,114,110,101,108,11,29,94,2,14,68,35,37,112,97,114,
97,109,122,11,62,105,102,63,115,116,120,61,115,70,108,101,116,45,118,97,108,
117,101,115,61,120,73,108,101,116,114,101,99,45,118,97,108,117,101,115,66,108,
97,109,98,100,97,1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,
111,110,45,107,101,121,61,118,73,100,101,102,105,110,101,45,118,97,108,117,101,
115,95,8,240,48,117,0,0,11,16,0,95,8,193,11,16,0,96,35,11,93,
159,2,16,34,35,16,2,2,13,161,2,2,35,2,13,2,2,2,13,97,10,
34,11,94,159,2,15,34,34,159,2,16,34,34,16,20,2,10,2,2,2,3,
2,2,2,4,2,2,2,5,2,2,2,6,2,2,2,7,2,2,2,8,2,
2,2,9,2,2,2,11,2,2,2,12,2,2,13,16,4,34,29,11,11,2,
2,11,18,98,64,104,101,114,101,8,31,8,30,8,29,8,28,8,27,27,248,
22,178,3,23,196,1,249,22,171,3,80,158,37,34,251,22,73,2,17,248,22,
88,23,200,2,12,249,22,63,2,1,248,22,90,23,202,1,27,248,22,178,3,
23,196,1,249,22,171,3,80,158,37,34,251,22,73,2,17,248,22,88,23,200,
2,249,22,63,2,1,248,22,90,23,202,1,12,27,248,22,65,248,22,178,3,
23,197,1,28,248,22,71,23,194,2,87,94,23,193,1,20,15,159,35,34,35,
28,248,22,71,248,22,65,23,195,2,248,22,64,193,249,22,171,3,80,158,37,
34,251,22,73,2,17,248,22,64,23,200,2,249,22,63,2,8,248,22,65,23,
202,1,11,18,100,10,8,31,8,30,8,29,8,28,8,27,16,4,11,11,2,
18,3,1,7,101,110,118,54,57,49,51,16,4,11,11,2,19,3,1,7,101,
110,118,54,57,49,52,27,248,22,65,248,22,178,3,23,197,1,28,248,22,71,
23,194,2,87,94,23,193,1,20,15,159,35,34,35,28,248,22,71,248,22,65,
23,195,2,248,22,64,193,249,22,171,3,80,158,37,34,250,22,73,2,20,248,
22,73,249,22,73,248,22,73,2,21,248,22,64,23,202,2,251,22,73,2,17,
2,21,2,21,249,22,63,2,10,248,22,65,23,205,1,18,100,11,8,31,8,
115,97,10,34,11,94,159,2,16,34,34,159,2,15,34,34,16,20,2,10,2,
2,2,3,2,2,2,4,2,2,2,5,2,2,2,6,2,2,2,7,2,2,
2,8,2,2,2,9,2,2,2,11,2,2,2,12,2,2,96,35,11,93,159,
2,15,34,35,16,2,2,13,161,2,2,35,2,13,2,2,2,13,96,10,11,
11,16,0,96,10,36,11,16,0,13,16,4,34,29,11,11,2,2,11,18,98,
64,104,101,114,101,8,31,8,30,8,29,8,28,8,27,27,248,22,178,3,23,
196,1,249,22,171,3,80,158,37,34,251,22,73,2,17,248,22,88,23,200,2,
12,249,22,63,2,1,248,22,90,23,202,1,27,248,22,178,3,23,196,1,249,
22,171,3,80,158,37,34,251,22,73,2,17,248,22,88,23,200,2,249,22,63,
2,1,248,22,90,23,202,1,12,27,248,22,65,248,22,178,3,23,197,1,28,
248,22,71,23,194,2,20,15,159,35,34,35,28,248,22,71,248,22,65,23,195,
2,248,22,64,193,249,22,171,3,80,158,37,34,251,22,73,2,17,248,22,64,
23,200,2,249,22,63,2,8,248,22,65,23,202,1,11,18,100,10,8,31,8,
30,8,29,8,28,8,27,16,4,11,11,2,18,3,1,7,101,110,118,54,57,
49,54,16,4,11,11,2,19,3,1,7,101,110,118,54,57,49,55,248,22,178,
3,193,27,248,22,178,3,194,249,22,63,248,22,73,248,22,64,196,248,22,65,
195,27,248,22,65,248,22,178,3,23,197,1,249,22,171,3,80,158,37,34,28,
248,22,51,248,22,172,3,248,22,64,23,198,2,27,249,22,2,32,0,89,162,
8,44,35,41,9,222,33,39,248,22,178,3,248,22,88,23,200,2,250,22,73,
2,22,248,22,73,249,22,73,248,22,73,248,22,64,23,204,2,250,22,74,2,
23,249,22,2,22,64,23,204,2,248,22,90,23,206,2,249,22,63,248,22,64,
23,202,1,249,22,2,22,88,23,200,1,250,22,74,2,20,249,22,2,32,0,
89,162,42,35,45,9,222,33,40,248,22,178,3,248,22,64,201,248,22,65,198,
27,248,22,178,3,194,249,22,63,248,22,73,248,22,64,196,248,22,65,195,27,
248,22,65,248,22,178,3,23,197,1,249,22,171,3,80,158,37,34,250,22,74,
2,22,249,22,2,32,0,89,162,42,35,45,9,222,33,42,248,22,178,3,248,
22,64,201,248,22,65,198,27,248,22,65,248,22,178,3,196,27,248,22,178,3,
248,22,64,195,249,22,171,3,80,158,38,34,28,248,22,71,195,250,22,74,2,
20,9,248,22,65,199,250,22,73,2,4,248,22,73,248,22,64,199,250,22,74,
2,3,248,22,65,201,248,22,65,202,27,248,22,65,248,22,178,3,23,197,1,
27,249,22,1,22,77,249,22,2,22,178,3,248,22,178,3,248,22,64,199,249,
22,171,3,80,158,38,34,251,22,73,1,22,119,105,116,104,45,99,111,110,116,
105,110,117,97,116,105,111,110,45,109,97,114,107,2,24,250,22,74,1,23,101,
120,116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,
110,21,95,1,27,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114,
107,45,115,101,116,45,102,105,114,115,116,11,2,24,201,250,22,74,2,20,9,
248,22,65,203,27,248,22,65,248,22,178,3,23,197,1,28,248,22,71,23,194,
2,87,94,23,193,1,20,15,159,35,34,35,249,22,171,3,80,158,37,34,27,
248,22,178,3,248,22,64,23,198,2,28,249,22,138,8,62,61,62,248,22,172,
3,248,22,88,23,197,2,250,22,73,2,20,248,22,73,249,22,73,21,93,2,
25,248,22,64,199,250,22,74,2,7,249,22,73,2,25,249,22,73,248,22,97,
203,2,25,248,22,65,202,251,22,73,2,17,28,249,22,138,8,248,22,172,3,
248,22,64,23,201,2,64,101,108,115,101,10,248,22,64,23,198,2,250,22,74,
2,20,9,248,22,65,23,201,1,249,22,63,2,7,248,22,65,23,203,1,99,
8,31,8,30,8,29,8,28,8,27,16,4,11,11,2,18,3,1,7,101,110,
118,54,57,51,57,16,4,11,11,2,19,3,1,7,101,110,118,54,57,52,48,
18,158,94,10,64,118,111,105,100,8,47,27,248,22,65,248,22,178,3,196,249,
22,171,3,80,158,37,34,28,248,22,51,248,22,172,3,248,22,64,197,250,22,
73,2,26,248,22,73,248,22,64,199,248,22,88,198,27,248,22,172,3,248,22,
64,197,250,22,73,2,26,248,22,73,248,22,64,197,250,22,74,2,23,248,22,
65,199,248,22,65,202,159,34,20,102,159,34,16,1,20,24,2,1,16,0,83,
158,40,20,99,134,69,35,37,109,105,110,45,115,116,120,2,2,10,11,10,10,
10,10,34,80,158,34,34,20,102,159,34,16,0,16,0,11,11,16,0,34,11,
11,11,16,0,16,0,16,0,34,34,11,11,16,0,16,0,16,0,34,34,11,
16,10,9,9,9,9,9,9,9,9,9,9,16,10,2,3,2,4,2,5,2,
6,2,7,2,8,2,9,2,10,2,11,2,12,16,10,11,11,11,11,11,11,
11,11,11,11,16,10,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,
10,2,11,2,12,34,44,16,11,16,5,93,2,13,20,15,159,34,34,34,34,
20,102,159,34,16,0,16,1,33,32,10,16,5,93,2,12,89,162,8,44,35,
51,9,223,0,33,33,34,20,102,159,34,16,1,20,25,159,35,2,2,2,13,
16,0,11,16,5,93,2,5,89,162,8,44,35,51,9,223,0,33,34,34,20,
102,159,34,16,1,20,25,159,35,2,2,2,13,16,0,11,16,5,93,2,8,
89,162,8,44,35,51,9,223,0,33,35,34,20,102,159,34,16,1,20,25,159,
35,2,2,2,13,16,1,33,36,11,16,5,93,2,10,89,162,8,44,35,54,
9,223,0,33,37,34,20,102,159,34,16,1,20,25,159,35,2,2,2,13,16,
1,33,38,11,16,5,93,2,4,89,162,8,44,35,56,9,223,0,33,41,34,
20,102,159,34,16,1,20,25,159,35,2,2,2,13,16,0,11,16,5,93,2,
9,89,162,8,44,35,51,9,223,0,33,43,34,20,102,159,34,16,1,20,25,
159,35,2,2,2,13,16,0,11,16,5,93,2,3,89,162,8,44,35,52,9,
223,0,33,44,34,20,102,159,34,16,1,20,25,159,35,2,2,2,13,16,0,
11,16,5,93,2,6,89,162,8,44,35,53,9,223,0,33,45,34,20,102,159,
34,16,1,20,25,159,35,2,2,2,13,16,0,11,16,5,93,2,7,89,162,
8,44,35,56,9,223,0,33,46,34,20,102,159,34,16,1,20,25,159,35,2,
2,2,13,16,1,33,48,11,16,5,93,2,11,89,162,8,44,35,52,9,223,
0,33,49,34,20,102,159,34,16,1,20,25,159,35,2,2,2,13,16,0,11,
16,0,94,2,16,2,15,93,2,16,9,0};
EVAL_ONE_SIZED_STR((char *)expr, 2048);
56,55,16,4,11,11,2,19,3,1,7,101,110,118,54,57,56,56,27,248,22,
65,248,22,178,3,23,197,1,28,248,22,71,23,194,2,20,15,159,35,34,35,
28,248,22,71,248,22,65,23,195,2,248,22,64,193,249,22,171,3,80,158,37,
34,250,22,73,2,20,248,22,73,249,22,73,248,22,73,2,21,248,22,64,23,
202,2,251,22,73,2,17,2,21,2,21,249,22,63,2,10,248,22,65,23,205,
1,18,100,11,8,31,8,30,8,29,8,28,8,27,16,4,11,11,2,18,3,
1,7,101,110,118,54,57,57,48,16,4,11,11,2,19,3,1,7,101,110,118,
54,57,57,49,248,22,178,3,193,27,248,22,178,3,194,249,22,63,248,22,73,
248,22,64,196,248,22,65,195,27,248,22,65,248,22,178,3,23,197,1,249,22,
171,3,80,158,37,34,28,248,22,51,248,22,172,3,248,22,64,23,198,2,27,
249,22,2,32,0,89,162,8,44,35,41,9,222,33,39,248,22,178,3,248,22,
88,23,200,2,250,22,73,2,22,248,22,73,249,22,73,248,22,73,248,22,64,
23,204,2,250,22,74,2,23,249,22,2,22,64,23,204,2,248,22,90,23,206,
2,249,22,63,248,22,64,23,202,1,249,22,2,22,88,23,200,1,250,22,74,
2,20,249,22,2,32,0,89,162,42,35,45,9,222,33,40,248,22,178,3,248,
22,64,201,248,22,65,198,27,248,22,178,3,194,249,22,63,248,22,73,248,22,
64,196,248,22,65,195,27,248,22,65,248,22,178,3,23,197,1,249,22,171,3,
80,158,37,34,250,22,74,2,22,249,22,2,32,0,89,162,42,35,45,9,222,
33,42,248,22,178,3,248,22,64,201,248,22,65,198,27,248,22,65,248,22,178,
3,196,27,248,22,178,3,248,22,64,195,249,22,171,3,80,158,38,34,28,248,
22,71,195,250,22,74,2,20,9,248,22,65,199,250,22,73,2,5,248,22,73,
248,22,64,199,250,22,74,2,4,248,22,65,201,248,22,65,202,27,248,22,65,
248,22,178,3,23,197,1,27,249,22,1,22,77,249,22,2,22,178,3,248,22,
178,3,248,22,64,199,249,22,171,3,80,158,38,34,251,22,73,1,22,119,105,
116,104,45,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114,107,2,
24,250,22,74,1,23,101,120,116,101,110,100,45,112,97,114,97,109,101,116,101,
114,105,122,97,116,105,111,110,21,95,1,27,99,111,110,116,105,110,117,97,116,
105,111,110,45,109,97,114,107,45,115,101,116,45,102,105,114,115,116,11,2,24,
201,250,22,74,2,20,9,248,22,65,203,27,248,22,65,248,22,178,3,23,197,
1,28,248,22,71,23,194,2,20,15,159,35,34,35,249,22,171,3,80,158,37,
34,27,248,22,178,3,248,22,64,23,198,2,28,249,22,138,8,62,61,62,248,
22,172,3,248,22,88,23,197,2,250,22,73,2,20,248,22,73,249,22,73,21,
93,2,25,248,22,64,199,250,22,74,2,7,249,22,73,2,25,249,22,73,248,
22,97,203,2,25,248,22,65,202,251,22,73,2,17,28,249,22,138,8,248,22,
172,3,248,22,64,23,201,2,64,101,108,115,101,10,248,22,64,23,198,2,250,
22,74,2,20,9,248,22,65,23,201,1,249,22,63,2,7,248,22,65,23,203,
1,99,8,31,8,30,8,29,8,28,8,27,16,4,11,11,2,18,3,1,7,
101,110,118,55,48,49,51,16,4,11,11,2,19,3,1,7,101,110,118,55,48,
49,52,18,158,94,10,64,118,111,105,100,8,47,27,248,22,65,248,22,178,3,
196,249,22,171,3,80,158,37,34,28,248,22,51,248,22,172,3,248,22,64,197,
250,22,73,2,26,248,22,73,248,22,64,199,248,22,88,198,27,248,22,172,3,
248,22,64,197,250,22,73,2,26,248,22,73,248,22,64,197,250,22,74,2,23,
248,22,65,199,248,22,65,202,159,34,20,103,159,34,16,1,20,24,2,1,16,
0,83,158,40,20,100,137,69,35,37,109,105,110,45,115,116,120,2,2,10,11,
10,34,80,158,34,34,20,103,159,34,16,0,16,0,11,11,16,0,34,11,37,
34,11,16,10,9,9,9,9,9,9,9,9,9,9,16,10,2,3,2,4,2,
5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,16,10,11,11,11,11,
11,11,11,11,11,11,16,10,2,3,2,4,2,5,2,6,2,7,2,8,2,
9,2,10,2,11,2,12,34,44,35,11,11,16,0,16,0,16,0,34,34,11,
11,11,16,0,16,0,16,0,34,34,16,11,16,5,93,2,13,20,15,159,34,
34,34,34,20,103,159,34,16,0,16,1,33,32,10,16,5,93,2,12,89,162,
8,44,35,51,9,223,0,33,33,34,20,103,159,34,16,1,20,25,159,35,2,
2,2,13,16,0,11,16,5,93,2,6,89,162,8,44,35,51,9,223,0,33,
34,34,20,103,159,34,16,1,20,25,159,35,2,2,2,13,16,0,11,16,5,
93,2,8,89,162,8,44,35,51,9,223,0,33,35,34,20,103,159,34,16,1,
20,25,159,35,2,2,2,13,16,1,33,36,11,16,5,93,2,10,89,162,8,
44,35,54,9,223,0,33,37,34,20,103,159,34,16,1,20,25,159,35,2,2,
2,13,16,1,33,38,11,16,5,93,2,5,89,162,8,44,35,56,9,223,0,
33,41,34,20,103,159,34,16,1,20,25,159,35,2,2,2,13,16,0,11,16,
5,93,2,9,89,162,8,44,35,51,9,223,0,33,43,34,20,103,159,34,16,
1,20,25,159,35,2,2,2,13,16,0,11,16,5,93,2,4,89,162,8,44,
35,52,9,223,0,33,44,34,20,103,159,34,16,1,20,25,159,35,2,2,2,
13,16,0,11,16,5,93,2,3,89,162,8,44,35,53,9,223,0,33,45,34,
20,103,159,34,16,1,20,25,159,35,2,2,2,13,16,0,11,16,5,93,2,
7,89,162,8,44,35,56,9,223,0,33,46,34,20,103,159,34,16,1,20,25,
159,35,2,2,2,13,16,1,33,48,11,16,5,93,2,11,89,162,8,44,35,
52,9,223,0,33,49,34,20,103,159,34,16,1,20,25,159,35,2,2,2,13,
16,0,11,16,0,94,2,15,2,16,93,2,15,9,9,34,0};
EVAL_ONE_SIZED_STR((char *)expr, 2032);
}
{
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,49,49,61,0,0,0,1,0,0,3,0,
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,49,51,61,0,0,0,1,0,0,3,0,
16,0,21,0,38,0,53,0,71,0,87,0,97,0,115,0,135,0,151,0,169,
0,200,0,229,0,251,0,9,1,15,1,29,1,34,1,44,1,52,1,80,1,
112,1,157,1,202,1,226,1,9,2,11,2,20,2,71,2,87,3,96,3,126,
3,170,4,242,4,58,5,146,5,158,5,201,5,217,5,204,6,218,6,69,7,
8,8,202,8,209,8,215,8,75,9,87,9,155,9,1,10,14,10,36,10,170,
10,36,11,37,12,45,12,53,12,79,12,158,12,0,0,209,15,0,0,29,11,
112,1,157,1,202,1,226,1,9,2,11,2,20,2,77,2,167,3,176,3,217,
3,51,5,155,5,3,6,119,6,133,6,176,6,192,6,42,8,56,8,219,8,
226,9,232,10,239,10,245,10,117,11,129,11,242,11,88,12,101,12,123,12,75,
13,235,13,50,15,58,15,66,15,92,15,193,15,0,0,251,18,0,0,29,11,
11,72,112,97,116,104,45,115,116,114,105,110,103,63,64,98,115,98,115,76,110,
111,114,109,97,108,45,99,97,115,101,45,112,97,116,104,74,45,99,104,101,99,
107,45,114,101,108,112,97,116,104,77,45,99,104,101,99,107,45,99,111,108,108,
@ -133,199 +132,238 @@
99,97,110,110,111,116,32,97,100,100,32,97,32,115,117,102,102,105,120,32,116,
111,32,97,32,114,111,111,116,32,112,97,116,104,58,32,5,0,68,35,37,107,
101,114,110,101,108,27,20,14,159,80,158,35,49,250,80,158,38,50,249,22,27,
11,80,158,40,49,22,138,12,10,248,22,186,4,195,28,248,22,164,5,193,12,
87,94,248,22,141,8,193,248,80,159,36,53,35,195,28,248,22,71,194,9,27,
248,22,64,195,27,28,248,22,183,12,194,193,28,248,22,182,12,194,249,22,184,
12,195,250,80,158,41,47,248,22,134,13,2,20,11,10,250,80,158,39,47,248,
22,134,13,2,20,196,10,28,192,249,22,63,248,22,186,12,249,22,184,12,197,
247,22,135,13,27,248,22,65,199,28,248,22,71,193,9,27,248,22,64,194,27,
28,248,22,183,12,194,193,28,248,22,182,12,194,249,22,184,12,195,250,80,158,
46,47,248,22,134,13,2,20,11,10,250,80,158,44,47,248,22,134,13,2,20,
196,10,28,192,249,22,63,248,22,186,12,249,22,184,12,197,247,22,135,13,248,
80,159,44,52,35,248,22,65,198,248,80,159,42,52,35,248,22,65,196,27,248,
22,65,197,28,248,22,71,193,9,27,248,22,64,194,27,28,248,22,183,12,194,
193,28,248,22,182,12,194,249,22,184,12,195,250,80,158,44,47,248,22,134,13,
2,20,11,10,250,80,158,42,47,248,22,134,13,2,20,196,10,28,192,249,22,
63,248,22,186,12,249,22,184,12,197,247,22,135,13,248,80,159,42,52,35,248,
22,65,198,248,80,159,40,52,35,248,22,65,196,249,80,159,36,37,35,2,7,
195,27,248,22,159,12,194,28,192,192,28,248,22,133,6,194,27,248,22,181,12,
195,28,192,192,248,22,182,12,195,11,87,94,28,28,248,22,160,12,194,10,27,
248,22,159,12,195,28,192,192,28,248,22,133,6,195,27,248,22,181,12,196,28,
192,192,248,22,182,12,196,11,12,250,22,168,8,76,110,111,114,109,97,108,45,
112,97,116,104,45,99,97,115,101,6,42,42,112,97,116,104,32,40,102,111,114,
32,97,110,121,32,115,121,115,116,101,109,41,32,111,114,32,118,97,108,105,100,
45,112,97,116,104,32,115,116,114,105,110,103,196,28,28,248,22,160,12,194,249,
22,138,8,248,22,161,12,196,2,21,249,22,138,8,247,22,152,7,2,21,27,
28,248,22,133,6,195,194,248,22,142,7,248,22,164,12,196,28,249,22,147,13,
0,21,35,114,120,34,94,91,92,92,93,91,92,92,93,91,63,93,91,92,92,
93,34,194,28,248,22,133,6,195,248,22,167,12,195,194,27,248,22,172,6,194,
249,22,168,12,248,22,145,7,250,22,153,13,0,6,35,114,120,34,47,34,28,
249,22,147,13,0,22,35,114,120,34,91,47,92,92,93,91,46,32,93,43,91,
47,92,92,93,42,36,34,200,198,250,22,153,13,0,19,35,114,120,34,91,32,
46,93,43,40,91,47,92,92,93,42,41,36,34,201,6,2,2,92,49,80,158,
42,35,2,21,28,248,22,133,6,194,248,22,167,12,194,193,87,94,28,27,248,
22,159,12,195,28,192,192,28,248,22,133,6,195,27,248,22,181,12,196,28,192,
192,248,22,182,12,196,11,12,250,22,168,8,195,2,22,196,28,248,22,181,12,
194,12,248,22,183,10,249,22,128,10,248,22,162,6,250,22,181,6,2,23,199,
200,247,22,23,87,94,28,27,248,22,159,12,195,28,192,192,28,248,22,133,6,
195,27,248,22,181,12,196,28,192,192,248,22,182,12,196,11,12,250,22,168,8,
195,2,22,196,28,248,22,181,12,194,12,248,22,183,10,249,22,128,10,248,22,
162,6,250,22,181,6,2,23,199,200,247,22,23,87,94,87,94,28,27,248,22,
159,12,195,28,192,192,28,248,22,133,6,195,27,248,22,181,12,196,28,192,192,
248,22,182,12,196,11,12,250,22,168,8,195,2,22,196,28,248,22,181,12,194,
12,248,22,183,10,249,22,128,10,248,22,162,6,250,22,181,6,2,23,199,200,
247,22,23,249,22,3,89,162,34,35,48,9,223,2,33,36,196,248,22,183,10,
249,22,158,10,195,247,22,23,87,94,87,94,249,80,159,36,37,35,2,7,195,
11,80,158,40,49,22,138,12,10,248,22,186,4,23,196,2,28,248,22,164,5,
23,194,2,12,87,94,248,22,141,8,23,194,1,248,80,159,36,53,35,195,28,
248,22,71,23,195,2,9,27,248,22,64,23,196,2,27,28,248,22,183,12,23,
195,2,23,194,1,28,248,22,182,12,23,195,2,249,22,184,12,23,196,1,250,
80,158,41,47,248,22,134,13,2,20,11,10,250,80,158,39,47,248,22,134,13,
2,20,23,197,1,10,28,23,193,2,249,22,63,248,22,186,12,249,22,184,12,
23,198,1,247,22,135,13,27,248,22,65,23,200,1,28,248,22,71,23,194,2,
9,27,248,22,64,23,195,2,27,28,248,22,183,12,23,195,2,23,194,1,28,
248,22,182,12,23,195,2,249,22,184,12,23,196,1,250,80,158,46,47,248,22,
134,13,2,20,11,10,250,80,158,44,47,248,22,134,13,2,20,23,197,1,10,
28,23,193,2,249,22,63,248,22,186,12,249,22,184,12,23,198,1,247,22,135,
13,248,80,159,44,52,35,248,22,65,23,199,1,87,94,23,193,1,248,80,159,
42,52,35,248,22,65,23,197,1,87,94,23,193,1,27,248,22,65,23,198,1,
28,248,22,71,23,194,2,9,27,248,22,64,23,195,2,27,28,248,22,183,12,
23,195,2,23,194,1,28,248,22,182,12,23,195,2,249,22,184,12,23,196,1,
250,80,158,44,47,248,22,134,13,2,20,11,10,250,80,158,42,47,248,22,134,
13,2,20,23,197,1,10,28,23,193,2,249,22,63,248,22,186,12,249,22,184,
12,23,198,1,247,22,135,13,248,80,159,42,52,35,248,22,65,23,199,1,248,
80,159,40,52,35,248,22,65,196,249,80,159,36,37,35,2,7,195,27,248,22,
159,12,23,195,2,28,23,193,2,192,87,94,23,193,1,28,248,22,133,6,23,
195,2,27,248,22,181,12,195,28,192,192,248,22,182,12,195,11,87,94,28,28,
248,22,160,12,23,195,2,10,27,248,22,159,12,23,196,2,28,23,193,2,192,
87,94,23,193,1,28,248,22,133,6,23,196,2,27,248,22,181,12,23,197,2,
28,23,193,2,192,87,94,23,193,1,248,22,182,12,23,197,2,11,12,250,22,
168,8,76,110,111,114,109,97,108,45,112,97,116,104,45,99,97,115,101,6,42,
42,112,97,116,104,32,40,102,111,114,32,97,110,121,32,115,121,115,116,101,109,
41,32,111,114,32,118,97,108,105,100,45,112,97,116,104,32,115,116,114,105,110,
103,23,197,2,28,28,248,22,160,12,23,195,2,249,22,138,8,248,22,161,12,
23,197,2,2,21,249,22,138,8,247,22,152,7,2,21,27,28,248,22,133,6,
23,196,2,23,195,2,248,22,142,7,248,22,164,12,23,197,2,28,249,22,147,
13,0,21,35,114,120,34,94,91,92,92,93,91,92,92,93,91,63,93,91,92,
92,93,34,23,195,2,28,248,22,133,6,195,248,22,167,12,195,194,27,248,22,
172,6,23,195,1,249,22,168,12,248,22,145,7,250,22,153,13,0,6,35,114,
120,34,47,34,28,249,22,147,13,0,22,35,114,120,34,91,47,92,92,93,91,
46,32,93,43,91,47,92,92,93,42,36,34,23,201,2,23,199,1,250,22,153,
13,0,19,35,114,120,34,91,32,46,93,43,40,91,47,92,92,93,42,41,36,
34,23,202,1,6,2,2,92,49,80,158,42,35,2,21,28,248,22,133,6,194,
248,22,167,12,194,193,87,94,28,27,248,22,159,12,23,196,2,28,23,193,2,
192,87,94,23,193,1,28,248,22,133,6,23,196,2,27,248,22,181,12,23,197,
2,28,23,193,2,192,87,94,23,193,1,248,22,182,12,23,197,2,11,12,250,
22,168,8,23,196,2,2,22,23,197,2,28,248,22,181,12,23,195,2,12,248,
22,183,10,249,22,128,10,248,22,162,6,250,22,181,6,2,23,23,200,1,23,
201,1,247,22,23,87,94,28,27,248,22,159,12,23,196,2,28,23,193,2,192,
87,94,23,193,1,28,248,22,133,6,23,196,2,27,248,22,181,12,23,197,2,
28,23,193,2,192,87,94,23,193,1,248,22,182,12,23,197,2,11,12,250,22,
168,8,23,196,2,2,22,23,197,2,28,248,22,181,12,23,195,2,12,248,22,
183,10,249,22,128,10,248,22,162,6,250,22,181,6,2,23,23,200,1,23,201,
1,247,22,23,87,94,87,94,28,27,248,22,159,12,23,196,2,28,23,193,2,
192,87,94,23,193,1,28,248,22,133,6,23,196,2,27,248,22,181,12,23,197,
2,28,23,193,2,192,87,94,23,193,1,248,22,182,12,23,197,2,11,12,250,
22,168,8,195,2,22,23,197,2,28,248,22,181,12,23,195,2,12,248,22,183,
10,249,22,128,10,248,22,162,6,250,22,181,6,2,23,199,23,201,1,247,22,
23,249,22,3,89,162,42,35,48,9,223,2,33,36,196,248,22,183,10,249,22,
158,10,23,196,1,247,22,23,87,94,87,94,249,80,159,36,37,35,2,7,195,
249,22,3,80,159,36,51,35,196,251,80,159,38,40,35,2,7,32,0,89,162,
34,35,43,9,222,33,38,197,198,32,40,89,162,34,40,57,65,99,108,111,111,
112,222,33,41,28,248,22,71,198,248,195,251,22,181,6,2,24,198,28,248,22,
71,202,200,250,22,1,22,177,12,203,204,197,27,249,22,177,12,248,22,64,201,
198,28,248,22,172,12,193,27,250,22,1,22,177,12,196,201,28,248,22,172,12,
193,192,27,248,22,65,201,28,248,22,71,193,248,198,251,22,181,6,2,24,201,
28,248,22,71,205,203,250,22,1,22,177,12,206,23,15,200,27,249,22,177,12,
248,22,64,196,201,28,248,22,172,12,193,27,250,22,1,22,177,12,196,204,28,
248,22,172,12,193,192,253,2,40,203,204,205,206,23,15,248,22,65,201,253,2,
40,202,203,204,205,206,248,22,65,200,27,248,22,65,200,28,248,22,71,193,248,
197,251,22,181,6,2,24,200,28,248,22,71,204,202,250,22,1,22,177,12,205,
206,199,27,249,22,177,12,248,22,64,196,200,28,248,22,172,12,193,27,250,22,
1,22,177,12,196,203,28,248,22,172,12,193,192,253,2,40,202,203,204,205,206,
248,22,65,201,253,2,40,201,202,203,204,205,248,22,65,200,27,247,22,136,13,
253,2,40,198,199,200,201,202,198,87,95,28,28,248,22,160,12,193,10,27,248,
22,159,12,194,28,192,192,28,248,22,133,6,194,27,248,22,181,12,195,28,192,
192,248,22,182,12,195,11,12,252,22,168,8,199,2,25,34,197,198,28,28,248,
22,133,6,194,10,248,22,185,6,194,12,252,22,168,8,199,2,26,35,197,198,
91,159,37,11,90,161,37,34,11,248,22,180,12,196,87,94,28,192,12,250,22,
169,8,200,2,27,198,249,22,7,194,195,91,159,36,11,90,161,36,34,11,87,
95,28,28,248,22,160,12,195,10,27,248,22,159,12,196,28,192,192,28,248,22,
133,6,196,27,248,22,181,12,197,28,192,192,248,22,182,12,197,11,12,252,22,
168,8,2,10,2,25,34,199,200,28,28,248,22,133,6,196,10,248,22,185,6,
196,12,252,22,168,8,2,10,2,26,35,199,200,91,159,37,11,90,161,37,34,
11,248,22,180,12,198,87,94,28,192,12,250,22,169,8,2,10,2,27,200,249,
22,7,194,195,27,249,22,169,12,250,22,152,13,0,18,35,114,120,35,34,40,
91,46,93,91,94,46,93,42,124,41,36,34,248,22,165,12,200,28,248,22,133,
6,202,249,22,145,7,203,8,63,201,28,248,22,160,12,198,248,22,161,12,198,
247,22,162,12,28,248,22,159,12,194,249,22,177,12,195,194,192,91,159,36,11,
90,161,36,34,11,87,95,28,28,248,22,160,12,195,10,27,248,22,159,12,196,
28,192,192,28,248,22,133,6,196,27,248,22,181,12,197,28,192,192,248,22,182,
12,197,11,12,252,22,168,8,2,11,2,25,34,199,200,28,28,248,22,133,6,
196,10,248,22,185,6,196,12,252,22,168,8,2,11,2,26,35,199,200,91,159,
37,11,90,161,37,34,11,248,22,180,12,198,87,94,28,192,12,250,22,169,8,
2,11,2,27,200,249,22,7,194,195,27,249,22,169,12,249,22,131,7,250,22,
153,13,0,9,35,114,120,35,34,91,46,93,34,248,22,165,12,202,6,1,1,
95,28,248,22,133,6,201,249,22,145,7,202,8,63,200,28,248,22,160,12,198,
248,22,161,12,198,247,22,162,12,28,248,22,159,12,194,249,22,177,12,195,194,
192,249,247,22,184,5,194,11,248,80,158,35,45,9,27,247,22,138,13,249,80,
158,37,46,28,194,27,248,22,150,7,6,11,11,80,76,84,67,79,76,76,69,
67,84,83,28,192,192,6,0,0,6,0,0,27,28,195,250,22,177,12,248,22,
42,35,43,9,222,33,38,197,198,32,40,89,162,42,40,57,65,99,108,111,111,
112,222,33,41,28,248,22,71,23,199,2,87,94,23,198,1,248,23,196,1,251,
22,181,6,2,24,23,199,1,28,248,22,71,23,203,2,87,94,23,202,1,23,
201,1,250,22,1,22,177,12,23,204,1,23,205,1,23,198,1,27,249,22,177,
12,248,22,64,23,202,2,23,199,2,28,248,22,172,12,23,194,2,27,250,22,
1,22,177,12,23,197,1,23,202,2,28,248,22,172,12,23,194,2,192,87,94,
23,193,1,27,248,22,65,23,202,1,28,248,22,71,23,194,2,87,94,23,193,
1,248,23,199,1,251,22,181,6,2,24,23,202,1,28,248,22,71,23,206,2,
87,94,23,205,1,23,204,1,250,22,1,22,177,12,23,207,1,23,208,1,23,
201,1,27,249,22,177,12,248,22,64,23,197,2,23,202,2,28,248,22,172,12,
23,194,2,27,250,22,1,22,177,12,23,197,1,204,28,248,22,172,12,193,192,
253,2,40,203,204,205,206,23,15,248,22,65,201,253,2,40,202,203,204,205,206,
248,22,65,200,87,94,23,193,1,27,248,22,65,23,201,1,28,248,22,71,23,
194,2,87,94,23,193,1,248,23,198,1,251,22,181,6,2,24,23,201,1,28,
248,22,71,23,205,2,87,94,23,204,1,23,203,1,250,22,1,22,177,12,23,
206,1,23,207,1,23,200,1,27,249,22,177,12,248,22,64,23,197,2,23,201,
2,28,248,22,172,12,23,194,2,27,250,22,1,22,177,12,23,197,1,203,28,
248,22,172,12,193,192,253,2,40,202,203,204,205,206,248,22,65,201,253,2,40,
201,202,203,204,205,248,22,65,200,27,247,22,136,13,253,2,40,198,199,200,201,
202,198,87,95,28,28,248,22,160,12,23,194,2,10,27,248,22,159,12,23,195,
2,28,23,193,2,192,87,94,23,193,1,28,248,22,133,6,23,195,2,27,248,
22,181,12,23,196,2,28,23,193,2,192,87,94,23,193,1,248,22,182,12,23,
196,2,11,12,252,22,168,8,23,200,2,2,25,34,23,198,2,23,199,2,28,
28,248,22,133,6,23,195,2,10,248,22,185,6,23,195,2,87,94,23,194,1,
12,252,22,168,8,23,200,2,2,26,35,23,198,2,23,199,1,91,159,37,11,
90,161,37,34,11,248,22,180,12,23,197,2,87,94,23,195,1,87,94,28,192,
12,250,22,169,8,23,201,1,2,27,23,199,1,249,22,7,194,195,91,159,36,
11,90,161,36,34,11,87,95,28,28,248,22,160,12,23,196,2,10,27,248,22,
159,12,23,197,2,28,23,193,2,192,87,94,23,193,1,28,248,22,133,6,23,
197,2,27,248,22,181,12,23,198,2,28,23,193,2,192,87,94,23,193,1,248,
22,182,12,23,198,2,11,12,252,22,168,8,2,10,2,25,34,23,200,2,23,
201,2,28,28,248,22,133,6,23,197,2,10,248,22,185,6,23,197,2,12,252,
22,168,8,2,10,2,26,35,23,200,2,23,201,2,91,159,37,11,90,161,37,
34,11,248,22,180,12,23,199,2,87,94,23,195,1,87,94,28,23,193,2,12,
250,22,169,8,2,10,2,27,23,201,2,249,22,7,23,195,1,23,196,1,27,
249,22,169,12,250,22,152,13,0,18,35,114,120,35,34,40,91,46,93,91,94,
46,93,42,124,41,36,34,248,22,165,12,23,201,1,28,248,22,133,6,23,203,
2,249,22,145,7,23,204,1,8,63,23,202,1,28,248,22,160,12,23,199,2,
248,22,161,12,23,199,1,87,94,23,198,1,247,22,162,12,28,248,22,159,12,
194,249,22,177,12,195,194,192,91,159,36,11,90,161,36,34,11,87,95,28,28,
248,22,160,12,23,196,2,10,27,248,22,159,12,23,197,2,28,23,193,2,192,
87,94,23,193,1,28,248,22,133,6,23,197,2,27,248,22,181,12,23,198,2,
28,23,193,2,192,87,94,23,193,1,248,22,182,12,23,198,2,11,12,252,22,
168,8,2,11,2,25,34,23,200,2,23,201,2,28,28,248,22,133,6,23,197,
2,10,248,22,185,6,23,197,2,12,252,22,168,8,2,11,2,26,35,23,200,
2,23,201,2,91,159,37,11,90,161,37,34,11,248,22,180,12,23,199,2,87,
94,23,195,1,87,94,28,23,193,2,12,250,22,169,8,2,11,2,27,23,201,
2,249,22,7,23,195,1,23,196,1,27,249,22,169,12,249,22,131,7,250,22,
153,13,0,9,35,114,120,35,34,91,46,93,34,248,22,165,12,23,203,1,6,
1,1,95,28,248,22,133,6,23,202,2,249,22,145,7,23,203,1,8,63,23,
201,1,28,248,22,160,12,23,199,2,248,22,161,12,23,199,1,87,94,23,198,
1,247,22,162,12,28,248,22,159,12,194,249,22,177,12,195,194,192,249,247,22,
184,5,194,11,248,80,158,35,45,9,27,247,22,138,13,249,80,158,37,46,28,
23,195,2,27,248,22,150,7,6,11,11,80,76,84,67,79,76,76,69,67,84,
83,28,192,192,6,0,0,6,0,0,27,28,23,196,1,250,22,177,12,248,22,
134,13,69,97,100,100,111,110,45,100,105,114,247,22,148,7,6,8,8,99,111,
108,108,101,99,116,115,11,27,248,80,159,40,52,35,249,22,77,201,248,22,73,
248,22,134,13,72,99,111,108,108,101,99,116,115,45,100,105,114,28,193,249,22,
63,195,194,192,32,49,89,162,34,37,49,2,19,222,33,50,27,249,22,145,13,
196,197,28,192,27,248,22,88,194,27,250,2,49,198,199,248,22,97,198,28,249,
22,191,6,195,2,28,249,22,77,197,194,249,22,63,248,22,168,12,196,194,28,
249,22,191,6,197,2,28,249,22,77,195,9,249,22,63,248,22,168,12,198,9,
87,95,28,28,248,22,185,6,194,10,248,22,133,6,194,12,250,22,168,8,2,
14,6,21,21,98,121,116,101,32,115,116,114,105,110,103,32,111,114,32,115,116,
114,105,110,103,196,28,28,248,22,72,195,249,22,4,22,159,12,196,11,12,250,
22,168,8,2,14,6,13,13,108,105,115,116,32,111,102,32,112,97,116,104,115,
197,250,2,49,197,195,28,248,22,133,6,197,248,22,144,7,197,196,32,52,89,
162,8,36,38,56,2,19,222,33,55,32,53,89,162,8,36,37,53,70,102,111,
117,110,100,45,101,120,101,99,222,33,54,28,192,91,159,37,11,90,161,37,34,
11,248,22,180,12,198,27,28,197,27,248,22,185,12,200,28,249,22,140,8,194,
201,11,28,248,22,181,12,193,250,2,53,200,201,249,22,177,12,199,197,250,2,
53,200,201,195,11,28,192,192,27,28,248,22,159,12,195,27,249,22,177,12,197,
200,28,28,248,22,172,12,193,10,248,22,171,12,193,192,11,11,28,192,192,28,
198,11,27,248,22,185,12,201,28,249,22,140,8,194,202,11,28,248,22,181,12,
193,250,2,53,201,202,249,22,177,12,200,197,250,2,53,201,202,195,194,28,248,
22,71,196,11,27,248,22,184,12,248,22,64,198,27,249,22,177,12,195,196,28,
248,22,171,12,193,250,2,53,198,199,195,27,248,22,65,199,28,248,22,71,193,
11,27,248,22,184,12,248,22,64,195,27,249,22,177,12,195,199,28,248,22,171,
12,193,250,2,53,201,202,195,27,248,22,65,196,28,248,22,71,193,11,27,248,
22,184,12,248,22,64,195,27,249,22,177,12,195,202,28,248,22,171,12,193,250,
2,53,204,205,195,251,2,52,204,205,206,248,22,65,199,87,95,28,27,248,22,
159,12,195,28,192,192,28,248,22,133,6,195,27,248,22,181,12,196,28,192,192,
248,22,182,12,196,11,12,250,22,168,8,2,15,6,25,25,112,97,116,104,32,
111,114,32,115,116,114,105,110,103,32,40,115,97,110,115,32,110,117,108,41,196,
28,28,194,28,27,248,22,159,12,196,28,192,192,28,248,22,133,6,196,27,248,
22,181,12,197,28,192,192,248,22,182,12,197,11,248,22,181,12,195,11,10,12,
250,22,168,8,2,15,6,29,29,35,102,32,111,114,32,114,101,108,97,116,105,
118,101,32,112,97,116,104,32,111,114,32,115,116,114,105,110,103,197,28,28,248,
22,181,12,194,91,159,37,11,90,161,37,34,11,248,22,180,12,197,249,22,138,
8,194,68,114,101,108,97,116,105,118,101,11,27,248,22,150,7,6,4,4,80,
65,84,72,251,2,52,198,199,200,28,196,27,249,80,158,42,46,199,9,28,249,
22,138,8,247,22,152,7,2,21,249,22,63,248,22,168,12,5,1,46,194,192,
9,27,248,22,184,12,195,28,248,22,171,12,193,250,2,53,198,199,195,11,250,
80,158,37,47,196,197,11,250,80,158,37,47,196,11,11,87,94,249,22,189,5,
247,22,166,4,195,248,22,140,5,249,22,151,3,34,249,22,135,3,197,198,27,
248,22,134,13,2,20,27,249,80,158,38,47,195,11,27,27,248,22,154,3,198,
28,192,192,34,27,27,248,22,154,3,200,28,192,192,34,27,249,22,183,4,197,
89,162,34,34,46,9,224,4,3,33,59,27,248,22,170,4,194,87,94,248,22,
134,4,21,94,2,17,2,29,248,80,159,41,53,35,193,159,34,20,102,159,34,
16,1,20,24,65,98,101,103,105,110,16,0,83,158,40,20,99,134,67,35,37,
117,116,105,108,115,2,1,11,10,10,10,10,10,41,80,158,34,34,20,102,159,
37,16,17,30,2,1,2,2,193,30,2,1,2,3,193,30,2,1,2,4,193,
30,2,1,2,5,193,30,2,1,2,6,193,30,2,1,2,7,193,30,2,1,
2,8,193,30,2,1,2,9,193,30,2,1,2,10,193,30,2,1,2,11,193,
30,2,1,2,12,193,30,2,1,2,13,193,30,2,1,2,14,193,30,2,1,
2,15,193,30,2,1,2,16,193,30,2,18,1,20,112,97,114,97,109,101,116,
101,114,105,122,97,116,105,111,110,45,107,101,121,4,30,2,18,1,23,101,120,
116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,
3,16,0,11,11,16,4,2,6,2,5,2,3,2,9,38,11,11,11,16,0,
16,0,16,0,34,34,11,11,16,0,16,0,16,0,34,34,11,16,11,9,9,
9,9,9,9,9,9,9,9,9,16,11,2,8,2,7,2,16,2,15,2,13,
2,12,2,4,2,11,2,14,2,10,2,2,16,11,11,11,11,11,11,11,11,
11,11,11,11,16,11,2,8,2,7,2,16,2,15,2,13,2,12,2,4,2,
11,2,14,2,10,2,2,45,45,16,0,16,18,83,158,34,16,2,89,162,34,
35,47,2,19,223,0,33,30,80,159,34,53,35,83,158,34,16,2,89,162,34,
35,54,2,19,223,0,33,31,80,159,34,52,35,83,158,34,16,2,89,162,8,
36,35,43,9,223,0,33,32,80,159,34,51,35,83,158,34,16,2,32,0,89,
162,34,35,43,2,2,222,33,33,80,159,34,34,35,83,158,34,16,2,249,22,
135,6,7,92,7,92,80,159,34,35,35,83,158,34,16,2,89,162,34,35,52,
2,4,223,0,33,34,80,159,34,36,35,83,158,34,16,2,32,0,89,162,34,
36,48,2,5,222,33,35,80,159,34,37,35,83,158,34,16,2,32,0,89,162,
34,37,49,2,6,222,33,37,80,159,34,38,35,83,158,34,16,2,89,162,8,
37,36,46,2,7,223,0,33,39,80,159,34,39,35,83,158,34,16,2,32,0,
89,162,34,38,50,2,8,222,33,42,80,159,34,40,35,83,158,34,16,2,32,
0,89,162,34,37,48,2,9,222,33,43,80,159,34,41,35,83,158,34,16,2,
32,0,89,162,34,36,51,2,10,222,33,44,80,159,34,42,35,83,158,34,16,
2,32,0,89,162,34,36,52,2,11,222,33,45,80,159,34,43,35,83,158,34,
16,2,32,0,89,162,34,35,42,2,12,222,33,46,80,159,34,44,35,83,158,
34,16,2,83,158,37,20,96,95,2,13,89,162,34,34,41,9,223,0,33,47,
89,162,34,35,51,9,223,0,33,48,80,159,34,45,35,83,158,34,16,2,27,
248,22,141,13,248,22,144,7,27,28,249,22,138,8,247,22,152,7,2,21,6,
1,1,59,6,1,1,58,250,22,181,6,6,14,14,40,91,94,126,97,93,42,
41,126,97,40,46,42,41,195,195,89,162,34,36,46,2,14,223,0,33,51,80,
159,34,46,35,83,158,34,16,2,83,158,37,20,96,96,2,15,89,162,8,36,
37,52,9,223,0,33,56,89,162,34,36,45,9,223,0,33,57,89,162,34,35,
44,9,223,0,33,58,80,159,34,47,35,83,158,34,16,2,89,162,34,36,49,
2,16,223,0,33,60,80,159,34,48,35,94,29,94,2,17,2,29,11,29,94,
2,17,69,35,37,109,105,110,45,115,116,120,11,9,9,0};
EVAL_ONE_SIZED_STR((char *)expr, 4194);
108,108,101,99,116,115,11,27,248,80,159,40,52,35,249,22,77,23,202,1,248,
22,73,248,22,134,13,72,99,111,108,108,101,99,116,115,45,100,105,114,28,23,
194,2,249,22,63,23,196,1,23,195,1,192,32,49,89,162,42,37,49,2,19,
222,33,50,27,249,22,145,13,23,197,2,23,198,2,28,23,193,2,87,94,23,
196,1,27,248,22,88,23,195,2,27,250,2,49,23,199,2,23,200,1,248,22,
97,23,199,1,28,249,22,191,6,23,196,2,2,28,249,22,77,197,194,87,94,
23,196,1,249,22,63,248,22,168,12,23,197,1,194,87,95,23,195,1,23,193,
1,28,249,22,191,6,23,198,2,2,28,249,22,77,195,9,87,94,23,194,1,
249,22,63,248,22,168,12,23,199,1,9,87,95,28,28,248,22,185,6,194,10,
248,22,133,6,194,12,250,22,168,8,2,14,6,21,21,98,121,116,101,32,115,
116,114,105,110,103,32,111,114,32,115,116,114,105,110,103,196,28,28,248,22,72,
195,249,22,4,22,159,12,196,11,12,250,22,168,8,2,14,6,13,13,108,105,
115,116,32,111,102,32,112,97,116,104,115,197,250,2,49,197,195,28,248,22,133,
6,197,248,22,144,7,197,196,32,52,89,162,8,44,38,56,2,19,222,33,55,
32,53,89,162,8,44,37,53,70,102,111,117,110,100,45,101,120,101,99,222,33,
54,28,23,193,2,91,159,37,11,90,161,37,34,11,248,22,180,12,23,199,2,
87,95,23,195,1,23,194,1,27,28,23,198,2,27,248,22,185,12,23,201,2,
28,249,22,140,8,23,195,2,23,202,2,11,28,248,22,181,12,23,194,2,250,
2,53,23,201,2,23,202,2,249,22,177,12,23,200,2,23,198,1,250,2,53,
23,201,2,23,202,2,23,196,1,11,28,23,193,2,192,87,94,23,193,1,27,
28,248,22,159,12,23,196,2,27,249,22,177,12,23,198,2,23,201,2,28,28,
248,22,172,12,193,10,248,22,171,12,193,192,11,11,28,23,193,2,192,87,94,
23,193,1,28,23,199,2,11,27,248,22,185,12,23,202,2,28,249,22,140,8,
23,195,2,23,203,1,11,28,248,22,181,12,23,194,2,250,2,53,23,202,1,
23,203,1,249,22,177,12,23,201,1,23,198,1,250,2,53,201,202,195,194,28,
248,22,71,23,197,2,11,27,248,22,184,12,248,22,64,23,199,2,27,249,22,
177,12,23,196,1,23,197,2,28,248,22,171,12,23,194,2,250,2,53,198,199,
195,87,94,23,193,1,27,248,22,65,23,200,1,28,248,22,71,23,194,2,11,
27,248,22,184,12,248,22,64,23,196,2,27,249,22,177,12,23,196,1,23,200,
2,28,248,22,171,12,23,194,2,250,2,53,201,202,195,87,94,23,193,1,27,
248,22,65,23,197,1,28,248,22,71,23,194,2,11,27,248,22,184,12,248,22,
64,195,27,249,22,177,12,23,196,1,202,28,248,22,171,12,193,250,2,53,204,
205,195,251,2,52,204,205,206,248,22,65,199,87,95,28,27,248,22,159,12,23,
196,2,28,23,193,2,192,87,94,23,193,1,28,248,22,133,6,23,196,2,27,
248,22,181,12,23,197,2,28,23,193,2,192,87,94,23,193,1,248,22,182,12,
23,197,2,11,12,250,22,168,8,2,15,6,25,25,112,97,116,104,32,111,114,
32,115,116,114,105,110,103,32,40,115,97,110,115,32,110,117,108,41,23,197,2,
28,28,23,195,2,28,27,248,22,159,12,23,197,2,28,23,193,2,192,87,94,
23,193,1,28,248,22,133,6,23,197,2,27,248,22,181,12,23,198,2,28,23,
193,2,192,87,94,23,193,1,248,22,182,12,23,198,2,11,248,22,181,12,23,
196,2,11,10,12,250,22,168,8,2,15,6,29,29,35,102,32,111,114,32,114,
101,108,97,116,105,118,101,32,112,97,116,104,32,111,114,32,115,116,114,105,110,
103,23,198,2,28,28,248,22,181,12,23,195,2,91,159,37,11,90,161,37,34,
11,248,22,180,12,23,198,2,249,22,138,8,194,68,114,101,108,97,116,105,118,
101,11,27,248,22,150,7,6,4,4,80,65,84,72,251,2,52,23,199,1,23,
200,1,23,201,1,28,23,197,2,27,249,80,158,42,46,23,200,1,9,28,249,
22,138,8,247,22,152,7,2,21,249,22,63,248,22,168,12,5,1,46,23,195,
1,192,9,27,248,22,184,12,23,196,1,28,248,22,171,12,193,250,2,53,198,
199,195,11,250,80,158,37,47,196,197,11,250,80,158,37,47,196,11,11,87,94,
249,22,189,5,247,22,166,4,195,248,22,140,5,249,22,151,3,34,249,22,135,
3,197,198,27,248,22,134,13,2,20,27,249,80,158,38,47,23,196,1,11,27,
27,248,22,154,3,23,199,1,28,192,192,34,27,27,248,22,154,3,23,201,1,
28,192,192,34,27,249,22,183,4,23,198,1,83,158,38,20,97,95,89,162,42,
34,46,9,224,4,3,33,59,23,196,1,23,197,1,27,248,22,170,4,23,195,
1,87,94,248,22,134,4,21,94,2,17,2,29,248,80,159,41,53,35,193,159,
34,20,103,159,34,16,1,20,24,65,98,101,103,105,110,16,0,83,158,40,20,
100,137,67,35,37,117,116,105,108,115,2,1,11,10,10,41,80,158,34,34,20,
103,159,37,16,17,30,2,1,2,2,193,30,2,1,2,3,193,30,2,1,2,
4,193,30,2,1,2,5,193,30,2,1,2,6,193,30,2,1,2,7,193,30,
2,1,2,8,193,30,2,1,2,9,193,30,2,1,2,10,193,30,2,1,2,
11,193,30,2,1,2,12,193,30,2,1,2,13,193,30,2,1,2,14,193,30,
2,1,2,15,193,30,2,1,2,16,193,30,2,18,1,20,112,97,114,97,109,
101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,4,30,2,18,1,23,
101,120,116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,
111,110,3,16,0,11,11,16,4,2,6,2,5,2,3,2,9,38,11,37,34,
11,16,11,9,9,9,9,9,9,9,9,9,9,9,16,11,2,8,2,7,2,
16,2,15,2,13,2,12,2,4,2,11,2,14,2,10,2,2,16,11,11,11,
11,11,11,11,11,11,11,11,11,16,11,2,8,2,7,2,16,2,15,2,13,
2,12,2,4,2,11,2,14,2,10,2,2,45,45,35,11,11,16,0,16,0,
16,0,34,34,11,11,11,16,0,16,0,16,0,34,34,16,0,16,18,83,158,
34,16,2,89,162,42,35,47,2,19,223,0,33,30,80,159,34,53,35,83,158,
34,16,2,89,162,42,35,54,2,19,223,0,33,31,80,159,34,52,35,83,158,
34,16,2,89,162,8,44,35,43,9,223,0,33,32,80,159,34,51,35,83,158,
34,16,2,32,0,89,162,42,35,43,2,2,222,33,33,80,159,34,34,35,83,
158,34,16,2,249,22,135,6,7,92,7,92,80,159,34,35,35,83,158,34,16,
2,89,162,42,35,52,2,4,223,0,33,34,80,159,34,36,35,83,158,34,16,
2,32,0,89,162,42,36,48,2,5,222,33,35,80,159,34,37,35,83,158,34,
16,2,32,0,89,162,42,37,49,2,6,222,33,37,80,159,34,38,35,83,158,
34,16,2,89,162,8,45,36,46,2,7,223,0,33,39,80,159,34,39,35,83,
158,34,16,2,32,0,89,162,42,38,50,2,8,222,33,42,80,159,34,40,35,
83,158,34,16,2,32,0,89,162,42,37,48,2,9,222,33,43,80,159,34,41,
35,83,158,34,16,2,32,0,89,162,42,36,51,2,10,222,33,44,80,159,34,
42,35,83,158,34,16,2,32,0,89,162,42,36,52,2,11,222,33,45,80,159,
34,43,35,83,158,34,16,2,32,0,89,162,42,35,42,2,12,222,33,46,80,
159,34,44,35,83,158,34,16,2,83,158,37,20,96,95,2,13,89,162,42,34,
41,9,223,0,33,47,89,162,42,35,51,9,223,0,33,48,80,159,34,45,35,
83,158,34,16,2,27,248,22,141,13,248,22,144,7,27,28,249,22,138,8,247,
22,152,7,2,21,6,1,1,59,6,1,1,58,250,22,181,6,6,14,14,40,
91,94,126,97,93,42,41,126,97,40,46,42,41,23,196,2,23,196,1,89,162,
42,36,46,2,14,223,0,33,51,80,159,34,46,35,83,158,34,16,2,83,158,
37,20,96,96,2,15,89,162,8,44,37,52,9,223,0,33,56,89,162,42,36,
45,9,223,0,33,57,89,162,42,35,44,9,223,0,33,58,80,159,34,47,35,
83,158,34,16,2,89,162,42,36,49,2,16,223,0,33,60,80,159,34,48,35,
94,29,94,2,17,2,29,11,29,94,2,17,69,35,37,109,105,110,45,115,116,
120,11,9,9,9,34,0};
EVAL_ONE_SIZED_STR((char *)expr, 5004);
}
{
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,49,49,7,0,0,0,1,0,0,6,0,
19,0,34,0,48,0,62,0,76,0,0,0,253,0,0,0,65,113,117,111,116,
101,29,94,2,1,67,35,37,117,116,105,108,115,11,29,94,2,1,69,35,37,
110,101,116,119,111,114,107,11,29,94,2,1,68,35,37,112,97,114,97,109,122,
11,29,94,2,1,68,35,37,101,120,112,111,98,115,11,29,94,2,1,68,35,
37,107,101,114,110,101,108,11,159,34,20,102,159,34,16,1,20,24,65,98,101,
103,105,110,16,0,83,158,40,20,99,134,69,35,37,98,117,105,108,116,105,110,
29,11,11,10,10,18,94,11,97,10,34,11,97,159,2,2,34,34,159,2,3,
34,34,159,2,4,34,34,159,2,5,34,34,159,2,6,34,34,16,0,18,94,
11,95,35,11,16,0,10,18,94,11,95,8,240,48,117,0,0,11,16,0,34,
80,158,34,34,20,102,159,34,16,0,16,0,11,11,16,0,34,11,11,11,16,
0,16,0,16,0,34,34,11,11,16,0,16,0,16,0,34,34,11,11,16,0,
16,0,16,0,34,34,16,0,16,0,98,2,6,2,5,29,94,2,1,69,35,
37,102,111,114,101,105,103,110,11,2,4,2,3,2,2,9,9,0};
EVAL_ONE_SIZED_STR((char *)expr, 290);
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,49,51,8,0,0,0,1,0,0,6,0,
19,0,34,0,48,0,62,0,76,0,108,0,0,0,240,0,0,0,65,113,117,
111,116,101,29,94,2,1,67,35,37,117,116,105,108,115,11,29,94,2,1,69,
35,37,110,101,116,119,111,114,107,11,29,94,2,1,68,35,37,112,97,114,97,
109,122,11,29,94,2,1,68,35,37,101,120,112,111,98,115,11,29,94,2,1,
68,35,37,107,101,114,110,101,108,11,97,10,34,11,97,159,2,2,34,34,159,
2,3,34,34,159,2,4,34,34,159,2,5,34,34,159,2,6,34,34,16,0,
159,34,20,103,159,34,16,1,20,24,65,98,101,103,105,110,16,0,83,158,40,
20,100,137,69,35,37,98,117,105,108,116,105,110,29,11,11,10,10,18,96,11,
41,41,41,34,80,158,34,34,20,103,159,34,16,0,16,0,11,11,16,0,34,
11,37,34,11,11,16,0,16,0,16,0,34,34,35,11,11,16,0,16,0,16,
0,34,34,11,11,11,16,0,16,0,16,0,34,34,16,0,16,0,98,2,6,
2,5,29,94,2,1,69,35,37,102,111,114,101,105,103,110,11,2,4,2,3,
2,2,9,9,9,34,0};
EVAL_ONE_SIZED_STR((char *)expr, 279);
}
{
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,49,49,52,0,0,0,1,0,0,3,0,
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,49,51,52,0,0,0,1,0,0,3,0,
14,0,41,0,47,0,60,0,74,0,96,0,122,0,134,0,152,0,172,0,184,
0,200,0,223,0,3,1,8,1,13,1,18,1,23,1,54,1,58,1,66,1,
74,1,82,1,163,1,199,1,216,1,245,1,17,2,47,2,57,2,87,2,97,
2,104,2,178,3,190,3,209,3,33,4,45,4,173,4,185,4,30,5,36,5,
50,5,77,5,148,5,150,5,203,5,93,10,151,10,183,10,0,0,118,13,0,
74,1,82,1,185,1,230,1,253,1,32,2,67,2,101,2,111,2,145,2,155,
2,162,2,65,4,77,4,96,4,215,4,227,4,131,5,145,5,6,6,12,6,
26,6,53,6,138,6,140,6,201,6,118,12,176,12,208,12,0,0,146,15,0,
0,29,11,11,70,100,108,108,45,115,117,102,102,105,120,1,25,100,101,102,97,
117,108,116,45,108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,
65,113,117,111,116,101,29,94,2,4,67,35,37,117,116,105,108,115,11,29,94,
@ -342,154 +380,179 @@
97,107,64,108,111,111,112,1,29,115,116,97,110,100,97,114,100,45,109,111,100,
117,108,101,45,110,97,109,101,45,114,101,115,111,108,118,101,114,63,108,105,98,
67,105,103,110,111,114,101,100,249,22,14,195,80,158,36,44,249,80,159,36,47,
35,195,10,27,28,194,28,249,22,138,8,196,80,158,37,45,80,158,35,46,27,
248,22,149,4,196,28,248,22,159,12,193,91,159,37,11,90,161,37,34,11,248,
22,180,12,196,87,95,83,160,36,11,80,158,39,45,198,83,160,36,11,80,158,
39,46,192,192,11,11,28,192,192,27,247,22,185,5,28,192,192,247,22,135,13,
20,14,159,80,158,34,38,250,80,158,37,39,249,22,27,11,80,158,39,38,22,
185,5,28,248,22,159,12,197,196,247,22,135,13,247,194,250,22,177,12,196,198,
249,80,158,41,37,197,5,3,46,122,111,252,22,177,12,198,200,6,6,6,110,
97,116,105,118,101,247,22,153,7,249,80,158,43,37,199,80,158,43,34,27,193,
27,250,22,130,13,196,11,32,0,89,162,8,36,34,39,9,222,11,28,192,249,
22,63,195,194,11,27,248,194,195,27,250,22,130,13,196,11,32,0,89,162,8,
36,34,39,9,222,11,28,192,249,22,63,195,194,11,249,247,22,140,13,248,22,
64,195,195,27,248,194,195,27,250,22,130,13,196,11,32,0,89,162,8,36,34,
39,9,222,11,28,192,249,22,63,195,194,11,249,247,22,183,5,248,22,64,195,
195,249,247,22,183,5,194,195,87,94,28,248,80,158,35,36,194,12,250,22,168,
8,77,108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,6,25,
25,112,97,116,104,32,111,114,32,118,97,108,105,100,45,112,97,116,104,32,115,
116,114,105,110,103,196,91,159,40,11,90,161,35,34,11,28,248,22,183,12,200,
199,27,247,22,185,5,28,192,249,22,184,12,202,194,200,90,161,37,35,11,248,
22,180,12,193,90,161,35,38,11,28,249,22,138,8,195,68,114,101,108,97,116,
105,118,101,2,17,193,90,161,35,39,11,247,22,137,13,27,89,162,34,35,48,
62,122,111,225,7,5,3,33,27,27,89,162,34,35,50,9,225,8,6,4,33,
28,27,249,22,5,89,162,34,35,46,9,223,5,33,29,202,27,28,194,27,249,
22,5,89,162,34,35,46,9,223,5,33,30,204,27,28,195,11,193,28,192,192,
28,193,28,195,28,249,22,147,3,248,22,65,196,248,22,65,198,193,11,11,11,
11,28,192,249,80,159,46,53,35,202,89,162,34,34,44,9,224,14,2,33,31,
27,28,196,27,249,22,5,89,162,34,35,46,9,223,7,33,32,205,27,28,196,
11,193,28,192,192,28,193,28,196,28,249,22,147,3,248,22,65,196,248,22,65,
199,193,11,11,11,11,28,192,249,80,159,47,53,35,203,89,162,34,34,44,9,
224,15,2,33,33,249,80,159,47,53,35,203,89,162,34,34,43,9,224,15,7,
33,34,32,36,89,162,34,35,53,2,19,222,33,38,0,17,35,114,120,34,94,
40,46,42,63,41,47,40,46,42,41,36,34,27,249,22,145,13,2,37,195,28,
192,249,22,63,248,22,88,195,27,248,22,97,196,27,249,22,145,13,2,37,195,
28,192,249,22,63,248,22,88,195,27,248,22,97,196,27,249,22,145,13,2,37,
195,28,192,249,22,63,248,22,88,195,248,2,36,248,22,97,196,248,22,73,194,
248,22,73,194,248,22,73,194,32,39,89,162,34,35,53,2,19,222,33,40,28,
248,22,71,248,22,65,194,249,22,7,9,248,22,64,195,91,159,36,11,90,161,
36,34,11,27,248,22,65,196,28,248,22,71,248,22,65,194,249,22,7,9,248,
22,64,195,91,159,36,11,90,161,36,34,11,27,248,22,65,196,28,248,22,71,
248,22,65,194,249,22,7,9,248,22,64,195,91,159,36,11,90,161,36,34,11,
248,2,39,248,22,65,196,249,22,7,249,22,63,248,22,64,199,196,195,249,22,
7,249,22,63,248,22,64,199,196,195,249,22,7,249,22,63,248,22,64,199,196,
195,27,248,2,36,194,28,194,192,248,2,39,193,87,95,28,248,22,147,4,195,
12,250,22,168,8,2,20,6,20,20,114,101,115,111,108,118,101,100,45,109,111,
100,117,108,101,45,112,97,116,104,197,28,207,248,208,195,12,27,27,250,22,126,
80,158,40,41,248,22,163,13,247,22,147,11,11,28,192,192,27,247,22,120,87,
94,250,22,125,80,158,41,41,248,22,163,13,247,22,147,11,195,192,250,22,125,
195,198,66,97,116,116,97,99,104,251,211,197,198,199,10,28,192,250,22,167,8,
11,196,195,248,22,165,8,194,28,249,22,139,6,194,6,1,1,46,2,17,28,
249,22,139,6,194,6,2,2,46,46,62,117,112,192,28,249,22,140,8,248,22,
65,199,196,28,249,22,138,8,248,22,64,199,195,251,22,165,8,2,20,6,26,
26,99,121,99,108,101,32,105,110,32,108,111,97,100,105,110,103,32,97,116,32,
126,101,58,32,126,101,199,249,22,2,22,65,248,22,78,249,22,63,205,201,12,
12,247,192,20,14,159,80,158,38,43,249,22,63,247,22,147,11,196,20,14,159,
80,158,38,38,250,80,158,41,39,249,22,27,11,80,158,43,38,22,131,4,195,
249,247,22,184,5,197,248,22,52,248,22,163,12,197,87,94,28,28,248,22,159,
12,196,10,248,22,152,4,196,12,28,197,250,22,167,8,11,6,15,15,98,97,
100,32,109,111,100,117,108,101,32,112,97,116,104,200,250,22,168,8,2,20,6,
19,19,109,111,100,117,108,101,45,112,97,116,104,32,111,114,32,112,97,116,104,
198,28,28,248,22,61,196,249,22,138,8,248,22,64,198,2,4,11,248,22,148,
4,248,22,88,197,28,28,248,22,61,196,249,22,138,8,248,22,64,198,66,112,
108,97,110,101,116,11,87,94,28,207,12,20,14,159,80,158,36,38,250,80,158,
39,39,249,22,27,11,80,158,41,38,22,147,11,196,90,161,35,34,10,249,22,
132,4,21,94,2,21,6,18,18,112,108,97,110,101,116,47,114,101,115,111,108,
118,101,114,46,115,115,1,27,112,108,97,110,101,116,45,109,111,100,117,108,101,
45,110,97,109,101,45,114,101,115,111,108,118,101,114,12,251,211,199,200,201,202,
27,89,162,34,35,44,79,115,104,111,119,45,99,111,108,108,101,99,116,105,111,
110,45,101,114,114,223,6,33,44,27,28,248,22,51,198,27,250,22,126,80,158,
42,42,249,22,63,203,247,22,136,13,11,28,192,192,91,159,36,11,90,161,36,
34,11,249,80,159,43,47,35,248,22,54,203,11,27,251,80,158,46,49,2,20,
201,28,248,22,71,198,198,248,22,64,198,28,248,22,71,198,9,248,22,65,198,
249,22,177,12,194,28,248,22,71,196,6,7,7,109,97,105,110,46,115,115,249,
22,156,6,198,6,3,3,46,115,115,28,248,22,133,6,198,27,248,80,159,40,
54,35,200,27,250,22,126,80,158,43,42,249,22,63,204,198,11,28,192,192,91,
159,36,11,90,161,36,34,11,249,80,159,44,47,35,203,11,250,22,1,22,177,
12,198,249,22,77,249,22,2,32,0,89,162,8,36,35,42,9,222,33,45,199,
248,22,73,199,28,248,22,159,12,198,28,248,22,182,12,198,197,248,22,73,6,
26,26,32,40,97,32,112,97,116,104,32,109,117,115,116,32,98,101,32,97,98,
115,111,108,117,116,101,41,28,249,22,138,8,248,22,64,200,2,21,27,250,22,
126,80,158,42,42,249,22,63,203,247,22,136,13,11,28,192,192,91,159,37,11,
90,161,36,34,11,249,80,159,44,47,35,248,22,88,204,11,90,161,35,36,11,
28,248,22,71,248,22,90,203,28,248,22,71,193,249,22,147,13,0,8,35,114,
120,34,91,46,93,34,195,11,10,27,27,28,196,249,22,77,28,248,22,71,248,
22,90,23,15,21,93,6,5,5,109,122,108,105,98,249,22,1,22,77,249,22,
2,80,159,50,55,35,248,22,90,23,18,196,28,248,22,71,195,248,22,73,196,
194,251,80,158,48,49,2,20,203,248,22,64,197,248,22,65,197,249,22,177,12,
194,28,197,196,28,248,22,71,196,6,7,7,109,97,105,110,46,115,115,28,249,
22,147,13,0,8,35,114,120,34,91,46,93,34,198,196,249,22,156,6,198,6,
3,3,46,115,115,28,249,22,138,8,248,22,64,200,64,102,105,108,101,249,22,
184,12,248,22,88,200,248,80,159,41,54,35,201,12,87,94,28,28,248,22,159,
12,193,10,248,22,155,7,193,12,28,199,250,22,167,8,67,114,101,113,117,105,
114,101,249,22,181,6,6,17,17,98,97,100,32,109,111,100,117,108,101,32,112,
97,116,104,126,97,28,197,248,22,64,198,6,0,0,202,250,22,168,8,2,20,
249,22,181,6,6,13,13,109,111,100,117,108,101,32,112,97,116,104,126,97,28,
197,248,22,64,198,6,0,0,200,27,28,248,22,155,7,194,249,22,160,7,195,
34,249,22,186,12,248,22,187,12,196,11,27,28,248,22,155,7,195,249,22,160,
7,196,35,248,80,158,41,50,194,91,159,37,11,90,161,37,34,11,28,248,22,
155,7,198,250,22,7,2,22,249,22,160,7,202,36,2,22,248,22,180,12,197,
27,28,248,22,155,7,199,249,22,160,7,200,37,249,80,158,46,51,196,5,0,
27,28,248,22,155,7,200,249,22,160,7,201,38,248,22,148,4,199,27,27,250,
22,126,80,158,50,41,248,22,163,13,247,22,147,11,11,28,192,192,27,247,22,
120,87,94,250,22,125,80,158,51,41,248,22,163,13,247,22,147,11,195,192,87,
95,28,23,16,27,250,22,126,196,197,11,28,192,12,87,95,27,27,28,248,22,
17,80,158,50,44,80,158,49,44,247,22,19,250,22,25,248,22,23,196,80,158,
52,43,195,27,247,22,147,11,249,22,3,89,162,34,35,53,9,226,12,11,2,
3,33,46,195,248,28,248,22,17,80,158,49,44,32,0,89,162,34,35,40,9,
222,33,47,80,159,48,56,35,89,162,34,34,49,9,227,14,9,8,4,3,33,
48,250,22,125,196,197,10,12,28,28,248,22,155,7,201,11,27,248,22,133,6,
23,15,28,192,192,28,248,22,61,23,15,249,22,138,8,248,22,64,23,17,2,
21,11,250,22,125,80,158,49,42,28,248,22,133,6,23,17,249,22,63,23,18,
248,80,159,52,54,35,23,20,249,22,63,23,18,247,22,136,13,252,22,157,7,
23,15,206,204,202,201,12,193,91,159,36,10,90,161,35,34,10,11,90,161,35,
35,10,83,158,37,20,96,96,2,20,89,162,34,35,49,9,224,2,0,33,42,
89,162,34,37,47,9,223,1,33,43,89,162,34,38,8,30,9,225,2,3,0,
33,49,208,87,95,248,22,130,4,248,80,158,36,48,247,22,147,11,248,22,184,
5,80,158,35,35,248,22,133,12,80,159,35,40,35,159,34,20,102,159,34,16,
1,20,24,65,98,101,103,105,110,16,0,83,158,40,20,99,134,66,35,37,98,
111,111,116,2,1,11,10,10,10,10,10,36,80,158,34,34,20,102,159,38,16,
19,30,2,1,2,2,193,30,2,1,2,3,193,30,2,5,72,112,97,116,104,
45,115,116,114,105,110,103,63,10,30,2,5,75,112,97,116,104,45,97,100,100,
45,115,117,102,102,105,120,7,30,2,6,1,20,112,97,114,97,109,101,116,101,
114,105,122,97,116,105,111,110,45,107,101,121,4,30,2,6,1,23,101,120,116,
101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,3,
30,2,1,2,7,193,30,2,1,2,8,193,30,2,1,2,9,193,30,2,1,
2,10,193,30,2,1,2,11,193,30,2,1,2,12,193,30,2,1,2,13,193,
30,2,1,2,14,193,30,2,1,2,15,193,30,2,5,69,45,102,105,110,100,
45,99,111,108,0,30,2,5,76,110,111,114,109,97,108,45,99,97,115,101,45,
112,97,116,104,6,30,2,5,79,112,97,116,104,45,114,101,112,108,97,99,101,
45,115,117,102,102,105,120,9,30,2,1,2,16,193,16,0,11,11,16,11,2,
10,2,11,2,8,2,9,2,12,2,13,2,3,2,7,2,2,2,15,2,14,
45,11,11,11,16,0,16,0,16,0,34,34,11,11,16,0,16,0,16,0,34,
34,11,16,1,9,16,1,2,16,16,1,11,16,1,2,16,35,35,16,0,16,
16,83,158,34,16,2,89,162,34,35,43,9,223,0,33,23,80,159,34,56,35,
83,158,34,16,2,89,162,8,36,35,43,9,223,0,33,24,80,159,34,55,35,
83,158,34,16,2,89,162,34,35,47,67,103,101,116,45,100,105,114,223,0,33,
25,80,159,34,54,35,83,158,34,16,2,89,162,34,36,47,68,119,105,116,104,
45,100,105,114,223,0,33,26,80,159,34,53,35,83,158,34,16,2,248,22,152,
7,69,115,111,45,115,117,102,102,105,120,80,159,34,34,35,83,158,34,16,2,
89,162,34,36,58,2,3,223,0,33,35,80,159,34,35,35,83,158,34,16,2,
32,0,89,162,8,36,35,40,2,7,222,192,80,159,34,40,35,83,158,34,16,
2,248,22,120,2,18,80,159,34,41,35,83,158,34,16,2,249,22,120,2,18,
65,101,113,117,97,108,80,159,34,42,35,83,158,34,16,2,247,22,59,80,159,
34,43,35,83,158,34,16,2,248,22,18,74,109,111,100,117,108,101,45,108,111,
97,100,105,110,103,80,159,34,44,35,83,158,34,16,2,11,80,158,34,45,83,
158,34,16,2,11,80,158,34,46,83,158,34,16,2,32,0,89,162,34,36,43,
2,14,222,33,41,80,159,34,47,35,83,158,34,16,2,89,162,8,36,35,43,
2,15,223,0,33,50,80,159,34,48,35,83,158,34,16,2,89,162,34,34,42,
2,16,223,0,33,51,80,159,34,52,35,95,29,94,2,4,68,35,37,107,101,
114,110,101,108,11,29,94,2,4,69,35,37,109,105,110,45,115,116,120,11,2,
5,9,9,0};
EVAL_ONE_SIZED_STR((char *)expr, 3573);
35,195,10,27,28,23,195,2,28,249,22,138,8,23,197,2,80,158,37,45,87,
94,23,195,1,80,158,35,46,27,248,22,149,4,23,197,2,28,248,22,159,12,
23,194,2,91,159,37,11,90,161,37,34,11,248,22,180,12,23,197,1,87,95,
83,160,36,11,80,158,39,45,198,83,160,36,11,80,158,39,46,192,192,11,11,
28,23,193,2,192,87,94,23,193,1,27,247,22,185,5,28,192,192,247,22,135,
13,20,14,159,80,158,34,38,250,80,158,37,39,249,22,27,11,80,158,39,38,
22,185,5,28,248,22,159,12,23,198,2,23,197,1,87,94,23,197,1,247,22,
135,13,247,194,250,22,177,12,23,197,1,23,199,1,249,80,158,41,37,23,198,
1,5,3,46,122,111,252,22,177,12,23,199,1,23,201,1,6,6,6,110,97,
116,105,118,101,247,22,153,7,249,80,158,43,37,23,200,1,80,158,43,34,87,
94,23,194,1,27,23,194,1,27,250,22,130,13,196,11,32,0,89,162,8,44,
34,39,9,222,11,28,192,249,22,63,195,194,11,27,248,23,195,1,23,196,1,
27,250,22,130,13,196,11,32,0,89,162,8,44,34,39,9,222,11,28,192,249,
22,63,195,194,11,249,247,22,140,13,248,22,64,195,195,27,248,23,195,1,23,
196,1,27,250,22,130,13,196,11,32,0,89,162,8,44,34,39,9,222,11,28,
192,249,22,63,195,194,11,249,247,22,183,5,248,22,64,195,195,249,247,22,183,
5,194,195,87,94,28,248,80,158,35,36,23,195,2,12,250,22,168,8,77,108,
111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,6,25,25,112,97,
116,104,32,111,114,32,118,97,108,105,100,45,112,97,116,104,32,115,116,114,105,
110,103,23,197,2,91,159,40,11,90,161,35,34,11,28,248,22,183,12,23,201,
2,23,200,1,27,247,22,185,5,28,23,193,2,249,22,184,12,23,203,1,23,
195,1,200,90,161,37,35,11,248,22,180,12,23,194,2,87,94,23,196,1,90,
161,35,38,11,28,249,22,138,8,23,196,2,68,114,101,108,97,116,105,118,101,
87,94,23,194,1,2,17,23,194,1,90,161,35,39,11,247,22,137,13,27,89,
162,42,35,48,62,122,111,225,7,5,3,33,27,27,83,158,38,20,97,94,89,
162,42,35,50,9,225,8,6,4,33,28,23,197,1,27,249,22,5,89,162,42,
35,46,9,223,5,33,29,23,203,2,27,28,23,195,2,27,249,22,5,83,158,
38,20,97,94,89,162,42,35,46,9,223,5,33,30,23,198,1,23,205,2,27,
28,23,196,2,11,193,28,192,192,28,193,28,23,196,2,28,249,22,147,3,248,
22,65,196,248,22,65,23,199,2,193,11,11,11,87,94,23,195,1,11,28,23,
193,2,249,80,159,46,53,35,202,89,162,42,34,44,9,224,14,2,33,31,87,
94,23,193,1,27,28,23,197,2,27,249,22,5,83,158,38,20,97,94,89,162,
42,35,46,9,223,7,33,32,23,200,1,23,206,1,27,28,196,11,193,28,192,
192,28,193,28,196,28,249,22,147,3,248,22,65,196,248,22,65,199,193,11,11,
11,11,28,192,249,80,159,47,53,35,203,89,162,42,34,44,9,224,15,2,33,
33,249,80,159,47,53,35,203,89,162,42,34,43,9,224,15,7,33,34,32,36,
89,162,42,35,53,2,19,222,33,38,0,17,35,114,120,34,94,40,46,42,63,
41,47,40,46,42,41,36,34,27,249,22,145,13,2,37,23,196,2,28,23,193,
2,87,94,23,194,1,249,22,63,248,22,88,23,196,2,27,248,22,97,23,197,
1,27,249,22,145,13,2,37,23,196,2,28,23,193,2,87,94,23,194,1,249,
22,63,248,22,88,23,196,2,27,248,22,97,23,197,1,27,249,22,145,13,2,
37,23,196,2,28,23,193,2,87,94,23,194,1,249,22,63,248,22,88,23,196,
2,248,2,36,248,22,97,23,197,1,248,22,73,194,248,22,73,194,248,22,73,
194,32,39,89,162,42,35,53,2,19,222,33,40,28,248,22,71,248,22,65,23,
195,2,249,22,7,9,248,22,64,195,91,159,36,11,90,161,36,34,11,27,248,
22,65,23,197,2,28,248,22,71,248,22,65,23,195,2,249,22,7,9,248,22,
64,23,196,1,91,159,36,11,90,161,36,34,11,27,248,22,65,23,197,2,28,
248,22,71,248,22,65,23,195,2,249,22,7,9,248,22,64,23,196,1,91,159,
36,11,90,161,36,34,11,248,2,39,248,22,65,23,197,2,249,22,7,249,22,
63,248,22,64,23,200,1,23,197,1,23,196,1,249,22,7,249,22,63,248,22,
64,23,200,1,23,197,1,23,196,1,249,22,7,249,22,63,248,22,64,23,200,
1,23,197,1,195,27,248,2,36,23,195,1,28,194,192,248,2,39,193,87,95,
28,248,22,147,4,195,12,250,22,168,8,2,20,6,20,20,114,101,115,111,108,
118,101,100,45,109,111,100,117,108,101,45,112,97,116,104,197,28,24,193,2,248,
24,194,1,195,87,94,23,193,1,12,27,27,250,22,126,80,158,40,41,248,22,
163,13,247,22,147,11,11,28,23,193,2,192,87,94,23,193,1,27,247,22,120,
87,94,250,22,125,80,158,41,41,248,22,163,13,247,22,147,11,195,192,250,22,
125,195,198,66,97,116,116,97,99,104,251,211,197,198,199,10,28,192,250,22,167,
8,11,196,195,248,22,165,8,194,28,249,22,139,6,194,6,1,1,46,2,17,
28,249,22,139,6,194,6,2,2,46,46,62,117,112,192,28,249,22,140,8,248,
22,65,23,200,2,23,197,1,28,249,22,138,8,248,22,64,23,200,2,23,196,
1,251,22,165,8,2,20,6,26,26,99,121,99,108,101,32,105,110,32,108,111,
97,100,105,110,103,32,97,116,32,126,101,58,32,126,101,23,200,1,249,22,2,
22,65,248,22,78,249,22,63,23,206,1,23,202,1,12,12,247,192,20,14,159,
80,158,38,43,249,22,63,247,22,147,11,23,197,1,20,14,159,80,158,38,38,
250,80,158,41,39,249,22,27,11,80,158,43,38,22,131,4,23,196,1,249,247,
22,184,5,23,198,1,248,22,52,248,22,163,12,23,198,1,87,94,28,28,248,
22,159,12,23,197,2,10,248,22,152,4,23,197,2,12,28,23,198,2,250,22,
167,8,11,6,15,15,98,97,100,32,109,111,100,117,108,101,32,112,97,116,104,
23,201,2,250,22,168,8,2,20,6,19,19,109,111,100,117,108,101,45,112,97,
116,104,32,111,114,32,112,97,116,104,23,199,2,28,28,248,22,61,23,197,2,
249,22,138,8,248,22,64,23,199,2,2,4,11,248,22,148,4,248,22,88,197,
28,28,248,22,61,23,197,2,249,22,138,8,248,22,64,23,199,2,66,112,108,
97,110,101,116,11,87,94,28,207,12,20,14,159,80,158,36,38,250,80,158,39,
39,249,22,27,11,80,158,41,38,22,147,11,23,197,1,90,161,35,34,10,249,
22,132,4,21,94,2,21,6,18,18,112,108,97,110,101,116,47,114,101,115,111,
108,118,101,114,46,115,115,1,27,112,108,97,110,101,116,45,109,111,100,117,108,
101,45,110,97,109,101,45,114,101,115,111,108,118,101,114,12,251,211,199,200,201,
202,87,94,23,193,1,27,89,162,42,35,44,79,115,104,111,119,45,99,111,108,
108,101,99,116,105,111,110,45,101,114,114,223,6,33,44,27,28,248,22,51,23,
199,2,27,250,22,126,80,158,42,42,249,22,63,23,204,2,247,22,136,13,11,
28,23,193,2,192,87,94,23,193,1,91,159,36,11,90,161,36,34,11,249,80,
159,43,47,35,248,22,54,23,204,2,11,27,251,80,158,46,49,2,20,23,202,
1,28,248,22,71,23,199,2,23,199,2,248,22,64,23,199,2,28,248,22,71,
23,199,2,9,248,22,65,23,199,2,249,22,177,12,23,195,1,28,248,22,71,
23,197,1,87,94,23,197,1,6,7,7,109,97,105,110,46,115,115,249,22,156,
6,23,199,1,6,3,3,46,115,115,28,248,22,133,6,23,199,2,87,94,23,
194,1,27,248,80,159,40,54,35,23,201,2,27,250,22,126,80,158,43,42,249,
22,63,23,205,2,23,199,2,11,28,23,193,2,192,87,94,23,193,1,91,159,
36,11,90,161,36,34,11,249,80,159,44,47,35,23,204,2,11,250,22,1,22,
177,12,23,199,1,249,22,77,249,22,2,32,0,89,162,8,44,35,42,9,222,
33,45,23,200,1,248,22,73,23,200,1,28,248,22,159,12,23,199,2,87,94,
23,194,1,28,248,22,182,12,23,199,2,23,198,2,248,22,73,6,26,26,32,
40,97,32,112,97,116,104,32,109,117,115,116,32,98,101,32,97,98,115,111,108,
117,116,101,41,28,249,22,138,8,248,22,64,23,201,2,2,21,27,250,22,126,
80,158,42,42,249,22,63,23,204,2,247,22,136,13,11,28,23,193,2,192,87,
94,23,193,1,91,159,37,11,90,161,36,34,11,249,80,159,44,47,35,248,22,
88,23,205,2,11,90,161,35,36,11,28,248,22,71,248,22,90,23,204,2,28,
248,22,71,23,194,2,249,22,147,13,0,8,35,114,120,34,91,46,93,34,23,
196,2,11,10,27,27,28,23,197,2,249,22,77,28,248,22,71,248,22,90,23,
208,2,21,93,6,5,5,109,122,108,105,98,249,22,1,22,77,249,22,2,80,
159,50,55,35,248,22,90,23,211,2,23,197,2,28,248,22,71,23,196,2,248,
22,73,23,197,2,23,195,2,251,80,158,48,49,2,20,23,204,1,248,22,64,
23,198,2,248,22,65,23,198,1,249,22,177,12,23,195,1,28,23,198,1,87,
94,23,196,1,23,197,1,28,248,22,71,23,197,1,87,94,23,197,1,6,7,
7,109,97,105,110,46,115,115,28,249,22,147,13,0,8,35,114,120,34,91,46,
93,34,23,199,2,23,197,1,249,22,156,6,23,199,1,6,3,3,46,115,115,
28,249,22,138,8,248,22,64,23,201,2,64,102,105,108,101,249,22,184,12,248,
22,88,23,201,2,248,80,159,41,54,35,23,202,2,12,87,94,28,28,248,22,
159,12,23,194,2,10,248,22,155,7,23,194,2,87,94,23,200,1,12,28,23,
200,2,250,22,167,8,67,114,101,113,117,105,114,101,249,22,181,6,6,17,17,
98,97,100,32,109,111,100,117,108,101,32,112,97,116,104,126,97,28,23,198,2,
248,22,64,23,199,2,6,0,0,23,203,1,87,94,23,200,1,250,22,168,8,
2,20,249,22,181,6,6,13,13,109,111,100,117,108,101,32,112,97,116,104,126,
97,28,23,198,2,248,22,64,23,199,2,6,0,0,23,201,2,27,28,248,22,
155,7,23,195,2,249,22,160,7,23,196,2,34,249,22,186,12,248,22,187,12,
23,197,2,11,27,28,248,22,155,7,23,196,2,249,22,160,7,23,197,2,35,
248,80,158,41,50,23,195,2,91,159,37,11,90,161,37,34,11,28,248,22,155,
7,23,199,2,250,22,7,2,22,249,22,160,7,23,203,2,36,2,22,248,22,
180,12,23,198,2,87,95,23,195,1,23,193,1,27,28,248,22,155,7,23,200,
2,249,22,160,7,23,201,2,37,249,80,158,46,51,23,197,2,5,0,27,28,
248,22,155,7,23,201,2,249,22,160,7,23,202,2,38,248,22,148,4,23,200,
2,27,27,250,22,126,80,158,50,41,248,22,163,13,247,22,147,11,11,28,23,
193,2,192,87,94,23,193,1,27,247,22,120,87,94,250,22,125,80,158,51,41,
248,22,163,13,247,22,147,11,195,192,87,95,28,23,209,1,27,250,22,126,23,
197,2,197,11,28,23,193,1,12,87,95,27,27,28,248,22,17,80,158,50,44,
80,158,49,44,247,22,19,250,22,25,248,22,23,23,197,2,80,158,52,43,23,
196,1,27,247,22,147,11,249,22,3,83,158,38,20,97,94,89,162,42,35,53,
9,226,12,11,2,3,33,46,23,195,1,23,196,1,248,28,248,22,17,80,158,
49,44,32,0,89,162,42,35,40,9,222,33,47,80,159,48,56,35,89,162,42,
34,49,9,227,14,9,8,4,3,33,48,250,22,125,23,197,1,197,10,12,28,
28,248,22,155,7,23,202,1,11,27,248,22,133,6,23,208,2,28,192,192,28,
248,22,61,23,208,2,249,22,138,8,248,22,64,23,210,2,2,21,11,250,22,
125,80,158,49,42,28,248,22,133,6,23,210,2,249,22,63,23,211,1,248,80,
159,52,54,35,23,213,1,87,94,23,210,1,249,22,63,23,211,1,247,22,136,
13,252,22,157,7,23,208,1,23,207,1,23,205,1,23,203,1,201,12,193,91,
159,36,10,90,161,35,34,10,11,90,161,35,35,10,83,158,37,20,96,96,2,
20,89,162,42,35,49,9,224,2,0,33,42,89,162,42,37,47,9,223,1,33,
43,89,162,42,38,8,30,9,225,2,3,0,33,49,208,87,95,248,22,130,4,
248,80,158,36,48,247,22,147,11,248,22,184,5,80,158,35,35,248,22,133,12,
80,159,35,40,35,159,34,20,103,159,34,16,1,20,24,65,98,101,103,105,110,
16,0,83,158,40,20,100,137,66,35,37,98,111,111,116,2,1,11,10,10,36,
80,158,34,34,20,103,159,38,16,19,30,2,1,2,2,193,30,2,1,2,3,
193,30,2,5,72,112,97,116,104,45,115,116,114,105,110,103,63,10,30,2,5,
75,112,97,116,104,45,97,100,100,45,115,117,102,102,105,120,7,30,2,6,1,
20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,
4,30,2,6,1,23,101,120,116,101,110,100,45,112,97,114,97,109,101,116,101,
114,105,122,97,116,105,111,110,3,30,2,1,2,7,193,30,2,1,2,8,193,
30,2,1,2,9,193,30,2,1,2,10,193,30,2,1,2,11,193,30,2,1,
2,12,193,30,2,1,2,13,193,30,2,1,2,14,193,30,2,1,2,15,193,
30,2,5,69,45,102,105,110,100,45,99,111,108,0,30,2,5,76,110,111,114,
109,97,108,45,99,97,115,101,45,112,97,116,104,6,30,2,5,79,112,97,116,
104,45,114,101,112,108,97,99,101,45,115,117,102,102,105,120,9,30,2,1,2,
16,193,16,0,11,11,16,11,2,10,2,11,2,8,2,9,2,12,2,13,2,
3,2,7,2,2,2,15,2,14,45,11,37,34,11,16,1,9,16,1,2,16,
16,1,11,16,1,2,16,35,35,35,11,11,16,0,16,0,16,0,34,34,11,
11,11,16,0,16,0,16,0,34,34,16,0,16,16,83,158,34,16,2,89,162,
42,35,43,9,223,0,33,23,80,159,34,56,35,83,158,34,16,2,89,162,8,
44,35,43,9,223,0,33,24,80,159,34,55,35,83,158,34,16,2,89,162,42,
35,47,67,103,101,116,45,100,105,114,223,0,33,25,80,159,34,54,35,83,158,
34,16,2,89,162,42,36,47,68,119,105,116,104,45,100,105,114,223,0,33,26,
80,159,34,53,35,83,158,34,16,2,248,22,152,7,69,115,111,45,115,117,102,
102,105,120,80,159,34,34,35,83,158,34,16,2,89,162,42,36,58,2,3,223,
0,33,35,80,159,34,35,35,83,158,34,16,2,32,0,89,162,8,44,35,40,
2,7,222,192,80,159,34,40,35,83,158,34,16,2,248,22,120,2,18,80,159,
34,41,35,83,158,34,16,2,249,22,120,2,18,65,101,113,117,97,108,80,159,
34,42,35,83,158,34,16,2,247,22,59,80,159,34,43,35,83,158,34,16,2,
248,22,18,74,109,111,100,117,108,101,45,108,111,97,100,105,110,103,80,159,34,
44,35,83,158,34,16,2,11,80,158,34,45,83,158,34,16,2,11,80,158,34,
46,83,158,34,16,2,32,0,89,162,42,36,43,2,14,222,33,41,80,159,34,
47,35,83,158,34,16,2,89,162,8,44,35,43,2,15,223,0,33,50,80,159,
34,48,35,83,158,34,16,2,89,162,42,34,42,2,16,223,0,33,51,80,159,
34,52,35,95,29,94,2,4,68,35,37,107,101,114,110,101,108,11,29,94,2,
4,69,35,37,109,105,110,45,115,116,120,11,2,5,9,9,9,34,0};
EVAL_ONE_SIZED_STR((char *)expr, 4113);
}

View File

@ -79,10 +79,12 @@ static Scheme_Object *namespace_module_registry(int, Scheme_Object *[]);
static Scheme_Object *variable_module_path(int, Scheme_Object *[]);
static Scheme_Object *variable_namespace(int, Scheme_Object *[]);
static Scheme_Object *variable_top_level_namespace(int, Scheme_Object *[]);
static Scheme_Object *variable_phase(int, Scheme_Object *[]);
static Scheme_Object *now_transforming(int argc, Scheme_Object *argv[]);
static Scheme_Object *local_exp_time_value(int argc, Scheme_Object *argv[]);
static Scheme_Object *local_exp_time_name(int argc, Scheme_Object *argv[]);
static Scheme_Object *local_context(int argc, Scheme_Object *argv[]);
static Scheme_Object *local_phase_level(int argc, Scheme_Object *argv[]);
static Scheme_Object *local_make_intdef_context(int argc, Scheme_Object *argv[]);
static Scheme_Object *local_introduce(int argc, Scheme_Object *argv[]);
static Scheme_Object *local_module_introduce(int argc, Scheme_Object *argv[]);
@ -530,7 +532,11 @@ static void make_init_env(void)
"variable-reference->top-level-namespace",
1, 1),
env);
scheme_add_global_constant("variable-reference->phase",
scheme_make_prim_w_arity(variable_phase,
"variable-reference->phase",
1, 1),
env);
scheme_add_global_constant("syntax-transforming?",
scheme_make_prim_w_arity(now_transforming,
@ -552,6 +558,11 @@ static void make_init_env(void)
"syntax-local-context",
0, 0),
env);
scheme_add_global_constant("syntax-local-phase-level",
scheme_make_prim_w_arity(local_phase_level,
"syntax-local-phase-level",
0, 0),
env);
scheme_add_global_constant("syntax-local-make-definition-context",
scheme_make_prim_w_arity(local_make_intdef_context,
"syntax-local-make-definition-context",
@ -591,7 +602,7 @@ static void make_init_env(void)
scheme_add_global_constant("syntax-local-module-required-identifiers",
scheme_make_prim_w_arity(local_module_imports,
"syntax-local-module-required-identifiers",
4, 4),
2, 2),
env);
scheme_add_global_constant("syntax-local-transforming-module-provides?",
scheme_make_prim_w_arity(local_module_expanding_provides,
@ -709,20 +720,14 @@ static void skip_certain_things(Scheme_Object *o, Scheme_Close_Custodian_Client
/* namespace constructors */
/*========================================================================*/
static void create_env_marked_names(Scheme_Env *e)
void scheme_prepare_env_renames(Scheme_Env *env, int kind)
{
Scheme_Hash_Table *mn;
Scheme_Object *rn;
if (!env->rename_set) {
Scheme_Object *rns;
/* Set up a rename table, in case an identifier with a let-binding
renaming ends up in a definition position: */
mn = scheme_make_hash_table(SCHEME_hash_ptr);
scheme_hash_set(mn, scheme_false, scheme_null);
e->marked_names = mn;
rn = scheme_make_module_rename(e->phase, mzMOD_RENAME_TOPLEVEL, mn);
e->rename = rn;
rns = scheme_make_module_rename_set(kind, NULL);
env->rename_set = rns;
}
}
Scheme_Env *scheme_make_empty_env(void)
@ -730,7 +735,6 @@ Scheme_Env *scheme_make_empty_env(void)
Scheme_Env *e;
e = make_env(NULL, 0, 7);
create_env_marked_names(e);
return e;
}
@ -843,8 +847,11 @@ void scheme_prepare_exp_env(Scheme_Env *env)
env->exp_env = eenv;
eenv->template_env = env;
if (!env->module && !env->phase)
create_env_marked_names(eenv);
scheme_prepare_env_renames(env, mzMOD_RENAME_TOPLEVEL);
eenv->rename_set = env->rename_set;
if (env->disallow_unbound)
eenv->disallow_unbound = 1;
}
}
@ -875,26 +882,19 @@ void scheme_prepare_template_env(Scheme_Env *env)
}
eenv->modchain = modchain;
scheme_prepare_env_renames(env, mzMOD_RENAME_TOPLEVEL);
eenv->rename_set = env->rename_set;
env->template_env = eenv;
eenv->exp_env = env;
eenv->exp_env = env;
if (env->disallow_unbound)
eenv->disallow_unbound = 1;
}
}
void scheme_prepare_label_env(Scheme_Env *env)
{
if (!env->label_env) {
/* Used only for its marked_names table */
Scheme_Env *lenv;
lenv = make_env(NULL, 1, 7);
lenv->phase = MZ_LABEL_PHASE;
lenv->mod_phase = MZ_LABEL_PHASE;
env->label_env = lenv;
lenv->module = env->module;
lenv->module_registry = env->module_registry;
lenv->export_registry = env->export_registry;
lenv->insp = env->insp;
lenv->modchain = env->modchain;
}
}
Scheme_Env *scheme_clone_module_env(Scheme_Env *menv, Scheme_Env *ns, Scheme_Object *modchain)
@ -1115,22 +1115,31 @@ scheme_add_global_keyword_symbol(Scheme_Object *name, Scheme_Object *obj,
void scheme_shadow(Scheme_Env *env, Scheme_Object *n, int stxtoo)
{
if (env->rename) {
scheme_remove_module_rename(env->rename, n);
if (env->module) {
scheme_extend_module_rename(env->rename,
env->module->self_modidx,
n, n,
env->module->self_modidx,
n,
env->mod_phase,
-1,
0);
Scheme_Object *rn;
if (env->rename_set) {
rn = scheme_get_module_rename_from_set(env->rename_set,
scheme_make_integer(env->phase),
0);
if (rn) {
scheme_remove_module_rename(rn, n);
if (env->module) {
scheme_extend_module_rename(rn,
env->module->self_modidx,
n, n,
env->module->self_modidx,
n,
env->mod_phase,
NULL,
NULL,
0);
}
}
}
} else
rn = NULL;
if (stxtoo) {
if (!env->module || env->rename) {
if (!env->module || rn) {
if (!env->shadowed_syntax) {
Scheme_Hash_Table *ht;
ht = scheme_make_hash_table(SCHEME_hash_ptr);
@ -1732,7 +1741,7 @@ Scheme_Object *scheme_hash_module_variable(Scheme_Env *env, Scheme_Object *modid
return val;
}
Scheme_Object *scheme_tl_id_sym(Scheme_Env *env, Scheme_Object *id, Scheme_Object *bdg, int is_def)
Scheme_Object *scheme_tl_id_sym(Scheme_Env *env, Scheme_Object *id, Scheme_Object *bdg, int is_def, Scheme_Object *phase)
/* The `env' argument can actually be a hash table. */
{
Scheme_Object *marks = NULL, *sym, *map, *l, *a, *amarks, *m, *best_match, *cm, *abdg;
@ -1745,9 +1754,11 @@ Scheme_Object *scheme_tl_id_sym(Scheme_Env *env, Scheme_Object *id, Scheme_Objec
marked_names = (Scheme_Hash_Table *)env;
else {
/* If there's no table and we're not defining, bail out fast */
if (!is_def && !env->marked_names)
if (!is_def && !env->rename_set)
return sym;
marked_names = env->marked_names;
marked_names = scheme_get_module_rename_marked_names(env->rename_set,
phase ? phase : scheme_make_integer(env->phase),
0);
}
if (is_def) {
@ -1762,8 +1773,10 @@ Scheme_Object *scheme_tl_id_sym(Scheme_Env *env, Scheme_Object *id, Scheme_Objec
}
if (!marked_names) {
marked_names = scheme_make_hash_table(SCHEME_hash_ptr);
env->marked_names = marked_names;
scheme_prepare_env_renames(env, mzMOD_RENAME_TOPLEVEL);
marked_names = scheme_get_module_rename_marked_names(env->rename_set,
phase ? phase : scheme_make_integer(env->phase),
1);
}
map = scheme_hash_get(marked_names, sym);
@ -1865,7 +1878,7 @@ Scheme_Object *scheme_tl_id_sym(Scheme_Env *env, Scheme_Object *id, Scheme_Objec
existing rename. */
if (!SCHEME_HASHTP((Scheme_Object *)env) && env->module && (is_def != 2)) {
Scheme_Object *mod, *nm = id;
mod = scheme_stx_module_name(&nm, env->phase, NULL, NULL, NULL, NULL);
mod = scheme_stx_module_name(&nm, scheme_make_integer(env->phase), NULL, NULL, NULL, NULL, NULL);
if (mod /* must refer to env->module, otherwise there would
have been an error before getting here */
&& NOT_SAME_OBJ(nm, sym))
@ -2331,9 +2344,10 @@ scheme_lookup_binding(Scheme_Object *find_id, Scheme_Comp_Env *env, int flags,
Scheme_Object **_lexical_binding_id)
{
Scheme_Comp_Env *frame;
int j = 0, p = 0, modpos, skip_stops = 0, mod_defn_phase, module_self_reference = 0;
int j = 0, p = 0, modpos, skip_stops = 0, module_self_reference = 0;
Scheme_Bucket *b;
Scheme_Object *val, *modidx, *modname, *src_find_id, *find_global_id;
Scheme_Object *val, *modidx, *modname, *src_find_id, *find_global_id, *mod_defn_phase;
Scheme_Object *find_id_sym = NULL;
Scheme_Env *genv;
long phase;
@ -2372,16 +2386,20 @@ scheme_lookup_binding(Scheme_Object *find_id, Scheme_Comp_Env *env, int flags,
uid = scheme_env_frame_uid(frame);
if (!find_id_sym
&& (frame->flags & SCHEME_CAPTURE_WITHOUT_RENAME))
find_id_sym = scheme_stx_get_module_eq_sym(find_id, scheme_make_integer(phase));
for (i = frame->num_bindings; i--; ) {
if (frame->values[i]) {
if (frame->uids)
uid = frame->uids[i];
if (SAME_OBJ(SCHEME_STX_VAL(find_id), SCHEME_STX_VAL(frame->values[i]))
&& (scheme_stx_env_bound_eq(find_id, frame->values[i], uid, phase)
&& (scheme_stx_env_bound_eq(find_id, frame->values[i], uid, scheme_make_integer(phase))
|| ((frame->flags & SCHEME_CAPTURE_WITHOUT_RENAME)
&& scheme_stx_module_eq(find_id, frame->values[i], phase))
&& scheme_stx_module_eq2(find_id, frame->values[i], scheme_make_integer(phase), find_id_sym))
|| ((frame->flags & SCHEME_CAPTURE_LIFTED)
&& scheme_stx_bound_eq(find_id, frame->values[i], phase)))) {
&& scheme_stx_bound_eq(find_id, frame->values[i], scheme_make_integer(phase))))) {
/* Found a lambda-, let-, etc. bound variable: */
/* First, check certs (don't bind with fewer certs): */
if (!(flags & SCHEME_NO_CERT_CHECKS)
@ -2414,12 +2432,14 @@ scheme_lookup_binding(Scheme_Object *find_id, Scheme_Comp_Env *env, int flags,
for (i = COMPILE_DATA(frame)->num_const; i--; ) {
int issame;
if (frame->flags & SCHEME_CAPTURE_WITHOUT_RENAME)
issame = scheme_stx_module_eq(find_id, COMPILE_DATA(frame)->const_names[i], phase);
else {
issame = scheme_stx_module_eq2(find_id, COMPILE_DATA(frame)->const_names[i],
scheme_make_integer(phase), find_id_sym);
else {
if (COMPILE_DATA(frame)->const_uids) uid = COMPILE_DATA(frame)->const_uids[i];
issame = (SAME_OBJ(SCHEME_STX_VAL(find_id),
SCHEME_STX_VAL(COMPILE_DATA(frame)->const_names[i]))
&& scheme_stx_env_bound_eq(find_id, COMPILE_DATA(frame)->const_names[i], uid, phase));
&& scheme_stx_env_bound_eq(find_id, COMPILE_DATA(frame)->const_names[i], uid,
scheme_make_integer(phase)));
}
if (issame) {
@ -2466,7 +2486,7 @@ scheme_lookup_binding(Scheme_Object *find_id, Scheme_Comp_Env *env, int flags,
}
src_find_id = find_id;
modidx = scheme_stx_module_name(&find_id, phase, NULL, NULL, &mod_defn_phase, NULL);
modidx = scheme_stx_module_name(&find_id, scheme_make_integer(phase), NULL, NULL, &mod_defn_phase, NULL, NULL);
/* Used out of context? */
if (SAME_OBJ(modidx, scheme_undefined)) {
@ -2488,7 +2508,7 @@ scheme_lookup_binding(Scheme_Object *find_id, Scheme_Comp_Env *env, int flags,
and references to top-level definitions: */
module_self_reference = 1;
} else {
genv = scheme_module_access(modname, env->genv, mod_defn_phase);
genv = scheme_module_access(modname, env->genv, SCHEME_INT_VAL(mod_defn_phase));
if (!genv) {
if (env->genv->phase) {
@ -2496,14 +2516,14 @@ scheme_lookup_binding(Scheme_Object *find_id, Scheme_Comp_Env *env, int flags,
execution. Force all laziness at the prior level
and try again. */
scheme_module_force_lazy(env->genv, 1);
genv = scheme_module_access(modname, env->genv, mod_defn_phase);
genv = scheme_module_access(modname, env->genv, SCHEME_INT_VAL(mod_defn_phase));
}
if (!genv) {
scheme_wrong_syntax("require", NULL, src_find_id,
"namespace mismatch; reference (phase %d) to a module"
" %D that is not available (phase %d)",
env->genv->phase, modname, mod_defn_phase);
env->genv->phase, modname, SCHEME_INT_VAL(mod_defn_phase));
return NULL;
}
}
@ -2512,7 +2532,7 @@ scheme_lookup_binding(Scheme_Object *find_id, Scheme_Comp_Env *env, int flags,
genv = env->genv;
modname = NULL;
if (genv->module && !genv->rename) {
if (genv->module && genv->disallow_unbound) {
/* Free variable. Maybe don't continue. */
if (flags & (SCHEME_SETTING | SCHEME_REFERENCING)) {
scheme_wrong_syntax(((flags & SCHEME_SETTING)
@ -2530,7 +2550,7 @@ scheme_lookup_binding(Scheme_Object *find_id, Scheme_Comp_Env *env, int flags,
*_menv = genv;
if (!modname && SCHEME_STXP(find_id))
find_global_id = scheme_tl_id_sym(env->genv, find_id, NULL, 0);
find_global_id = scheme_tl_id_sym(env->genv, find_id, NULL, 0, NULL);
else
find_global_id = find_id;
@ -2576,7 +2596,8 @@ scheme_lookup_binding(Scheme_Object *find_id, Scheme_Comp_Env *env, int flags,
return NULL;
}
if (!modname && (flags & (SCHEME_SETTING | SCHEME_REFERENCING)) && (genv->module && !genv->rename)) {
if (!modname && (flags & (SCHEME_SETTING | SCHEME_REFERENCING))
&& (genv->module && genv->disallow_unbound)) {
/* Check for set! of unbound variable: */
if (!scheme_lookup_in_table(genv->toplevel, (const char *)find_global_id)) {
scheme_wrong_syntax(((flags & SCHEME_SETTING)
@ -2610,7 +2631,7 @@ scheme_lookup_binding(Scheme_Object *find_id, Scheme_Comp_Env *env, int flags,
/* Create a module variable reference, so that idx is preserved: */
return scheme_hash_module_variable(env->genv, modidx, find_id,
genv->module->insp,
modpos, mod_defn_phase);
modpos, SCHEME_INT_VAL(mod_defn_phase));
}
if (!modname && (flags & (SCHEME_SETTING | SCHEME_REFERENCING)) && genv->module) {
@ -2693,7 +2714,7 @@ void scheme_dup_symbol_check(DupCheckRecord *r, const char *where,
if (r->count <= 5) {
for (i = 0; i < r->count; i++) {
if (scheme_stx_bound_eq(symbol, r->syms[i], r->phase))
if (scheme_stx_bound_eq(symbol, r->syms[i], scheme_make_integer(r->phase)))
scheme_wrong_syntax(where, symbol, form,
"duplicate %s name", what);
}
@ -2729,7 +2750,7 @@ int scheme_check_context(Scheme_Env *env, Scheme_Object *name, Scheme_Object *ok
if (mod && SCHEME_TRUEP(mod) && NOT_SAME_OBJ(ok_modidx, mod)) {
return 1;
} else {
mod = scheme_stx_module_name(&id, env->phase, NULL, NULL, NULL, NULL);
mod = scheme_stx_module_name(&id, scheme_make_integer(env->phase), NULL, NULL, NULL, NULL, NULL);
if (SAME_OBJ(mod, scheme_undefined))
return 1;
}
@ -3614,10 +3635,8 @@ namespace_identifier(int argc, Scheme_Object *argv[])
obj = scheme_datum_to_syntax(obj, scheme_false, scheme_false, 1, 0);
/* Renamings: */
if (genv->rename)
obj = scheme_add_rename(obj, genv->rename);
if (genv->exp_env && genv->exp_env->rename)
obj = scheme_add_rename(obj, genv->exp_env->rename);
if (genv->rename_set)
obj = scheme_add_rename(obj, genv->rename_set);
return obj;
}
@ -3648,7 +3667,9 @@ namespace_variable_value(int argc, Scheme_Object *argv[])
else {
Scheme_Full_Comp_Env inlined_e;
id = scheme_make_renamed_stx(argv[0], genv->rename);
scheme_prepare_env_renames(genv, mzMOD_RENAME_TOPLEVEL);
id = scheme_make_renamed_stx(argv[0], genv->rename_set);
inlined_e.base.num_bindings = 0;
inlined_e.base.next = NULL;
@ -3774,8 +3795,8 @@ namespace_mapped_symbols(int argc, Scheme_Object *argv[])
}
}
if (env->rename)
scheme_list_module_rename(env->rename, mapped);
if (env->rename_set)
scheme_list_module_rename(env->rename_set, mapped);
l = scheme_null;
for (i = mapped->size; i--; ) {
@ -3816,7 +3837,9 @@ static Scheme_Object *do_variable_namespace(const char *who, int tl, int argc, S
0, argc, argv);
ph = env->phase;
if (tl) {
if (tl == 2) {
return scheme_make_integer(ph);
} else if (tl) {
while (ph--) {
env = env->template_env;
}
@ -3846,6 +3869,11 @@ static Scheme_Object *variable_top_level_namespace(int argc, Scheme_Object *argv
return do_variable_namespace("variable-reference->top-level-namespace", 1, argc, argv);
}
static Scheme_Object *variable_phase(int argc, Scheme_Object *argv[])
{
return do_variable_namespace("variable-reference->phase", 2, argc, argv);
}
static Scheme_Object *variable_module_path(int argc, Scheme_Object *argv[])
{
Scheme_Object *v;
@ -4016,6 +4044,19 @@ local_context(int argc, Scheme_Object *argv[])
return scheme_intern_symbol("expression");
}
static Scheme_Object *
local_phase_level(int argc, Scheme_Object *argv[])
{
Scheme_Thread *p = scheme_current_thread;
int phase;
phase = (p->current_local_env
? p->current_local_env->genv->phase
: 0);
return scheme_make_integer(phase);
}
static Scheme_Object *
local_make_intdef_context(int argc, Scheme_Object *argv[])
{
@ -4079,22 +4120,9 @@ local_module_introduce(int argc, Scheme_Object *argv[])
v = scheme_stx_to_rename(env->genv->module->rn_stx);
s = scheme_add_rename(s, v);
}
if (env->genv->module->et_rn_stx && !SAME_OBJ(scheme_true, env->genv->module->et_rn_stx)) {
v = scheme_stx_to_rename(env->genv->module->et_rn_stx);
s = scheme_add_rename(s, v);
}
if (env->genv->module->dt_rn_stx && !SAME_OBJ(scheme_true, env->genv->module->dt_rn_stx)) {
v = scheme_stx_to_rename(env->genv->module->dt_rn_stx);
s = scheme_add_rename(s, v);
}
} else {
if (env->genv->rename)
s = scheme_add_rename(s, env->genv->rename);
if (env->genv->et_rename)
s = scheme_add_rename(s, env->genv->et_rename);
if (env->genv->dt_rename) {
s = scheme_add_rename(s, env->genv->dt_rename);
}
if (env->genv->rename_set)
s = scheme_add_rename(s, env->genv->rename_set);
}
}
@ -4326,12 +4354,16 @@ local_module_imports(int argc, Scheme_Object *argv[])
if (SCHEME_TRUEP(argv[0]) && !scheme_is_module_path(argv[0]))
scheme_wrong_type("syntax-local-module-required-identifiers", "module-path or #f", 0, argc, argv);
if (!SCHEME_FALSEP(argv[1])
&& !SAME_OBJ(scheme_true, argv[1])
&& !SCHEME_INTP(argv[1])
&& !SCHEME_BIGNUMP(argv[1]))
scheme_wrong_type("syntax-local-module-required-identifiers", "exact integer, #f, or #t", 1, argc, argv);
return scheme_module_imported_list(scheme_current_thread->current_local_env->genv,
scheme_current_thread->current_local_bindings,
argv[0],
SCHEME_TRUEP(argv[1]),
SCHEME_TRUEP(argv[2]),
SCHEME_TRUEP(argv[3]));
argv[1]);
}
static Scheme_Object *

View File

@ -1553,7 +1553,7 @@ static void do_wrong_syntax(const char *where,
if (scheme_current_thread->current_local_env)
phase = scheme_current_thread->current_local_env->genv->phase;
else phase = 0;
scheme_stx_module_name(&first, phase, &mod, &nomwho, NULL, NULL);
scheme_stx_module_name(&first, scheme_make_integer(phase), &mod, &nomwho, NULL, NULL, NULL);
}
}
} else {

View File

@ -4606,13 +4606,13 @@ static Scheme_Object *call_compile_handler(Scheme_Object *form, int immediate_ev
static Scheme_Object *add_renames_unless_module(Scheme_Object *form, Scheme_Env *genv)
{
if (genv->rename) {
if (genv->rename_set) {
if (SCHEME_STX_PAIRP(form)) {
Scheme_Object *a, *d;
a = SCHEME_STX_CAR(form);
if (SCHEME_STX_SYMBOLP(a)) {
a = scheme_add_rename(a, genv->rename);
a = scheme_add_rename(a, genv->rename_set);
if (scheme_stx_module_eq(a, scheme_module_stx, 0)) {
/* Don't add renames to the whole module; let the
module's language take over. */
@ -4625,14 +4625,8 @@ static Scheme_Object *add_renames_unless_module(Scheme_Object *form, Scheme_Env
}
}
if (genv->rename)
form = scheme_add_rename(form, genv->rename);
if (genv->exp_env && genv->exp_env->rename)
form = scheme_add_rename(form, genv->exp_env->rename);
if (genv->template_env && genv->template_env->rename)
form = scheme_add_rename(form, genv->template_env->rename);
if (genv->dt_rename)
form = scheme_add_rename(form, genv->dt_rename);
if (genv->rename_set)
form = scheme_add_rename(form, genv->rename_set);
return form;
}
@ -5343,7 +5337,7 @@ scheme_compile_expand_expr(Scheme_Object *form, Scheme_Comp_Env *env,
/* If form is a marked name, then force #%top binding.
This is so temporaries can be used as defined ids. */
Scheme_Object *nm;
nm = scheme_tl_id_sym(env->genv, form, NULL, 0);
nm = scheme_tl_id_sym(env->genv, form, NULL, 0, NULL);
if (!SAME_OBJ(nm, SCHEME_STX_VAL(form))) {
stx = scheme_datum_to_syntax(top_symbol, scheme_false, scheme_sys_wraps(env), 0, 0);
@ -5738,11 +5732,11 @@ static Scheme_Object *check_top(const char *when, Scheme_Object *form, Scheme_Co
Scheme_Object *modidx, *symbol = c, *tl_id;
int bad;
tl_id = scheme_tl_id_sym(env->genv, symbol, NULL, 0);
tl_id = scheme_tl_id_sym(env->genv, symbol, NULL, 0, NULL);
if (NOT_SAME_OBJ(tl_id, SCHEME_STX_SYM(symbol))) {
/* Since the module has a rename for this id, it's certainly defined. */
} else {
modidx = scheme_stx_module_name(&symbol, env->genv->phase, NULL, NULL, NULL, NULL);
modidx = scheme_stx_module_name(&symbol, scheme_make_integer(env->genv->phase), NULL, NULL, NULL, NULL, NULL);
if (modidx) {
/* If it's an access path, resolve it: */
if (env->genv->module
@ -5753,7 +5747,7 @@ static Scheme_Object *check_top(const char *when, Scheme_Object *form, Scheme_Co
} else
bad = 1;
if (!env->genv->rename) {
if (env->genv->disallow_unbound) {
if (bad || !scheme_lookup_in_table(env->genv->toplevel, (const char *)SCHEME_STX_SYM(c))) {
scheme_wrong_syntax(when, NULL, c,
(env->genv->phase
@ -5774,7 +5768,7 @@ top_syntax(Scheme_Object *form, Scheme_Comp_Env *env, Scheme_Compile_Info *rec,
c = check_top(scheme_compile_stx_string, form, env);
c = scheme_tl_id_sym(env->genv, c, NULL, 0);
c = scheme_tl_id_sym(env->genv, c, NULL, 0, NULL);
if (env->genv->module && !rec[drec].resolve_module_ids) {
/* Self-reference in a module; need to remember the modidx. Don't
@ -8779,7 +8773,7 @@ scheme_make_lifted_defn(Scheme_Object *sys_wraps, Scheme_Object **_id, Scheme_Ob
Scheme_Object *l;
/* Registers marked id: */
scheme_tl_id_sym(env->genv, *_id, scheme_false, 2);
scheme_tl_id_sym(env->genv, *_id, scheme_false, 2, NULL);
l = icons(scheme_datum_to_syntax(define_values_symbol, scheme_false, sys_wraps, 0, 0),
icons(scheme_make_pair(*_id, scheme_null),

View File

@ -2570,73 +2570,73 @@ scheme_apply_macro(Scheme_Object *name, Scheme_Env *menv,
Scheme_Object *certs;
certs = rec[drec].certs;
if (SAME_TYPE(SCHEME_TYPE(rator), scheme_id_macro_type)) {
Scheme_Object *mark;
if (SAME_TYPE(SCHEME_TYPE(rator), scheme_id_macro_type)) {
Scheme_Object *mark;
rator = SCHEME_PTR1_VAL(rator);
/* rator is now an identifier */
rator = SCHEME_PTR1_VAL(rator);
/* rator is now an identifier */
/* and it's introduced by this expression: */
mark = scheme_new_mark();
rator = scheme_add_remove_mark(rator, mark);
/* and it's introduced by this expression: */
mark = scheme_new_mark();
rator = scheme_add_remove_mark(rator, mark);
if (for_set) {
Scheme_Object *tail, *setkw;
if (for_set) {
Scheme_Object *tail, *setkw;
tail = SCHEME_STX_CDR(code);
setkw = SCHEME_STX_CAR(code);
tail = SCHEME_STX_CDR(tail);
code = scheme_make_pair(setkw, scheme_make_pair(rator, tail));
code = scheme_datum_to_syntax(code, orig_code, orig_code, 0, 0);
} else if (SCHEME_SYMBOLP(SCHEME_STX_VAL(code)))
code = rator;
else {
code = SCHEME_STX_CDR(code);
code = scheme_make_pair(rator, code);
code = scheme_datum_to_syntax(code, orig_code, scheme_sys_wraps(env), 0, 0);
}
tail = SCHEME_STX_CDR(code);
setkw = SCHEME_STX_CAR(code);
tail = SCHEME_STX_CDR(tail);
code = scheme_make_pair(setkw, scheme_make_pair(rator, tail));
code = scheme_datum_to_syntax(code, orig_code, orig_code, 0, 0);
} else if (SCHEME_SYMBOLP(SCHEME_STX_VAL(code)))
code = rator;
else {
code = SCHEME_STX_CDR(code);
code = scheme_make_pair(rator, code);
code = scheme_datum_to_syntax(code, orig_code, scheme_sys_wraps(env), 0, 0);
}
code = cert_with_specials(code, mark, menv, orig_code, orig_code, env, env->genv->phase, 0, 0);
code = cert_with_specials(code, mark, menv, orig_code, orig_code, env, env->genv->phase, 0, 0);
code = scheme_stx_track(code, orig_code, name);
code = scheme_stx_track(code, orig_code, name);
return code;
} else {
Scheme_Object *mark, *rands_vec[1];
return code;
} else {
Scheme_Object *mark, *rands_vec[1];
certs = scheme_stx_extract_certs(code, certs);
certs = scheme_stx_extract_certs(code, certs);
if (SAME_TYPE(SCHEME_TYPE(rator), scheme_set_macro_type))
rator = SCHEME_PTR_VAL(rator);
if (SAME_TYPE(SCHEME_TYPE(rator), scheme_set_macro_type))
rator = SCHEME_PTR_VAL(rator);
mark = scheme_new_mark();
code = scheme_add_remove_mark(code, mark);
mark = scheme_new_mark();
code = scheme_add_remove_mark(code, mark);
SCHEME_EXPAND_OBSERVE_MACRO_PRE_X(rec[drec].observer, code);
SCHEME_EXPAND_OBSERVE_MACRO_PRE_X(rec[drec].observer, code);
scheme_on_next_top(env, mark, boundname, certs,
menv, menv ? menv->link_midx : env->genv->link_midx);
scheme_on_next_top(env, mark, boundname, certs,
menv, menv ? menv->link_midx : env->genv->link_midx);
rands_vec[0] = code;
code = scheme_apply(rator, 1, rands_vec);
rands_vec[0] = code;
code = scheme_apply(rator, 1, rands_vec);
SCHEME_EXPAND_OBSERVE_MACRO_POST_X(rec[drec].observer, code);
SCHEME_EXPAND_OBSERVE_MACRO_POST_X(rec[drec].observer, code);
if (!SCHEME_STXP(code)) {
scheme_raise_exn(MZEXN_FAIL_CONTRACT,
"%S: return value from syntax expander was not syntax: %V",
SCHEME_STX_SYM(name),
code);
}
if (!SCHEME_STXP(code)) {
scheme_raise_exn(MZEXN_FAIL_CONTRACT,
"%S: return value from syntax expander was not syntax: %V",
SCHEME_STX_SYM(name),
code);
}
code = scheme_add_remove_mark(code, mark);
code = scheme_add_remove_mark(code, mark);
code = cert_with_specials(code, mark, menv, orig_code, orig_code, env, env->genv->phase, 0, 0);
code = cert_with_specials(code, mark, menv, orig_code, orig_code, env, env->genv->phase, 0, 0);
code = scheme_stx_track(code, orig_code, name);
code = scheme_stx_track(code, orig_code, name);
return code;
}
return code;
}
}
/*========================================================================*/

View File

@ -166,6 +166,8 @@ static Scheme_Object *do_hash(Scheme_Hash_Table *table, Scheme_Object *key, int
_h2 = NULL;
} else
_h2 = &h2;
if ((long)table->make_hash_indices < 0x100)
*(long *)0x0 = 1; /* REMOVEME */
table->make_hash_indices((void *)key, (long *)&h, (long *)_h2);
h = h & mask;
if (_h2) {

File diff suppressed because it is too large Load Diff

View File

@ -2054,15 +2054,11 @@ static int namespace_val_MARK(void *p) {
gcMARK(e->export_registry);
gcMARK(e->insp);
gcMARK(e->rename);
gcMARK(e->et_rename);
gcMARK(e->tt_rename);
gcMARK(e->dt_rename);
gcMARK(e->rename_set);
gcMARK(e->syntax);
gcMARK(e->exp_env);
gcMARK(e->template_env);
gcMARK(e->label_env);
gcMARK(e->shadowed_syntax);
@ -2071,13 +2067,13 @@ static int namespace_val_MARK(void *p) {
gcMARK(e->et_require_names);
gcMARK(e->tt_require_names);
gcMARK(e->dt_require_names);
gcMARK(e->other_require_names);
gcMARK(e->toplevel);
gcMARK(e->modchain);
gcMARK(e->modvars);
gcMARK(e->marked_names);
return
gcBYTES_TO_WORDS(sizeof(Scheme_Env));
@ -2091,15 +2087,11 @@ static int namespace_val_FIXUP(void *p) {
gcFIXUP(e->export_registry);
gcFIXUP(e->insp);
gcFIXUP(e->rename);
gcFIXUP(e->et_rename);
gcFIXUP(e->tt_rename);
gcFIXUP(e->dt_rename);
gcFIXUP(e->rename_set);
gcFIXUP(e->syntax);
gcFIXUP(e->exp_env);
gcFIXUP(e->template_env);
gcFIXUP(e->label_env);
gcFIXUP(e->shadowed_syntax);
@ -2108,13 +2100,13 @@ static int namespace_val_FIXUP(void *p) {
gcFIXUP(e->et_require_names);
gcFIXUP(e->tt_require_names);
gcFIXUP(e->dt_require_names);
gcFIXUP(e->other_require_names);
gcFIXUP(e->toplevel);
gcFIXUP(e->modchain);
gcFIXUP(e->modvars);
gcFIXUP(e->marked_names);
return
gcBYTES_TO_WORDS(sizeof(Scheme_Env));
@ -2324,6 +2316,7 @@ static int module_val_MARK(void *p) {
gcMARK(m->requires);
gcMARK(m->tt_requires);
gcMARK(m->dt_requires);
gcMARK(m->other_requires);
gcMARK(m->body);
gcMARK(m->et_body);
@ -2351,9 +2344,6 @@ static int module_val_MARK(void *p) {
gcMARK(m->dummy);
gcMARK(m->rn_stx);
gcMARK(m->et_rn_stx);
gcMARK(m->tt_rn_stx);
gcMARK(m->dt_rn_stx);
gcMARK(m->primitive);
return
@ -2368,6 +2358,7 @@ static int module_val_FIXUP(void *p) {
gcFIXUP(m->requires);
gcFIXUP(m->tt_requires);
gcFIXUP(m->dt_requires);
gcFIXUP(m->other_requires);
gcFIXUP(m->body);
gcFIXUP(m->et_body);
@ -2395,9 +2386,6 @@ static int module_val_FIXUP(void *p) {
gcFIXUP(m->dummy);
gcFIXUP(m->rn_stx);
gcFIXUP(m->et_rn_stx);
gcFIXUP(m->tt_rn_stx);
gcFIXUP(m->dt_rn_stx);
gcFIXUP(m->primitive);
return
@ -2416,6 +2404,8 @@ static int module_phase_exports_val_SIZE(void *p) {
static int module_phase_exports_val_MARK(void *p) {
Scheme_Module_Phase_Exports *m = (Scheme_Module_Phase_Exports *)p;
gcMARK(m->phase_index);
gcMARK(m->src_modidx);
gcMARK(m->provides);
@ -2436,6 +2426,8 @@ static int module_phase_exports_val_MARK(void *p) {
static int module_phase_exports_val_FIXUP(void *p) {
Scheme_Module_Phase_Exports *m = (Scheme_Module_Phase_Exports *)p;
gcFIXUP(m->phase_index);
gcFIXUP(m->src_modidx);
gcFIXUP(m->provides);
@ -2468,6 +2460,7 @@ static int module_exports_val_MARK(void *p) {
gcMARK(m->rt);
gcMARK(m->et);
gcMARK(m->dt);
gcMARK(m->other_phases);
gcMARK(m->src_modidx);
return
@ -2480,6 +2473,7 @@ static int module_exports_val_FIXUP(void *p) {
gcFIXUP(m->rt);
gcFIXUP(m->et);
gcFIXUP(m->dt);
gcFIXUP(m->other_phases);
gcFIXUP(m->src_modidx);
return
@ -4842,6 +4836,7 @@ static int mark_rename_table_SIZE(void *p) {
static int mark_rename_table_MARK(void *p) {
Module_Renames *rn = (Module_Renames *)p;
gcMARK(rn->phase);
gcMARK(rn->ht);
gcMARK(rn->nomarshal_ht);
gcMARK(rn->unmarshal_info);
@ -4854,6 +4849,7 @@ static int mark_rename_table_MARK(void *p) {
static int mark_rename_table_FIXUP(void *p) {
Module_Renames *rn = (Module_Renames *)p;
gcFIXUP(rn->phase);
gcFIXUP(rn->ht);
gcFIXUP(rn->nomarshal_ht);
gcFIXUP(rn->unmarshal_info);
@ -4868,6 +4864,35 @@ static int mark_rename_table_FIXUP(void *p) {
#define mark_rename_table_IS_CONST_SIZE 1
static int mark_rename_table_set_SIZE(void *p) {
return
gcBYTES_TO_WORDS(sizeof(Module_Renames_Set));
}
static int mark_rename_table_set_MARK(void *p) {
Module_Renames_Set *rns = (Module_Renames_Set *)p;
gcMARK(rns->et);
gcMARK(rns->rt);
gcMARK(rns->other_phases);
gcMARK(rns->share_marked_names);
return
gcBYTES_TO_WORDS(sizeof(Module_Renames_Set));
}
static int mark_rename_table_set_FIXUP(void *p) {
Module_Renames_Set *rns = (Module_Renames_Set *)p;
gcFIXUP(rns->et);
gcFIXUP(rns->rt);
gcFIXUP(rns->other_phases);
gcFIXUP(rns->share_marked_names);
return
gcBYTES_TO_WORDS(sizeof(Module_Renames_Set));
}
#define mark_rename_table_set_IS_ATOMIC 0
#define mark_rename_table_set_IS_CONST_SIZE 1
static int mark_srcloc_SIZE(void *p) {
return
gcBYTES_TO_WORDS(sizeof(Scheme_Stx_Srcloc));

View File

@ -814,15 +814,11 @@ namespace_val {
gcMARK(e->export_registry);
gcMARK(e->insp);
gcMARK(e->rename);
gcMARK(e->et_rename);
gcMARK(e->tt_rename);
gcMARK(e->dt_rename);
gcMARK(e->rename_set);
gcMARK(e->syntax);
gcMARK(e->exp_env);
gcMARK(e->template_env);
gcMARK(e->label_env);
gcMARK(e->shadowed_syntax);
@ -831,13 +827,13 @@ namespace_val {
gcMARK(e->et_require_names);
gcMARK(e->tt_require_names);
gcMARK(e->dt_require_names);
gcMARK(e->other_require_names);
gcMARK(e->toplevel);
gcMARK(e->modchain);
gcMARK(e->modvars);
gcMARK(e->marked_names);
size:
gcBYTES_TO_WORDS(sizeof(Scheme_Env));
@ -921,6 +917,7 @@ module_val {
gcMARK(m->requires);
gcMARK(m->tt_requires);
gcMARK(m->dt_requires);
gcMARK(m->other_requires);
gcMARK(m->body);
gcMARK(m->et_body);
@ -948,9 +945,6 @@ module_val {
gcMARK(m->dummy);
gcMARK(m->rn_stx);
gcMARK(m->et_rn_stx);
gcMARK(m->tt_rn_stx);
gcMARK(m->dt_rn_stx);
gcMARK(m->primitive);
size:
@ -961,6 +955,8 @@ module_phase_exports_val {
mark:
Scheme_Module_Phase_Exports *m = (Scheme_Module_Phase_Exports *)p;
gcMARK(m->phase_index);
gcMARK(m->src_modidx);
gcMARK(m->provides);
@ -985,6 +981,7 @@ module_exports_val {
gcMARK(m->rt);
gcMARK(m->et);
gcMARK(m->dt);
gcMARK(m->other_phases);
gcMARK(m->src_modidx);
size:
@ -1974,6 +1971,7 @@ START stxobj;
mark_rename_table {
mark:
Module_Renames *rn = (Module_Renames *)p;
gcMARK(rn->phase);
gcMARK(rn->ht);
gcMARK(rn->nomarshal_ht);
gcMARK(rn->unmarshal_info);
@ -1984,6 +1982,17 @@ mark_rename_table {
gcBYTES_TO_WORDS(sizeof(Module_Renames));
}
mark_rename_table_set {
mark:
Module_Renames_Set *rns = (Module_Renames_Set *)p;
gcMARK(rns->et);
gcMARK(rns->rt);
gcMARK(rns->other_phases);
gcMARK(rns->share_marked_names);
size:
gcBYTES_TO_WORDS(sizeof(Module_Renames_Set));
}
mark_srcloc {
mark:
Scheme_Stx_Srcloc *s = (Scheme_Stx_Srcloc *)p;

View File

@ -4460,12 +4460,8 @@ static Scheme_Object *do_load_handler(void *data)
/* ... end special support for module loading ... */
genv = scheme_get_env(config);
if (genv->rename)
obj = scheme_add_rename(obj, genv->rename);
if (genv->exp_env && genv->exp_env->rename)
obj = scheme_add_rename(obj, genv->exp_env->rename);
if (genv->template_env && genv->template_env->rename)
obj = scheme_add_rename(obj, genv->template_env->rename);
if (genv->rename_set)
obj = scheme_add_rename(obj, genv->rename_set);
last_val = _scheme_apply_multi_with_prompt(scheme_get_param(config, MZCONFIG_EVAL_HANDLER),
1, &obj);

View File

@ -1,3 +1,4 @@
#lang scheme/base
(define filename "stypes.h")

View File

@ -13,7 +13,7 @@
#define USE_COMPILED_STARTUP 1
#define EXPECTED_PRIM_COUNT 893
#define EXPECTED_PRIM_COUNT 895
#ifdef MZSCHEME_SOMETHING_OMITTED
# undef USE_COMPILED_STARTUP

View File

@ -591,7 +591,7 @@ typedef struct Scheme_Stx {
Scheme_Stx_Srcloc *srcloc;
Scheme_Object *wraps;
union {
long lazy_prefix; /* # of initial items in wraps to propagate */
long lazy_prefix; /* # of insitial items in wraps to propagate */
Scheme_Object *modinfo_cache;
} u;
Scheme_Object *certs; /* cert chain or pair of cert chains */
@ -658,14 +658,27 @@ Scheme_Object *scheme_stx_remove_extra_marks(Scheme_Object *o, Scheme_Object *re
struct Scheme_Module_Phase_Exports; /* forward declaration */
Scheme_Object *scheme_make_module_rename(long phase, int kind, Scheme_Hash_Table *mns);
Scheme_Object *scheme_make_module_rename_set(int kind, Scheme_Object *share_marked_names);
void scheme_add_module_rename_to_set(Scheme_Object *set, Scheme_Object *rn);
Scheme_Object *scheme_get_module_rename_from_set(Scheme_Object *set, Scheme_Object *phase, int create);
Scheme_Hash_Table *scheme_get_module_rename_marked_names(Scheme_Object *set, Scheme_Object *phase, int create);
void scheme_append_rename_set_to_env(Scheme_Object *rns, Scheme_Env *env);
void scheme_seal_module_rename(Scheme_Object *rn);
void scheme_seal_module_rename_set(Scheme_Object *rns);
Scheme_Object *scheme_make_module_rename(Scheme_Object *phase, int kind, Scheme_Hash_Table *mns);
void scheme_extend_module_rename(Scheme_Object *rn, Scheme_Object *modname,
Scheme_Object *locname, Scheme_Object *exname,
Scheme_Object *nominal_src, Scheme_Object *nominal_ex,
int mod_phase, int src_phase_index, int drop_for_marshal);
int mod_phase, Scheme_Object *src_phase_index,
Scheme_Object *nom_export_phase, int drop_for_marshal);
void scheme_extend_module_rename_with_shared(Scheme_Object *rn, Scheme_Object *modidx,
struct Scheme_Module_Phase_Exports *pt, int k,
int src_phase_index,
struct Scheme_Module_Phase_Exports *pt,
Scheme_Object *unmarshal_phase_index,
Scheme_Object *src_phase_index,
int save_unmarshal);
void scheme_extend_module_rename_with_kernel(Scheme_Object *rn, Scheme_Object *nominal_src);
void scheme_save_module_rename_unmarshal(Scheme_Object *rn, Scheme_Object *info);
@ -681,21 +694,26 @@ void scheme_list_module_rename(Scheme_Object *src, Scheme_Hash_Table *ht);
Scheme_Object *scheme_rename_to_stx(Scheme_Object *rn);
Scheme_Object *scheme_stx_to_rename(Scheme_Object *stx);
Scheme_Object *scheme_stx_shift_rename(Scheme_Object *mrn, Scheme_Object *old_midx, Scheme_Object *new_midx);
Scheme_Object *scheme_stx_shift_rename_set(Scheme_Object *mrns, Scheme_Object *old_midx, Scheme_Object *new_midx);
Scheme_Hash_Table *scheme_module_rename_marked_names(Scheme_Object *rn);
Scheme_Object *scheme_stx_content(Scheme_Object *o);
Scheme_Object *scheme_flatten_syntax_list(Scheme_Object *lst, int *islist);
int scheme_stx_module_eq(Scheme_Object *a, Scheme_Object *b, long phase);
Scheme_Object *scheme_stx_module_name(Scheme_Object **name, long phase,
int scheme_stx_module_eq2(Scheme_Object *a, Scheme_Object *b, Scheme_Object *phase, Scheme_Object *asym);
Scheme_Object *scheme_stx_get_module_eq_sym(Scheme_Object *a, Scheme_Object *phase);
Scheme_Object *scheme_stx_module_name(Scheme_Object **name, Scheme_Object *phase,
Scheme_Object **nominal_modidx,
Scheme_Object **nominal_name,
int *mod_phase, int *src_phase_index);
Scheme_Object *scheme_stx_moduleless_env(Scheme_Object *a, long phase);
Scheme_Object **mod_phase,
Scheme_Object **src_phase_index,
Scheme_Object **nominal_src_phase);
Scheme_Object *scheme_stx_moduleless_env(Scheme_Object *a, Scheme_Object *phase);
int scheme_stx_parallel_is_used(Scheme_Object *sym, Scheme_Object *stx);
int scheme_stx_bound_eq(Scheme_Object *a, Scheme_Object *b, long phase);
int scheme_stx_env_bound_eq(Scheme_Object *a, Scheme_Object *b, Scheme_Object *uid, long phase);
int scheme_stx_bound_eq(Scheme_Object *a, Scheme_Object *b, Scheme_Object *phase);
int scheme_stx_env_bound_eq(Scheme_Object *a, Scheme_Object *b, Scheme_Object *uid, Scheme_Object *phase);
Scheme_Object *scheme_stx_source_module(Scheme_Object *stx, int resolve);
@ -2225,6 +2243,7 @@ Scheme_Env *scheme_make_empty_env(void);
void scheme_prepare_exp_env(Scheme_Env *env);
void scheme_prepare_template_env(Scheme_Env *env);
void scheme_prepare_label_env(Scheme_Env *env);
void scheme_prepare_env_renames(Scheme_Env *env, int kind);
int scheme_used_app_only(Scheme_Comp_Env *env, int which);
int scheme_used_ever(Scheme_Comp_Env *env, int which);
@ -2346,6 +2365,8 @@ void scheme_unmarshal_wrap_set(Scheme_Unmarshal_Tables *ut,
struct Scheme_Env {
Scheme_Object so; /* scheme_namespace_type */
char disallow_unbound, rename_set_ready;
struct Scheme_Module *module; /* NULL => top-level */
Scheme_Hash_Table *module_registry; /* symbol -> module ; loaded modules,
@ -2354,17 +2375,11 @@ struct Scheme_Env {
Scheme_Object *insp; /* instantiation-time inspector, for granting
protected access and certificates */
/* For compilation, per-declaration: */
/* First two are passed from module to module-begin: */
Scheme_Object *rename; /* module rename record */
Scheme_Object *et_rename; /* exp-time rename record */
Scheme_Object *tt_rename; /* template-time rename record */
Scheme_Object *dt_rename; /* template-time rename record */
Scheme_Object *rename_set;
Scheme_Bucket_Table *syntax;
struct Scheme_Env *exp_env;
struct Scheme_Env *template_env;
struct Scheme_Env *label_env; /* just for renamings */
Scheme_Hash_Table *shadowed_syntax; /* top level only */
@ -2372,6 +2387,7 @@ struct Scheme_Env {
long phase, mod_phase;
Scheme_Object *link_midx;
Scheme_Object *require_names, *et_require_names, *tt_require_names, *dt_require_names; /* resolved */
Scheme_Hash_Table *other_require_names;
char running, et_running, tt_running, lazy_syntax, attached, ran, et_ran;
Scheme_Bucket_Table *toplevel;
@ -2383,8 +2399,6 @@ struct Scheme_Env {
Scheme_Hash_Table *modvars; /* for scheme_module_variable_type hashing */
Scheme_Hash_Table *marked_names; /* for mapping marked ids to uninterned symbols */
int id_counter;
};
@ -2405,6 +2419,7 @@ typedef struct Scheme_Module
Scheme_Object *requires; /* list of symbol-or-module-path-index */
Scheme_Object *tt_requires; /* list of symbol-or-module-path-index */
Scheme_Object *dt_requires; /* list of symbol-or-module-path-index */
Scheme_Hash_Table *other_requires; /* phase to list of symbol-or-module-path-index */
Scheme_Invoke_Proc prim_body;
Scheme_Invoke_Proc prim_et_body;
@ -2442,21 +2457,21 @@ typedef struct Scheme_Module
Scheme_Env *primitive;
Scheme_Object *rn_stx, *et_rn_stx, *tt_rn_stx, *dt_rn_stx;
Scheme_Object *rn_stx;
} Scheme_Module;
typedef struct Scheme_Module_Phase_Exports
{
MZTAG_IF_REQUIRED
Scheme_Object so;
int phase_index;
Scheme_Object *phase_index;
Scheme_Object *src_modidx; /* same as in enclosing Scheme_Module_Exports */
Scheme_Object **provides; /* symbols (extenal names) */
Scheme_Object **provide_srcs; /* module access paths, #f for self */
Scheme_Object **provide_src_names; /* symbols (original internal names) */
Scheme_Object **provide_nominal_srcs; /* import source if re-exported; NULL or array of lists */
Scheme_Object **provide_nominal_srcs; /* import source if re-exported; NULL or array of lists */
char *provide_src_phases; /* NULL, or src phase for for-syntax import */
int num_provides;
int num_var_provides; /* non-syntax listed first in provides */
@ -2476,7 +2491,10 @@ typedef struct Scheme_Module_Exports
unmarshal syntax-object context. */
MZTAG_IF_REQUIRED
/* Most common phases: */
Scheme_Module_Phase_Exports *rt, *et, *dt;
/* All others: */
Scheme_Hash_Table *other_phases;
Scheme_Object *src_modidx; /* the one used in marshalled syntax */
} Scheme_Module_Exports;
@ -2504,7 +2522,7 @@ void scheme_add_global_keyword_symbol(Scheme_Object *name, Scheme_Object *v, Sch
void scheme_add_global_constant(const char *name, Scheme_Object *v, Scheme_Env *env);
void scheme_add_global_constant_symbol(Scheme_Object *name, Scheme_Object *v, Scheme_Env *env);
Scheme_Object *scheme_tl_id_sym(Scheme_Env *env, Scheme_Object *id, Scheme_Object *bdg, int is_def);
Scheme_Object *scheme_tl_id_sym(Scheme_Env *env, Scheme_Object *id, Scheme_Object *bdg, int is_def, Scheme_Object *phase);
int scheme_tl_id_is_sym_used(Scheme_Hash_Table *marked_names, Scheme_Object *sym);
Scheme_Object *scheme_sys_wraps(Scheme_Comp_Env *env);
@ -2552,8 +2570,8 @@ void scheme_clear_modidx_cache(void);
void scheme_clear_shift_cache(void);
void scheme_clear_prompt_cache(void);
Scheme_Object *scheme_module_imported_list(Scheme_Env *genv, Scheme_Object *binings, Scheme_Object *modpath,
int include_run, int include_exp, int include_lbl);
Scheme_Object *scheme_module_imported_list(Scheme_Env *genv, Scheme_Object *bindings, Scheme_Object *modpath,
Scheme_Object *mode);
Scheme_Object *scheme_module_exported_list(Scheme_Object *modpath, Scheme_Env *genv);
void scheme_run_module(Scheme_Env *menv, int set_ns);

View File

@ -13,12 +13,12 @@
consistently.)
*/
#define MZSCHEME_VERSION "3.99.0.12"
#define MZSCHEME_VERSION "3.99.0.13"
#define MZSCHEME_VERSION_X 3
#define MZSCHEME_VERSION_Y 99
#define MZSCHEME_VERSION_Z 0
#define MZSCHEME_VERSION_W 12
#define MZSCHEME_VERSION_W 13
#define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y)
#define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)

File diff suppressed because it is too large Load Diff

View File

@ -114,129 +114,130 @@ enum {
scheme_case_lambda_sequence_type, /* 96 */
scheme_begin0_sequence_type, /* 97 */
scheme_rename_table_type, /* 98 */
scheme_module_type, /* 99 */
scheme_svector_type, /* 100 */
scheme_lazy_macro_type, /* 101 */
scheme_resolve_prefix_type, /* 102 */
scheme_security_guard_type, /* 103 */
scheme_indent_type, /* 104 */
scheme_udp_type, /* 105 */
scheme_udp_evt_type, /* 106 */
scheme_tcp_accept_evt_type, /* 107 */
scheme_id_macro_type, /* 108 */
scheme_evt_set_type, /* 109 */
scheme_wrap_evt_type, /* 110 */
scheme_handle_evt_type, /* 111 */
scheme_nack_guard_evt_type, /* 112 */
scheme_semaphore_repost_type, /* 113 */
scheme_channel_type, /* 114 */
scheme_channel_put_type, /* 115 */
scheme_thread_resume_type, /* 116 */
scheme_thread_suspend_type, /* 117 */
scheme_thread_dead_type, /* 118 */
scheme_poll_evt_type, /* 119 */
scheme_nack_evt_type, /* 120 */
scheme_module_registry_type, /* 121 */
scheme_thread_set_type, /* 122 */
scheme_string_converter_type, /* 123 */
scheme_alarm_type, /* 124 */
scheme_thread_cell_type, /* 125 */
scheme_channel_syncer_type, /* 126 */
scheme_special_comment_type, /* 127 */
scheme_write_evt_type, /* 128 */
scheme_always_evt_type, /* 129 */
scheme_never_evt_type, /* 130 */
scheme_progress_evt_type, /* 131 */
scheme_certifications_type, /* 132 */
scheme_already_comp_type, /* 133 */
scheme_readtable_type, /* 134 */
scheme_intdef_context_type, /* 135 */
scheme_lexical_rib_type, /* 136 */
scheme_thread_cell_values_type, /* 137 */
scheme_global_ref_type, /* 138 */
scheme_cont_mark_chain_type, /* 139 */
scheme_raw_pair_type, /* 140 */
scheme_prompt_type, /* 141 */
scheme_prompt_tag_type, /* 142 */
scheme_expanded_syntax_type, /* 143 */
scheme_delay_syntax_type, /* 144 */
scheme_cust_box_type, /* 145 */
scheme_resolved_module_path_type, /* 146 */
scheme_rename_table_set_type, /* 99 */
scheme_module_type, /* 100 */
scheme_svector_type, /* 101 */
scheme_lazy_macro_type, /* 102 */
scheme_resolve_prefix_type, /* 103 */
scheme_security_guard_type, /* 104 */
scheme_indent_type, /* 105 */
scheme_udp_type, /* 106 */
scheme_udp_evt_type, /* 107 */
scheme_tcp_accept_evt_type, /* 108 */
scheme_id_macro_type, /* 109 */
scheme_evt_set_type, /* 110 */
scheme_wrap_evt_type, /* 111 */
scheme_handle_evt_type, /* 112 */
scheme_nack_guard_evt_type, /* 113 */
scheme_semaphore_repost_type, /* 114 */
scheme_channel_type, /* 115 */
scheme_channel_put_type, /* 116 */
scheme_thread_resume_type, /* 117 */
scheme_thread_suspend_type, /* 118 */
scheme_thread_dead_type, /* 119 */
scheme_poll_evt_type, /* 120 */
scheme_nack_evt_type, /* 121 */
scheme_module_registry_type, /* 122 */
scheme_thread_set_type, /* 123 */
scheme_string_converter_type, /* 124 */
scheme_alarm_type, /* 125 */
scheme_thread_cell_type, /* 126 */
scheme_channel_syncer_type, /* 127 */
scheme_special_comment_type, /* 128 */
scheme_write_evt_type, /* 129 */
scheme_always_evt_type, /* 130 */
scheme_never_evt_type, /* 131 */
scheme_progress_evt_type, /* 132 */
scheme_certifications_type, /* 133 */
scheme_already_comp_type, /* 134 */
scheme_readtable_type, /* 135 */
scheme_intdef_context_type, /* 136 */
scheme_lexical_rib_type, /* 137 */
scheme_thread_cell_values_type, /* 138 */
scheme_global_ref_type, /* 139 */
scheme_cont_mark_chain_type, /* 140 */
scheme_raw_pair_type, /* 141 */
scheme_prompt_type, /* 142 */
scheme_prompt_tag_type, /* 143 */
scheme_expanded_syntax_type, /* 144 */
scheme_delay_syntax_type, /* 145 */
scheme_cust_box_type, /* 146 */
scheme_resolved_module_path_type, /* 147 */
scheme_module_phase_exports_type, /* 148 */
#ifdef MZTAG_REQUIRED
_scheme_last_normal_type_, /* 147 */
_scheme_last_normal_type_, /* 149 */
scheme_rt_weak_array, /* 148 */
scheme_rt_weak_array, /* 150 */
scheme_rt_comp_env, /* 149 */
scheme_rt_constant_binding, /* 150 */
scheme_rt_resolve_info, /* 151 */
scheme_rt_optimize_info, /* 152 */
scheme_rt_compile_info, /* 153 */
scheme_rt_cont_mark, /* 154 */
scheme_rt_saved_stack, /* 155 */
scheme_rt_reply_item, /* 156 */
scheme_rt_closure_info, /* 157 */
scheme_rt_overflow, /* 158 */
scheme_rt_overflow_jmp, /* 159 */
scheme_rt_meta_cont, /* 160 */
scheme_rt_dyn_wind_cell, /* 161 */
scheme_rt_dyn_wind_info, /* 162 */
scheme_rt_dyn_wind, /* 163 */
scheme_rt_dup_check, /* 164 */
scheme_rt_thread_memory, /* 165 */
scheme_rt_input_file, /* 166 */
scheme_rt_input_fd, /* 167 */
scheme_rt_oskit_console_input, /* 168 */
scheme_rt_tested_input_file, /* 169 */
scheme_rt_tested_output_file, /* 170 */
scheme_rt_indexed_string, /* 171 */
scheme_rt_output_file, /* 172 */
scheme_rt_load_handler_data, /* 173 */
scheme_rt_pipe, /* 174 */
scheme_rt_beos_process, /* 175 */
scheme_rt_system_child, /* 176 */
scheme_rt_tcp, /* 177 */
scheme_rt_write_data, /* 178 */
scheme_rt_tcp_select_info, /* 179 */
scheme_rt_namespace_option, /* 180 */
scheme_rt_param_data, /* 181 */
scheme_rt_will, /* 182 */
scheme_rt_will_registration, /* 183 */
scheme_rt_struct_proc_info, /* 184 */
scheme_rt_linker_name, /* 185 */
scheme_rt_param_map, /* 186 */
scheme_rt_finalization, /* 187 */
scheme_rt_finalizations, /* 188 */
scheme_rt_cpp_object, /* 189 */
scheme_rt_cpp_array_object, /* 190 */
scheme_rt_stack_object, /* 191 */
scheme_rt_preallocated_object, /* 192 */
scheme_thread_hop_type, /* 193 */
scheme_rt_srcloc, /* 194 */
scheme_rt_evt, /* 195 */
scheme_rt_syncing, /* 196 */
scheme_rt_comp_prefix, /* 197 */
scheme_rt_user_input, /* 198 */
scheme_rt_user_output, /* 199 */
scheme_rt_compact_port, /* 200 */
scheme_rt_read_special_dw, /* 201 */
scheme_rt_regwork, /* 202 */
scheme_rt_buf_holder, /* 203 */
scheme_rt_parameterization, /* 204 */
scheme_rt_print_params, /* 205 */
scheme_rt_read_params, /* 206 */
scheme_rt_native_code, /* 207 */
scheme_rt_native_code_plus_case, /* 208 */
scheme_rt_jitter_data, /* 209 */
scheme_rt_module_exports, /* 210 */
scheme_rt_module_phase_exports, /* 211 */
scheme_rt_delay_load_info, /* 212 */
scheme_rt_marshal_info, /* 213 */
scheme_rt_unmarshal_info, /* 214 */
scheme_rt_runstack, /* 215 */
scheme_rt_sfs_info, /* 216 */
scheme_rt_validate_clearing, /* 217 */
scheme_rt_comp_env, /* 151 */
scheme_rt_constant_binding, /* 152 */
scheme_rt_resolve_info, /* 153 */
scheme_rt_optimize_info, /* 154 */
scheme_rt_compile_info, /* 155 */
scheme_rt_cont_mark, /* 156 */
scheme_rt_saved_stack, /* 157 */
scheme_rt_reply_item, /* 158 */
scheme_rt_closure_info, /* 159 */
scheme_rt_overflow, /* 160 */
scheme_rt_overflow_jmp, /* 161 */
scheme_rt_meta_cont, /* 162 */
scheme_rt_dyn_wind_cell, /* 163 */
scheme_rt_dyn_wind_info, /* 164 */
scheme_rt_dyn_wind, /* 165 */
scheme_rt_dup_check, /* 166 */
scheme_rt_thread_memory, /* 167 */
scheme_rt_input_file, /* 168 */
scheme_rt_input_fd, /* 169 */
scheme_rt_oskit_console_input, /* 170 */
scheme_rt_tested_input_file, /* 171 */
scheme_rt_tested_output_file, /* 172 */
scheme_rt_indexed_string, /* 173 */
scheme_rt_output_file, /* 174 */
scheme_rt_load_handler_data, /* 175 */
scheme_rt_pipe, /* 176 */
scheme_rt_beos_process, /* 177 */
scheme_rt_system_child, /* 178 */
scheme_rt_tcp, /* 179 */
scheme_rt_write_data, /* 180 */
scheme_rt_tcp_select_info, /* 181 */
scheme_rt_namespace_option, /* 182 */
scheme_rt_param_data, /* 183 */
scheme_rt_will, /* 184 */
scheme_rt_will_registration, /* 185 */
scheme_rt_struct_proc_info, /* 186 */
scheme_rt_linker_name, /* 187 */
scheme_rt_param_map, /* 188 */
scheme_rt_finalization, /* 189 */
scheme_rt_finalizations, /* 190 */
scheme_rt_cpp_object, /* 191 */
scheme_rt_cpp_array_object, /* 192 */
scheme_rt_stack_object, /* 193 */
scheme_rt_preallocated_object, /* 194 */
scheme_thread_hop_type, /* 195 */
scheme_rt_srcloc, /* 196 */
scheme_rt_evt, /* 197 */
scheme_rt_syncing, /* 198 */
scheme_rt_comp_prefix, /* 199 */
scheme_rt_user_input, /* 200 */
scheme_rt_user_output, /* 201 */
scheme_rt_compact_port, /* 202 */
scheme_rt_read_special_dw, /* 203 */
scheme_rt_regwork, /* 204 */
scheme_rt_buf_holder, /* 205 */
scheme_rt_parameterization, /* 206 */
scheme_rt_print_params, /* 207 */
scheme_rt_read_params, /* 208 */
scheme_rt_native_code, /* 209 */
scheme_rt_native_code_plus_case, /* 210 */
scheme_rt_jitter_data, /* 211 */
scheme_rt_module_exports, /* 212 */
scheme_rt_delay_load_info, /* 213 */
scheme_rt_marshal_info, /* 214 */
scheme_rt_unmarshal_info, /* 215 */
scheme_rt_runstack, /* 216 */
scheme_rt_sfs_info, /* 217 */
scheme_rt_validate_clearing, /* 218 */
#endif
_scheme_last_type_

View File

@ -1102,7 +1102,7 @@ defn_targets_syntax (Scheme_Object *var, Scheme_Comp_Env *env, Scheme_Compile_In
Scheme_Object *name, *pr, *bucket;
name = SCHEME_STX_CAR(var);
name = scheme_tl_id_sym(env->genv, name, NULL, 2);
name = scheme_tl_id_sym(env->genv, name, NULL, 2, NULL);
if (rec[drec].resolve_module_ids || !env->genv->module) {
bucket = (Scheme_Object *)scheme_global_bucket(name, env->genv);
@ -4025,7 +4025,7 @@ gen_let_syntax (Scheme_Object *form, Scheme_Comp_Env *origenv, char *formname,
for (j = pre_k; j < k; j++) {
for (m = j + 1; m < k; m++) {
if (scheme_stx_bound_eq(names[m], names[j], env->genv->phase))
if (scheme_stx_bound_eq(names[m], names[j], scheme_make_integer(env->genv->phase)))
scheme_wrong_syntax(NULL, NULL, form,
"multiple bindings of `%S' in the same clause",
SCHEME_STX_SYM(names[m]));
@ -5285,7 +5285,7 @@ static Scheme_Object *stx_val(Scheme_Object *name, Scheme_Object *_env)
{
Scheme_Env *env = (Scheme_Env *)_env;
return scheme_tl_id_sym(env, name, NULL, 2);
return scheme_tl_id_sym(env, name, NULL, 2, NULL);
}
static Scheme_Object *

View File

@ -579,7 +579,7 @@ void scheme_register_traversers(void)
GC_REG_TRAV(scheme_expanded_syntax_type, twoptr_obj);
GC_REG_TRAV(scheme_module_type, module_val);
GC_REG_TRAV(scheme_rt_module_exports, module_exports_val);
GC_REG_TRAV(scheme_rt_module_phase_exports, module_phase_exports_val);
GC_REG_TRAV(scheme_module_phase_exports_type, module_phase_exports_val);
GC_REG_TRAV(scheme_module_index_type, modidx_val);
GC_REG_TRAV(scheme_security_guard_type, guard_val);