add read-language, module-compiled-language-info, and module->language-info

svn: r11827
This commit is contained in:
Matthew Flatt 2008-09-21 16:00:42 +00:00
parent cc8d16d300
commit dd7db9ff7b
15 changed files with 713 additions and 410 deletions

View File

@ -194,7 +194,7 @@
(define (read-module v)
(match v
[`(,name ,self-modidx ,functional? ,et-functional?
[`(,name ,self-modidx ,lang-info ,functional? ,et-functional?
,rename ,max-let-depth ,dummy
,prefix ,kernel-exclusion ,reprovide-kernel?
,indirect-provides ,num-indirect-provides ,protects

View File

@ -3,10 +3,12 @@
(require "../parsereq.ss"
syntax/readerr)
(provide (rename-out [planet-read read]
[planet-read-syntax read-syntax]))
(define (planet-read-fn in read-sym args src mod line col pos)
(provide (rename-out [planet-read read]
[planet-read-syntax read-syntax])
get-info)
(define (planet-get in lang-mod export-sym src line col pos mk-fail-thunk)
(let ([spec (regexp-try-match #px"^(.*?)(\\s|$)" in)]
[bad (lambda (str eof?)
((if eof?
@ -24,17 +26,27 @@
(let ([parsed-spec
(let ([str (bytes->string/latin-1 (cadr spec))])
(if (module-path? `(planet ,(string->symbol str)))
`(planet ,(string->symbol (string-append str "/lang/reader")))
`(planet ,(string->symbol (string-append str lang-mod)))
#f))])
(if parsed-spec
(let ([r (dynamic-require parsed-spec read-sym)])
(if (and (procedure? r)
(procedure-arity-includes? r (+ 5 (length args))))
(apply r (append args
(list in mod line col pos)))
(apply r (append args (list in)))))
(dynamic-require parsed-spec export-sym (mk-fail-thunk spec))
(bad (cadr spec) #f))))))
(define (get-info in mod line col pos)
(planet-get in "/lang/langinfo" 'get-info (object-name in) line col pos
(lambda (spec) (lambda () (lambda (tag) #f)))))
(define (planet-read-fn in read-sym args src mod line col pos)
(let ([r (planet-get in "/lang/reader" read-sym src mod line col pos
(lambda (spec)
(lambda ()
(error 'planet "cannot find reader for `#lang planet ~a'" spec))))])
(if (and (procedure? r)
(procedure-arity-includes? r (+ 5 (length args))))
(apply r (append args
(list in mod line col pos)))
(apply r (append args (list in))))))
(define (planet-read inp mod line col pos)
(planet-read-fn inp 'read null (object-name inp) mod line col pos))

View File

@ -293,6 +293,25 @@ explicitly the import, the import @tech{phase level} shift (where
name of the re-exported binding, and the @tech{phase level} of the
import.}
@defproc[(module-compiled-language-info [compiled-module-code compiled-module-expression?])
(or/c false/c (vector/c module-path? symbol? any/c))]{
Returns information intended to reflect the ``language'' of the
module's implementation as originally attached to the syntax of the
module's declaration though the @indexed-scheme['module-language]
@tech{syntax property}. See also @scheme[module].
If no information is available for the module, the result is
@scheme[#f]. Otherwise, the result is @scheme[(vector _mp _name _val)]
such that @scheme[((dynamic-require _mp _name) _val)] should return
function that takes a single argument. The function's argument is a
key for reflected information, and the result is a value associated
with that key. Acceptable keys and the interpretation of results is
up to external tools, such as DrScheme. If no information is
available for a given key, the result should be @scheme[#f].
See also @scheme[module->language-info].}
@;------------------------------------------------------------------------
@section[#:tag "dynreq"]{Dynamic Module Access}
@ -329,3 +348,14 @@ If @scheme[provided] is @|void-const|, then the module is
any]{
Like @scheme[dynamic-require], but in @tech{phase} 1.}
@defproc[(module->language-info [mod module-path?])
(or/c false/c (vector/c module-path? symbol? any/c))]{
Returns information intended to reflect the ``language'' of the
implementation of @scheme[mod], which must be declared (but not
necessarily @tech{instantiate}d or @tech{visit}ed) in the current
namespace. The information is the same as would have been returned by
@scheme[module-compiled-language-info] applied to the module's
implementation as compiled code.}

View File

@ -105,6 +105,52 @@ See @secref["readtables"] for an extended example that uses
@scheme[read-syntax/recursive].}
@defproc[(read-language [in input-port? (current-input-port)]
[fail-thunk (-> any) (lambda () (error ...))])
any]{
Reads @scheme[in] in the same way as @scheme[read], but stopping as
soon as a @tech{reader language} (or its absence) is determined.
A @deftech{reader language} is specified by @litchar{#lang} or
@litchar{#!} (see @secref["parse-reader"]) at the beginning of the
input, though possibly after comment forms. Instead of dispatching to
a @schemeidfont{read} or @schemeidfont{read-syntax} form as
@scheme[read] and @scheme[read-syntax] do, @scheme[read-language]
dispatches to a @schemeidfont{get-info} function (if any) exported by
the same module. The result of the @schemeidfont{get-info} function is
the result of @scheme[read-language] if it is a function of one
argument; if @schemeidfont{get-info} produces any other kind of
result, the @exnraise[exn:fail:contract].
The function produced by @schemeidfont{get-info} reflects information
about the expected syntax of the input stream. The argument to the
function serves as a key on such information; acceptable keys and the
interpretation of results is up to external tools, such as DrScheme.
If no information is available for a given key, the result should be
@scheme[#f].
The @schemeidfont{get-info} function itself is applied to five
arguments: the input port being read, the module path from which the
@schemeidfont{get-info} function was extracted, and the source line
(positive exact integer or @scheme[#f]), column (non-negative exact
integer or @scheme[#f]), and position (positive exact integer or
@scheme[#f]) of the start of the @litchar{#lang} or @litchar{#!}
form. The @schemeidfont{get-info} function may further read from the
given input port to determine its result, but it should read no
further than necessary.
If @scheme[in] starts with a @tech{reader language} specification but
the relevant module does not export @schemeidfont{get-info} (but
perhaps does export @schemeidfont{read} and
@schemeidfont{read-syntax}), then the result of @scheme[read-language]
is @scheme[#f].
If @scheme[in] does not specify a @tech{reader language}, then
@scheme[fail-thunk] is called. The default @scheme[fail-thunk] raises
@scheme[exn:fail:contract].}
@defboolparam[read-case-sensitive on?]{
A parameter that controls parsing and printing of symbols. When this

View File

@ -161,7 +161,18 @@ are evaluated in order as they appear within the module; accessing a
@tech{module-level variable} before it is defined signals a run-time
error, just like accessing an undefined global variable.
See also @secref["module-eval-model"] and @secref["mod-parse"].}
See also @secref["module-eval-model"] and @secref["mod-parse"].
When a @tech{syntax object} representing a @scheme[module] form has a
@indexed-scheme['module-language] @tech{syntax property} attached, and
when the property value is a vector of three elements where the first
is a module path (in the sense of @scheme[module-path?]) and the
second is a symbol, then the property value is preserved in the
corresponding compiled and/or declared module. The third component of
the vector should be printable and @scheme[read]able, so that it can
be preserved in marshaled bytecode. See also
@scheme[module-compiled-language-info] and
@scheme[module->language-info].}
@defform[(#%module-begin form ...)]{

View File

@ -1,3 +1,8 @@
Version 4.1.0.4
Added read-language
Added module-compiled-language-info, module->language-info,
and 'module-language property support
Version 4.1, August 2008
Changed namespaces to have a base phase; for example, calling
eval at compile-time uses a phase-1 namespace

View File

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

View File

@ -55,7 +55,9 @@ static Scheme_Object *module_compiled_p(int argc, Scheme_Object *argv[]);
static Scheme_Object *module_compiled_name(int argc, Scheme_Object *argv[]);
static Scheme_Object *module_compiled_imports(int argc, Scheme_Object *argv[]);
static Scheme_Object *module_compiled_exports(int argc, Scheme_Object *argv[]);
static Scheme_Object *module_compiled_lang_info(int argc, Scheme_Object *argv[]);
static Scheme_Object *module_to_namespace(int argc, Scheme_Object *argv[]);
static Scheme_Object *module_to_lang_info(int argc, Scheme_Object *argv[]);
static Scheme_Object *module_path_index_p(int argc, Scheme_Object *argv[]);
static Scheme_Object *module_path_index_resolve(int argc, Scheme_Object *argv[]);
@ -334,8 +336,8 @@ void scheme_init_module(Scheme_Env *env)
GLOBAL_PARAMETER("current-module-name-resolver", current_module_name_resolver, MZCONFIG_CURRENT_MODULE_RESOLVER, env);
GLOBAL_PARAMETER("current-module-declare-name", current_module_name_prefix, MZCONFIG_CURRENT_MODULE_NAME, env);
GLOBAL_PRIM_W_ARITY("dynamic-require", scheme_dynamic_require, 2, 2, env);
GLOBAL_PRIM_W_ARITY("dynamic-require-for-syntax", dynamic_require_for_syntax, 2, 2, env);
GLOBAL_PRIM_W_ARITY("dynamic-require", scheme_dynamic_require, 2, 3, env);
GLOBAL_PRIM_W_ARITY("dynamic-require-for-syntax", dynamic_require_for_syntax, 2, 3, env);
GLOBAL_PRIM_W_ARITY("namespace-require", namespace_require, 1, 1, env);
GLOBAL_PRIM_W_ARITY("namespace-attach-module", namespace_attach_module, 2, 3, env);
GLOBAL_PRIM_W_ARITY("namespace-unprotect-module", namespace_unprotect_module, 2, 3, env);
@ -346,6 +348,7 @@ void scheme_init_module(Scheme_Env *env)
GLOBAL_PRIM_W_ARITY("module-compiled-name", module_compiled_name, 1, 1, env);
GLOBAL_PRIM_W_ARITY("module-compiled-imports", module_compiled_imports, 1, 1, env);
GLOBAL_PRIM_W_ARITY2("module-compiled-exports", module_compiled_exports, 1, 1, 2, 2, env);
GLOBAL_PRIM_W_ARITY("module-compiled-language-info", module_compiled_lang_info, 1, 1, env);
GLOBAL_FOLDING_PRIM("module-path-index?", module_path_index_p, 1, 1, 1, env);
GLOBAL_PRIM_W_ARITY("module-path-index-resolve", module_path_index_resolve, 1, 1, env);
GLOBAL_PRIM_W_ARITY2("module-path-index-split", module_path_index_split, 1, 1, 2, 2, env);
@ -355,6 +358,7 @@ void scheme_init_module(Scheme_Env *env)
GLOBAL_PRIM_W_ARITY("resolved-module-path-name", resolved_module_path_name, 1, 1, env);
GLOBAL_PRIM_W_ARITY("module-provide-protected?", module_export_protected_p, 2, 2, env);
GLOBAL_PRIM_W_ARITY("module->namespace", module_to_namespace, 1, 1, env);
GLOBAL_PRIM_W_ARITY("module->language-info", module_to_lang_info, 1, 1, env);
GLOBAL_PRIM_W_ARITY("module-path?", is_module_path, 1, 1, env);
}
@ -788,7 +792,7 @@ static Scheme_Object *_dynamic_require(int argc, Scheme_Object *argv[],
int position)
{
Scheme_Object *modname, *modidx;
Scheme_Object *name, *srcname, *srcmname;
Scheme_Object *name, *srcname, *srcmname, *fail_thunk;
Scheme_Module *m, *srcm;
Scheme_Env *menv, *lookup_env = NULL;
int i, count, protected = 0;
@ -797,6 +801,10 @@ static Scheme_Object *_dynamic_require(int argc, Scheme_Object *argv[],
modname = argv[0];
name = argv[1];
if (argc > 2)
fail_thunk = argv[2];
else
fail_thunk = NULL;
errname = (phase
? ((phase < 0)
@ -809,6 +817,9 @@ static Scheme_Object *_dynamic_require(int argc, Scheme_Object *argv[],
return NULL;
}
if (fail_thunk)
scheme_check_proc_arity(errname, 0, 2, argc, argv);
if (SAME_TYPE(SCHEME_TYPE(modname), scheme_module_index_type))
modidx = modname;
else
@ -943,11 +954,14 @@ static Scheme_Object *_dynamic_require(int argc, Scheme_Object *argv[],
}
if (i == count) {
if (fail_with_error)
if (fail_with_error) {
if (fail_thunk)
return scheme_tail_apply(fail_thunk, 0, NULL);
scheme_raise_exn(MZEXN_FAIL_CONTRACT,
"%s: name is not provided: %V by module: %V",
errname,
name, srcm->modname);
}
return NULL;
}
}
@ -992,8 +1006,11 @@ static Scheme_Object *_dynamic_require(int argc, Scheme_Object *argv[],
if (!menv->ran)
scheme_run_module(menv, 1);
}
if (!b->val && fail_with_error)
if (!b->val && fail_with_error) {
if (fail_thunk)
return scheme_tail_apply(fail_thunk, 0, NULL);
scheme_unbound_global(b);
}
return b->val;
}
} else
@ -2459,6 +2476,31 @@ static Scheme_Object *module_to_namespace(int argc, Scheme_Object *argv[])
return scheme_module_to_namespace(argv[0], env);
}
static Scheme_Object *module_to_lang_info(int argc, Scheme_Object *argv[])
{
Scheme_Env *env;
Scheme_Object *name;
Scheme_Module *m;
env = scheme_get_env(NULL);
if (!SCHEME_PATHP(argv[0])
&& !scheme_is_module_path(argv[0]))
scheme_wrong_type("module->language-info", "path or module-path", 0, argc, argv);
name = scheme_module_resolve(scheme_make_modidx(argv[0], scheme_false, scheme_false), 1);
env = scheme_get_env(NULL);
m = (Scheme_Module *)scheme_hash_get(env->module_registry, name);
if (!m)
scheme_arg_mismatch("module->laguage-info",
"unknown module in the current namespace: ",
name);
return (m->lang_info ? m->lang_info : scheme_false);
}
static Scheme_Object *module_compiled_p(int argc, Scheme_Object *argv[])
{
@ -2596,6 +2638,20 @@ static Scheme_Object *module_compiled_exports(int argc, Scheme_Object *argv[])
return NULL;
}
static Scheme_Object *module_compiled_lang_info(int argc, Scheme_Object *argv[])
{
Scheme_Module *m;
m = scheme_extract_compiled_module(argv[0]);
if (m) {
return (m->lang_info ? m->lang_info : scheme_false);
}
scheme_wrong_type("module-compiled-language-info", "compiled module declaration", 0, argc, argv);
return NULL;
}
static Scheme_Object *module_path_index_p(int argc, Scheme_Object *argv[])
{
return (SAME_TYPE(SCHEME_TYPE(argv[0]), scheme_module_index_type)
@ -5193,7 +5249,7 @@ static Scheme_Object *do_module(Scheme_Object *form, Scheme_Comp_Env *env,
}
if (rec[drec].comp) {
Scheme_Object *dummy;
Scheme_Object *dummy, *pv;
dummy = scheme_make_environment_dummy(env);
m->dummy = dummy;
@ -5211,6 +5267,15 @@ static Scheme_Object *do_module(Scheme_Object *form, Scheme_Comp_Env *env,
m->ii_src = NULL;
pv = scheme_stx_property(form, scheme_intern_symbol("module-lanuage"), NULL);
if (pv) {
if (SCHEME_VECTORP(pv)
&& (3 == SCHEME_VEC_SIZE(pv))
&& scheme_is_module_path(SCHEME_VEC_ELS(pv)[0])
&& SCHEME_SYMBOLP(SCHEME_VEC_ELS(pv)[1]))
m->lang_info = pv;
}
fm = scheme_make_syntax_compiled(MODULE_EXPD, (Scheme_Object *)m);
} else {
Scheme_Object *hints, *formname;
@ -8900,6 +8965,11 @@ static Scheme_Object *write_module(Scheme_Object *obj)
l = cons(m->et_functional ? scheme_true : scheme_false, l);
l = cons(m->functional ? scheme_true : scheme_false, l);
if (m->lang_info)
l = cons(m->lang_info, l);
else
l = cons(scheme_false, l);
l = cons(m->me->src_modidx, l);
l = cons(SCHEME_PTR_VAL(m->modname), l);
@ -8951,6 +9021,18 @@ static Scheme_Object *read_module(Scheme_Object *obj)
((Scheme_Modidx *)m->me->src_modidx)->resolved = m->modname;
m->self_modidx = m->me->src_modidx;
if (!SCHEME_PAIRP(obj)) return_NULL();
e = SCHEME_CAR(obj);
if (SCHEME_FALSEP(e))
e = NULL;
else if (!(SCHEME_VECTORP(e)
&& (3 == SCHEME_VEC_SIZE(e))
&& scheme_is_module_path(SCHEME_VEC_ELS(e)[0])
&& SCHEME_SYMBOLP(SCHEME_VEC_ELS(e)[1])))
return_NULL();
m->lang_info = e;
obj = SCHEME_CDR(obj);
if (!SCHEME_PAIRP(obj)) return_NULL();
m->functional = SCHEME_TRUEP(SCHEME_CAR(obj));
obj = SCHEME_CDR(obj);

View File

@ -2348,6 +2348,8 @@ static int module_val_MARK(void *p) {
gcMARK(m->insp);
gcMARK(m->lang_info);
gcMARK(m->hints);
gcMARK(m->ii_src);
@ -2390,6 +2392,8 @@ static int module_val_FIXUP(void *p) {
gcFIXUP(m->insp);
gcFIXUP(m->lang_info);
gcFIXUP(m->hints);
gcFIXUP(m->ii_src);

View File

@ -943,6 +943,8 @@ module_val {
gcMARK(m->insp);
gcMARK(m->lang_info);
gcMARK(m->hints);
gcMARK(m->ii_src);

View File

@ -53,6 +53,7 @@ static Scheme_Object *read_syntax_f (int, Scheme_Object *[]);
static Scheme_Object *read_syntax_recur_f (int, Scheme_Object *[]);
static Scheme_Object *read_honu_syntax_f (int, Scheme_Object *[]);
static Scheme_Object *read_honu_syntax_recur_f (int, Scheme_Object *[]);
static Scheme_Object *read_language (int, Scheme_Object *[]);
static Scheme_Object *read_char (int, Scheme_Object *[]);
static Scheme_Object *read_char_spec (int, Scheme_Object *[]);
static Scheme_Object *read_byte (int, Scheme_Object *[]);
@ -262,6 +263,7 @@ scheme_init_port_fun(Scheme_Env *env)
GLOBAL_NONCM_PRIM("read-honu/recursive", read_honu_recur_f, 0, 1, env);
GLOBAL_NONCM_PRIM("read-honu-syntax", read_honu_syntax_f, 0, 2, env);
GLOBAL_NONCM_PRIM("read-honu-syntax/recursive", read_honu_syntax_recur_f, 0, 2, env);
GLOBAL_NONCM_PRIM("read-language", read_language, 0, 2, env);
GLOBAL_NONCM_PRIM("read-char", read_char, 0, 1, env);
GLOBAL_NONCM_PRIM("read-char-or-special", read_char_spec, 0, 1, env);
GLOBAL_NONCM_PRIM("read-byte", read_byte, 0, 1, env);
@ -2856,6 +2858,30 @@ static Scheme_Object *read_honu_syntax_recur_f(int argc, Scheme_Object *argv[])
return do_read_syntax_f("read-honu-syntax/recursive", argc, argv, 1, 1);
}
static Scheme_Object *read_language(int argc, Scheme_Object **argv)
{
Scheme_Object *port, *v, *fail_thunk = NULL;
if (argc > 0) {
port = argv[0];
if (!SCHEME_INPUT_PORTP(port))
scheme_wrong_type("read-language", "input-port", 0, argc, argv);
if (argc > 1) {
scheme_check_proc_arity("read-language", 0, 1, argc, argv);
fail_thunk = argv[1];
}
} else {
port = CURRENT_INPUT_PORT(scheme_current_config());
}
v = scheme_read_language(port, !!fail_thunk);
if (SCHEME_VOIDP(v))
return _scheme_tail_apply(fail_thunk, 0, NULL);
return v;
}
static Scheme_Object *
do_read_char(char *name, int argc, Scheme_Object *argv[], int peek, int spec, int is_byte)
{

View File

@ -254,6 +254,7 @@ static Scheme_Object *read_reader(Scheme_Object *port, Scheme_Object *stxsrc,
ReadParams *params);
static Scheme_Object *read_lang(Scheme_Object *port, Scheme_Object *stxsrc,
long line, long col, long pos,
int get_info,
Scheme_Hash_Table **ht,
Scheme_Object *indentation,
ReadParams *params,
@ -267,6 +268,10 @@ static void unexpected_closer(int ch,
long line, long col, long pos,
Scheme_Object *indentation,
ReadParams *params);
static Scheme_Object *expected_lang(const char *prefix, int ch,
Scheme_Object *port, Scheme_Object *stxsrc,
long line, long col, long pos,
int get_info);
static void pop_indentation(Scheme_Object *indentation);
static int skip_whitespace_comments(Scheme_Object *port, Scheme_Object *stxsrc,
@ -276,6 +281,7 @@ static int skip_whitespace_comments(Scheme_Object *port, Scheme_Object *stxsrc,
static Scheme_Object *readtable_call(int w_char, int ch, Scheme_Object *proc, ReadParams *params,
Scheme_Object *port, Scheme_Object *src, long line, long col, long pos,
int get_info,
Scheme_Hash_Table **ht, Scheme_Object *modpath_stx);
#define READTABLE_WHITESPACE 0x1
@ -709,7 +715,8 @@ static Scheme_Object *read_inner_inner(Scheme_Object *port,
ReadParams *params,
int comment_mode,
int pre_char,
Readtable *init_readtable);
Readtable *init_readtable,
int get_info);
static Scheme_Object *read_inner(Scheme_Object *port,
Scheme_Object *stxsrc,
Scheme_Hash_Table **ht,
@ -744,7 +751,7 @@ static Scheme_Object *read_inner_inner_k(void)
p->ku.k.p4 = NULL;
p->ku.k.p5 = NULL;
return read_inner_inner(o, stxsrc, ht, indentation, params, p->ku.k.i1, p->ku.k.i2, table);
return read_inner_inner(o, stxsrc, ht, indentation, params, p->ku.k.i1, p->ku.k.i2, table, p->ku.k.i3);
}
#endif
@ -753,7 +760,8 @@ static Scheme_Object *read_inner_inner_k(void)
static Scheme_Object *
read_inner_inner(Scheme_Object *port, Scheme_Object *stxsrc, Scheme_Hash_Table **ht,
Scheme_Object *indentation, ReadParams *params,
int comment_mode, int pre_char, Readtable *table)
int comment_mode, int pre_char, Readtable *table,
int get_info)
{
int ch, ch2, depth, dispatch_ch, special_value_need_copy = 0;
long line = 0, col = 0, pos = 0;
@ -785,6 +793,7 @@ read_inner_inner(Scheme_Object *port, Scheme_Object *stxsrc, Scheme_Hash_Table *
p->ku.k.i1 = comment_mode;
p->ku.k.i2 = pre_char;
p->ku.k.i3 = get_info;
return scheme_handle_stack_overflow(read_inner_inner_k);
}
}
@ -844,6 +853,10 @@ read_inner_inner(Scheme_Object *port, Scheme_Object *stxsrc, Scheme_Hash_Table *
} else
dispatch_ch = ch;
if (get_info && (dispatch_ch != '#') && (dispatch_ch != ';')) {
return expected_lang("", ch, port, stxsrc, line, col, pos, get_info);
}
switch ( dispatch_ch )
{
case EOF:
@ -968,6 +981,10 @@ read_inner_inner(Scheme_Object *port, Scheme_Object *stxsrc, Scheme_Hash_Table *
case '#':
ch = scheme_getc_special_ok(port);
if (get_info && (ch != '|') && (ch != '!') && (ch != 'l') && (ch != ';')) {
return expected_lang("#", ch, port, stxsrc, line, col, pos, get_info);
}
if (table) {
Scheme_Object *v;
int use_default;
@ -1330,7 +1347,7 @@ read_inner_inner(Scheme_Object *port, Scheme_Object *stxsrc, Scheme_Hash_Table *
"read: #lang expressions not currently enabled");
return NULL;
}
v = read_lang(port, stxsrc, line, col, pos, ht, indentation, params, 0);
v = read_lang(port, stxsrc, line, col, pos, get_info, ht, indentation, params, 0);
if (!v) {
if (comment_mode & RETURN_FOR_SPECIAL_COMMENT)
return NULL;
@ -1601,7 +1618,7 @@ read_inner_inner(Scheme_Object *port, Scheme_Object *stxsrc, Scheme_Hash_Table *
"read: #! reader expressions not currently enabled");
return NULL;
}
v = read_lang(port, stxsrc, line, col, pos, ht, indentation, params, ch);
v = read_lang(port, stxsrc, line, col, pos, get_info, ht, indentation, params, ch);
if (!v) {
if (comment_mode & RETURN_FOR_SPECIAL_COMMENT)
return NULL;
@ -1863,7 +1880,7 @@ read_inner(Scheme_Object *port, Scheme_Object *stxsrc, Scheme_Hash_Table **ht,
Scheme_Object *indentation, ReadParams *params,
int comment_mode)
{
return read_inner_inner(port, stxsrc, ht, indentation, params, comment_mode, -1, params->table);
return read_inner_inner(port, stxsrc, ht, indentation, params, comment_mode, -1, params->table, 0);
}
#ifdef DO_STACK_CHECK
@ -2133,11 +2150,11 @@ static Scheme_Object *resolve_references(Scheme_Object *obj,
return result;
}
Scheme_Object *
_scheme_internal_read(Scheme_Object *port, Scheme_Object *stxsrc, int crc, int cant_fail, int honu_mode,
int recur, int expose_comment, int extra_char, Scheme_Object *init_readtable,
Scheme_Object *magic_sym, Scheme_Object *magic_val,
Scheme_Object *delay_load_info)
static Scheme_Object *
_internal_read(Scheme_Object *port, Scheme_Object *stxsrc, int crc, int cant_fail, int honu_mode,
int recur, int expose_comment, int extra_char, Scheme_Object *init_readtable,
Scheme_Object *magic_sym, Scheme_Object *magic_val,
Scheme_Object *delay_load_info, int get_info)
{
Scheme_Object *v, *v2;
Scheme_Config *config;
@ -2146,11 +2163,15 @@ _scheme_internal_read(Scheme_Object *port, Scheme_Object *stxsrc, int crc, int c
config = scheme_current_config();
v = scheme_get_param(config, MZCONFIG_READTABLE);
if (SCHEME_TRUEP(v))
params.table = (Readtable *)v;
else
if (get_info) {
params.table = NULL;
} else {
v = scheme_get_param(config, MZCONFIG_READTABLE);
if (SCHEME_TRUEP(v))
params.table = (Readtable *)v;
else
params.table = NULL;
}
params.can_read_compiled = crc;
v = scheme_get_param(config, MZCONFIG_CAN_READ_PIPE_QUOTE);
params.can_read_pipe_quote = SCHEME_TRUEP(v);
@ -2158,7 +2179,7 @@ _scheme_internal_read(Scheme_Object *port, Scheme_Object *stxsrc, int crc, int c
params.can_read_box = SCHEME_TRUEP(v);
v = scheme_get_param(config, MZCONFIG_CAN_READ_GRAPH);
params.can_read_graph = SCHEME_TRUEP(v);
if (crc) {
if (crc || get_info) {
params.can_read_reader = 1;
} else {
v = scheme_get_param(config, MZCONFIG_CAN_READ_READER);
@ -2215,7 +2236,8 @@ _scheme_internal_read(Scheme_Object *port, Scheme_Object *stxsrc, int crc, int c
? (SCHEME_FALSEP(init_readtable)
? NULL
: (Readtable *)init_readtable)
: params.table));
: params.table),
get_info);
extra_char = -1;
@ -2280,10 +2302,10 @@ static void *scheme_internal_read_k(void)
magic_sym = SCHEME_CAR(magic_sym);
}
return (void *)_scheme_internal_read(port, stxsrc, p->ku.k.i1, 0, p->ku.k.i2,
p->ku.k.i3 & 0x2, p->ku.k.i3 & 0x1,
p->ku.k.i4, init_readtable,
magic_sym, magic_val, delay_load_info);
return (void *)_internal_read(port, stxsrc, p->ku.k.i1, 0, p->ku.k.i2,
p->ku.k.i3 & 0x2, p->ku.k.i3 & 0x1,
p->ku.k.i4, init_readtable,
magic_sym, magic_val, delay_load_info, 0);
}
Scheme_Object *
@ -2298,8 +2320,8 @@ scheme_internal_read(Scheme_Object *port, Scheme_Object *stxsrc, int crc, int ca
crc = SCHEME_TRUEP(scheme_get_param(scheme_current_config(), MZCONFIG_CAN_READ_COMPILED));
if (cantfail) {
return _scheme_internal_read(port, stxsrc, crc, cantfail, honu_mode, recur, expose_comment, -1, NULL,
magic_sym, magic_val, delay_load_info);
return _internal_read(port, stxsrc, crc, cantfail, honu_mode, recur, expose_comment, -1, NULL,
magic_sym, magic_val, delay_load_info, 0);
} else {
if (magic_sym)
magic_sym = scheme_make_pair(magic_sym, magic_val);
@ -2320,12 +2342,12 @@ scheme_internal_read(Scheme_Object *port, Scheme_Object *stxsrc, int crc, int ca
Scheme_Object *scheme_read(Scheme_Object *port)
{
return scheme_internal_read(port, NULL, -1, 0, 0, 0, 0, -1, NULL, NULL, NULL, NULL);
return scheme_internal_read(port, NULL, -1, 0, 0, 0, 0, -1, NULL, NULL, NULL, 0);
}
Scheme_Object *scheme_read_syntax(Scheme_Object *port, Scheme_Object *stxsrc)
{
return scheme_internal_read(port, stxsrc, -1, 0, 0, 0, 0, -1, NULL, NULL, NULL, NULL);
return scheme_internal_read(port, stxsrc, -1, 0, 0, 0, 0, -1, NULL, NULL, NULL, 0);
}
Scheme_Object *scheme_resolve_placeholders(Scheme_Object *obj)
@ -3339,7 +3361,7 @@ read_number_or_symbol(int init_ch, int skip_rt, Scheme_Object *port,
/* If the readtable provides a "symbol" reader, then use it: */
if (table->symbol_parser) {
return readtable_call(1, init_ch, table->symbol_parser, params,
port, stxsrc, line, col, pos, ht, NULL);
port, stxsrc, line, col, pos, 0, ht, NULL);
/* Special-comment result is handled in main loop. */
}
}
@ -5532,7 +5554,8 @@ static int readtable_kind(Readtable *t, int ch, ReadParams *params)
static Scheme_Object *readtable_call(int w_char, int ch, Scheme_Object *proc, ReadParams *params,
Scheme_Object *port, Scheme_Object *src, long line, long col, long pos,
Scheme_Hash_Table **ht, Scheme_Object *modpath_stx)
int get_info,
Scheme_Hash_Table **ht, Scheme_Object *modpath_stx)
{
int cnt, add_srcloc = 0;
Scheme_Object *a[6], *v;
@ -5581,15 +5604,25 @@ static Scheme_Object *readtable_call(int w_char, int ch, Scheme_Object *proc, Re
ht = MALLOC_N(Scheme_Hash_Table *, 1);
}
scheme_push_continuation_frame(&cframe);
scheme_set_in_read_mark(src, ht);
if (!get_info) {
scheme_push_continuation_frame(&cframe);
scheme_set_in_read_mark(src, ht);
}
v = scheme_apply(proc, cnt, a);
scheme_pop_continuation_frame(&cframe);
if (get_info) {
a[0] = v;
if (!scheme_check_proc_arity(NULL, 1, 0, 1, a)) {
scheme_wrong_type("read-language", "procedure (arity 1)", -1, -1, a);
}
}
if (!scheme_special_comment_value(v)) {
if (!get_info) {
scheme_pop_continuation_frame(&cframe);
}
if (!get_info && !scheme_special_comment_value(v)) {
if (SCHEME_STXP(v)) {
if (!src)
v = scheme_syntax_to_datum(v, 0, NULL);
@ -5651,7 +5684,7 @@ static Scheme_Object *readtable_handle(Readtable *t, int *_ch, int *_use_default
v = SCHEME_CDR(v);
v = readtable_call(1, ch, v, params, port, src, line, col, pos, ht, NULL);
v = readtable_call(1, ch, v, params, port, src, line, col, pos, 0, ht, NULL);
return v;
}
@ -5687,7 +5720,7 @@ static Scheme_Object *readtable_handle_hash(Readtable *t, int ch, int *_use_defa
*_use_default = 0;
v = readtable_call(1, ch, v, params, port, src, line, col, pos, ht, NULL);
v = readtable_call(1, ch, v, params, port, src, line, col, pos, 0, ht, NULL);
if (scheme_special_comment_value(v))
return NULL;
@ -5927,13 +5960,20 @@ static Scheme_Object *current_reader_guard(int argc, Scheme_Object **argv)
1, NULL, NULL, 0);
}
static Scheme_Object *no_val_thunk(void *d, int argc, Scheme_Object **argv)
{
return (Scheme_Object *)d;
}
static Scheme_Object *do_reader(Scheme_Object *modpath_stx,
Scheme_Object *port,
Scheme_Object *stxsrc, long line, long col, long pos,
int get_info,
Scheme_Hash_Table **ht,
Scheme_Object *indentation, ReadParams *params)
{
Scheme_Object *modpath, *name, *a[2], *proc, *v;
Scheme_Object *modpath, *name, *a[3], *proc, *v, *no_val;
int num_a;
if (stxsrc)
modpath = scheme_syntax_to_datum(modpath_stx, 0, NULL);
@ -5946,32 +5986,51 @@ static Scheme_Object *do_reader(Scheme_Object *modpath_stx,
modpath = scheme_apply(proc, 1, a);
a[0] = modpath;
if (stxsrc)
if (get_info)
name = scheme_intern_symbol("get-info");
else if (stxsrc)
name = scheme_intern_symbol("read-syntax");
else
name = scheme_intern_symbol("read");
a[1] = name;
if (get_info) {
no_val = scheme_make_pair(scheme_false, scheme_false);
a[2] = scheme_make_closed_prim(no_val_thunk, no_val);
num_a = 3;
} else {
no_val = NULL;
num_a = 2;
}
proc = scheme_dynamic_require(2, a);
proc = scheme_dynamic_require(num_a, a);
if (get_info) {
proc = scheme_force_value(proc);
}
if (get_info && SAME_OBJ(proc, no_val))
return scheme_false;
a[0] = proc;
if (scheme_check_proc_arity(NULL, stxsrc ? 6 : 5, 0, 1, a)) {
/* provide modpath_stx to reader */
} else if (scheme_check_proc_arity(NULL, stxsrc ? 2 : 1, 0, 1, a)) {
} else if (!get_info && scheme_check_proc_arity(NULL, stxsrc ? 2 : 1, 0, 1, a)) {
/* don't provide modpath_stx to reader */
modpath_stx = NULL;
} else {
scheme_wrong_type("#reader",
(stxsrc ? "procedure (arity 2 or 6)" : "procedure (arity 1 or 5)"),
(stxsrc ? "procedure (arity 2 or 6)"
: (get_info
? "procedure (arity 5)"
: "procedure (arity 1 or 5)")),
-1, -1, a);
return NULL;
}
v = readtable_call(0, 0, proc, params,
port, stxsrc, line, col, pos,
ht, modpath_stx);
get_info, ht, modpath_stx);
if (scheme_special_comment_value(v))
if (!get_info && scheme_special_comment_value(v))
return NULL;
else
return v;
@ -5996,12 +6055,13 @@ static Scheme_Object *read_reader(Scheme_Object *port,
return NULL;
}
return do_reader(modpath, port, stxsrc, line, col, pos, ht, indentation, params);
return do_reader(modpath, port, stxsrc, line, col, pos, 0, ht, indentation, params);
}
/* "#lang " has been read */
static Scheme_Object *read_lang(Scheme_Object *port,
Scheme_Object *stxsrc, long line, long col, long pos,
int get_info,
Scheme_Hash_Table **ht,
Scheme_Object *indentation, ReadParams *params,
int init_ch)
@ -6094,7 +6154,28 @@ static Scheme_Object *read_lang(Scheme_Object *port,
stxsrc, STX_SRCTAG);
}
return do_reader(modpath, port, stxsrc, line, col, pos, ht, indentation, params);
return do_reader(modpath, port, stxsrc, line, col, pos, get_info, ht, indentation, params);
}
Scheme_Object *scheme_read_language(Scheme_Object *port, int nonlang_ok)
{
return _internal_read(port, NULL, 0, 0, 0, 0, 0, -1,
NULL, NULL, NULL, NULL, nonlang_ok ? 2 : 1);
}
static Scheme_Object *expected_lang(const char *prefix, int ch,
Scheme_Object *port, Scheme_Object *stxsrc,
long line, long col, long pos,
int get_lang)
{
if (get_lang > 1) {
return scheme_void;
} else {
scheme_read_err(port, stxsrc, line, col, pos, 1, 0, NULL,
"read-language: expected `#lang' or `#!', found `%s%c'",
prefix, ch);
return NULL;
}
}
/*========================================================================*/

View File

@ -13,7 +13,7 @@
#define USE_COMPILED_STARTUP 1
#define EXPECTED_PRIM_COUNT 926
#define EXPECTED_PRIM_COUNT 929
#ifdef MZSCHEME_SOMETHING_OMITTED
# undef USE_COMPILED_STARTUP

View File

@ -1716,6 +1716,8 @@ void scheme_internal_display(Scheme_Object *obj, Scheme_Object *port);
void scheme_internal_write(Scheme_Object *obj, Scheme_Object *port);
void scheme_internal_print(Scheme_Object *obj, Scheme_Object *port);
Scheme_Object *scheme_read_language(Scheme_Object *port, int nonlang_ok);
#define _scheme_eval_linked_expr(obj) scheme_do_eval(obj,-1,NULL,1)
#define _scheme_eval_linked_expr_multi(obj) scheme_do_eval(obj,-1,NULL,-1)
#define _scheme_eval_linked_expr_wp(obj, p) scheme_do_eval_w_thread(obj,-1,NULL,1,p)
@ -2542,6 +2544,8 @@ typedef struct Scheme_Module
Scheme_Object *insp; /* declaration-time inspector, for creating certificates
and for module instantiation */
Scheme_Object *lang_info; /* NULL or vector */
Scheme_Object *hints; /* set by expansion; moved to properties */
Scheme_Object *ii_src; /* set by compile, temporary */
Comp_Prefix *comp_prefix; /* set by body compile, temporary */

View File

@ -13,12 +13,12 @@
consistently.)
*/
#define MZSCHEME_VERSION "4.1.0.3"
#define MZSCHEME_VERSION "4.1.0.4"
#define MZSCHEME_VERSION_X 4
#define MZSCHEME_VERSION_Y 1
#define MZSCHEME_VERSION_Z 0
#define MZSCHEME_VERSION_W 3
#define MZSCHEME_VERSION_W 4
#define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y)
#define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)