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) (define (read-module v)
(match v (match v
[`(,name ,self-modidx ,functional? ,et-functional? [`(,name ,self-modidx ,lang-info ,functional? ,et-functional?
,rename ,max-let-depth ,dummy ,rename ,max-let-depth ,dummy
,prefix ,kernel-exclusion ,reprovide-kernel? ,prefix ,kernel-exclusion ,reprovide-kernel?
,indirect-provides ,num-indirect-provides ,protects ,indirect-provides ,num-indirect-provides ,protects

View File

@ -3,10 +3,12 @@
(require "../parsereq.ss" (require "../parsereq.ss"
syntax/readerr) 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)] (let ([spec (regexp-try-match #px"^(.*?)(\\s|$)" in)]
[bad (lambda (str eof?) [bad (lambda (str eof?)
((if eof? ((if eof?
@ -24,17 +26,27 @@
(let ([parsed-spec (let ([parsed-spec
(let ([str (bytes->string/latin-1 (cadr spec))]) (let ([str (bytes->string/latin-1 (cadr spec))])
(if (module-path? `(planet ,(string->symbol str))) (if (module-path? `(planet ,(string->symbol str)))
`(planet ,(string->symbol (string-append str "/lang/reader"))) `(planet ,(string->symbol (string-append str lang-mod)))
#f))]) #f))])
(if parsed-spec (if parsed-spec
(let ([r (dynamic-require parsed-spec read-sym)]) (dynamic-require parsed-spec export-sym (mk-fail-thunk 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)))))
(bad (cadr spec) #f)))))) (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) (define (planet-read inp mod line col pos)
(planet-read-fn inp 'read null (object-name 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 name of the re-exported binding, and the @tech{phase level} of the
import.} 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} @section[#:tag "dynreq"]{Dynamic Module Access}
@ -329,3 +348,14 @@ If @scheme[provided] is @|void-const|, then the module is
any]{ any]{
Like @scheme[dynamic-require], but in @tech{phase} 1.} 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].} @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?]{ @defboolparam[read-case-sensitive on?]{
A parameter that controls parsing and printing of symbols. When this 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 @tech{module-level variable} before it is defined signals a run-time
error, just like accessing an undefined global variable. 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 ...)]{ @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 Version 4.1, August 2008
Changed namespaces to have a base phase; for example, calling Changed namespaces to have a base phase; for example, calling
eval at compile-time uses a phase-1 namespace 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, 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,28,0,35,0,40,0,45,0,52,0,65,0,69,0,78, 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, 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, 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, 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, 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,64,108,101, 110,29,11,11,63,108,101,116,66,100,101,102,105,110,101,62,111,114,72,112,97,
116,42,66,117,110,108,101,115,115,64,99,111,110,100,64,119,104,101,110,66,108, 114,97,109,101,116,101,114,105,122,101,64,108,101,116,42,66,117,110,108,101,115,
101,116,114,101,99,72,112,97,114,97,109,101,116,101,114,105,122,101,63,97,110, 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, 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, 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, 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, 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, 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, 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, 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,10,2,2,2,5,2,2,2,6,2,2,2,7,2, 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,11,2,2,2,12,2,2,97,36,11,8, 2,2,8,2,2,2,9,2,2,2,10,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, 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,155,226,16,0,97,10,37,11,8,155,226,16,0,13,16, 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, 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, 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, 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, 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, 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, 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, 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,57,50,27,248,22,65,248,22,190,3,23,197,1,28,248,22, 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, 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, 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, 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, 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, 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,57,53,248,22,190,3,193,27,248, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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,151,8,248,22,184,3,248,22,64,23,201,2,64, 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, 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, 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,51,49,55,16,4, 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,51,49,56,18,158,94,10,64,118,111, 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, 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, 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, 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, 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, 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,10,11,10,35,80,158,35,35,20,103,159,35,16, 105,110,45,115,116,120,2,2,11,10,11,10,35,80,158,35,35,20,103,159,35,
0,16,0,11,11,16,0,35,11,38,35,11,11,16,10,2,3,2,4,2,5, 16,0,16,0,11,11,16,0,35,11,38,35,11,11,16,10,2,3,2,4,2,
2,6,2,7,2,8,2,9,2,10,2,11,2,12,16,10,11,11,11,11,11, 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,16,10,2,3,2,4,2,5,2,6,2,7,2,8,2,9, 11,11,11,11,11,11,16,10,2,3,2,4,2,5,2,6,2,7,2,8,2,
2,10,2,11,2,12,35,45,36,11,11,16,0,16,0,16,0,35,35,11,11, 9,2,10,2,11,2,12,35,45,36,11,11,16,0,16,0,16,0,35,35,11,
11,16,0,16,0,16,0,35,35,16,11,16,5,93,2,13,20,15,159,35,35, 11,11,16,0,16,0,16,0,35,35,16,11,16,5,93,2,13,20,15,159,35,
35,35,20,103,159,35,16,0,16,1,33,32,10,16,5,93,2,7,89,162,8, 35,35,35,20,103,159,35,16,0,16,1,33,32,10,16,5,93,2,8,89,162,
44,36,52,9,223,0,33,33,35,20,103,159,35,16,1,20,25,159,36,2,2, 8,44,36,52,9,223,0,33,33,35,20,103,159,35,16,1,20,25,159,36,2,
2,13,16,0,11,16,5,93,2,9,89,162,8,44,36,52,9,223,0,33,34, 2,2,13,16,0,11,16,5,93,2,10,89,162,8,44,36,52,9,223,0,33,
35,20,103,159,35,16,1,20,25,159,36,2,2,2,13,16,0,11,16,5,93, 34,35,20,103,159,35,16,1,20,25,159,36,2,2,2,13,16,0,11,16,5,
2,12,89,162,8,44,36,52,9,223,0,33,35,35,20,103,159,35,16,1,20, 93,2,12,89,162,8,44,36,52,9,223,0,33,35,35,20,103,159,35,16,1,
25,159,36,2,2,2,13,16,1,33,36,11,16,5,93,2,5,89,162,8,44, 20,25,159,36,2,2,2,13,16,1,33,36,11,16,5,93,2,5,89,162,8,
36,55,9,223,0,33,37,35,20,103,159,35,16,1,20,25,159,36,2,2,2, 44,36,55,9,223,0,33,37,35,20,103,159,35,16,1,20,25,159,36,2,2,
13,16,1,33,38,11,16,5,93,2,3,89,162,8,44,36,57,9,223,0,33, 2,13,16,1,33,38,11,16,5,93,2,3,89,162,8,44,36,57,9,223,0,
41,35,20,103,159,35,16,1,20,25,159,36,2,2,2,13,16,0,11,16,5, 33,41,35,20,103,159,35,16,1,20,25,159,36,2,2,2,13,16,0,11,16,
93,2,10,89,162,8,44,36,52,9,223,0,33,43,35,20,103,159,35,16,1, 5,93,2,11,89,162,8,44,36,52,9,223,0,33,43,35,20,103,159,35,16,
20,25,159,36,2,2,2,13,16,0,11,16,5,93,2,6,89,162,8,44,36, 1,20,25,159,36,2,2,2,13,16,0,11,16,5,93,2,7,89,162,8,44,
53,9,223,0,33,44,35,20,103,159,35,16,1,20,25,159,36,2,2,2,13, 36,53,9,223,0,33,44,35,20,103,159,35,16,1,20,25,159,36,2,2,2,
16,0,11,16,5,93,2,11,89,162,8,44,36,54,9,223,0,33,45,35,20, 13,16,0,11,16,5,93,2,6,89,162,8,44,36,54,9,223,0,33,45,35,
103,159,35,16,1,20,25,159,36,2,2,2,13,16,0,11,16,5,93,2,8, 20,103,159,35,16,1,20,25,159,36,2,2,2,13,16,0,11,16,5,93,2,
89,162,8,44,36,57,9,223,0,33,46,35,20,103,159,35,16,1,20,25,159, 9,89,162,8,44,36,57,9,223,0,33,46,35,20,103,159,35,16,1,20,25,
36,2,2,2,13,16,1,33,48,11,16,5,93,2,4,89,162,8,44,36,53, 159,36,2,2,2,13,16,1,33,48,11,16,5,93,2,4,89,162,8,44,36,
9,223,0,33,49,35,20,103,159,35,16,1,20,25,159,36,2,2,2,13,16, 53,9,223,0,33,49,35,20,103,159,35,16,1,20,25,159,36,2,2,2,13,
0,11,16,0,94,2,15,2,16,93,2,15,9,9,35,0}; 16,0,11,16,0,94,2,15,2,16,93,2,15,9,9,35,0};
EVAL_ONE_SIZED_STR((char *)expr, 2031); 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, 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, 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, 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, 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, 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, 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, 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, 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,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, 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, 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, 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,141,6,23,194,2,12,87,94,248,22,154,8,23,194,1,248,80, 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, 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, 28,248,22,151,13,23,195,2,23,194,1,28,248,22,150,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, 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,163,13,2,20,23,197,1,10,28,23,193,2,249,22,63,248,22, 40,48,248,22,166,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, 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,148,13,23, 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,147,13,23,195,2,249,22,149,13,23,196,1,250, 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,163,13,2,20,11,10,250,80,158,45,48,248,22,163,13, 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,151,13,249,22,149,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,164,13,248,80,159,45,52,36,248,22,65,23,199,1,87,94, 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, 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, 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, 27,28,248,22,151,13,23,195,2,23,194,1,28,248,22,150,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, 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,163,13,2,20,23,197,1,10,28,23,193,2,249,22,63,248, 158,43,48,248,22,166,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,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,188,12,23, 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,146,6,23,195,2,27, 195,2,28,23,193,2,192,87,94,23,193,1,28,248,22,149,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, 248,22,149,13,195,28,192,192,248,22,150,13,195,11,87,94,28,28,248,22,128,
12,23,195,2,10,27,248,22,188,12,23,196,2,28,23,193,2,192,87,94,23, 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,146,6,23,196,2,27,248,22,146,13,23,197,2,28,23,193, 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,147,13,23,197,2,11,12,250,22,181,8,76, 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, 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, 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, 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,28,28,248,22,128,13,23,195,2,249,22,154,8,248,22,129,13,23,197,2,
2,21,249,22,151,8,247,22,165,7,2,21,27,28,248,22,146,6,23,196,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,155,7,248,22,129,13,23,197,2,28,249,22,176,13,0,21, 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, 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, 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,133,13,248,22,158,7,250,22,182,13,0,6,35,114,120,34,47, 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,176,13,0,22,35,114,120,34,91,47,92,92,93,91,46,32,93, 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,182,13,0,19, 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, 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, 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,188,12,23,196,2,28,23,193,2,192,87,94, 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,146,6,23,196,2,27,248,22,146,13,23,197,2,28,23, 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,147,13,23,197,2,11,12,250,22,181,8, 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,146,13,23,195,2,12,248,22,143,11, 23,196,2,2,22,23,197,2,28,248,22,149,13,23,195,2,12,248,22,146,11,
249,22,152,10,248,22,175,6,250,22,130,7,2,23,23,200,1,23,201,1,247, 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,188,12,23,196,2,28,23,193,2,192,87,94,23, 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,146,6,23,196,2,27,248,22,146,13,23,197,2,28,23,193, 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,147,13,23,197,2,11,12,250,22,181,8,23, 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,146,13,23,195,2,12,248,22,143,11,249, 196,2,2,22,23,197,2,28,248,22,149,13,23,195,2,12,248,22,146,11,249,
22,152,10,248,22,175,6,250,22,130,7,2,23,23,200,1,23,201,1,247,22, 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,188,12,23,196,2,28,23,193,2,192,87,94, 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,146,6,23,196,2,27,248,22,146,13,23,197,2,28,23, 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,147,13,23,197,2,11,12,250,22,181,8, 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,146,13,23,195,2,12,248,22,143,11,249,22, 195,2,22,23,197,2,28,248,22,149,13,23,195,2,12,248,22,146,11,249,22,
152,10,248,22,175,6,250,22,130,7,2,23,199,23,201,1,247,22,23,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,143,11,249,22,182,10, 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, 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, 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, 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, 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,142,13,23,204,1, 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,142,13,248,22,64,23,202,2,23,199,2,28, 23,205,1,23,198,1,27,249,22,145,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,140,13,23,194,2,27,250,22,1,22,145,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,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,130,7,2,24, 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, 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, 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,137,13,23,194,2,27,250,22,1,22,142,13,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,137,13,193,192,253,2,38,203,204,205,206,23,15,248,22, 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, 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, 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, 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,142,13,23,206,1,23,207,1,23,200,1,27,249,22, 23,203,1,250,22,1,22,145,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, 145,13,248,22,64,23,197,2,23,201,2,28,248,22,140,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, 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, 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, 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,188,12,23,195,2,28,23,193,2,192,87,94,23,193,1, 194,2,10,27,248,22,191,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, 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,147,13,23,196,2,11,12,252,22,181,8,23,200,2, 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,146,6,23,195,2,10,248,22, 2,25,35,23,198,2,23,199,2,28,28,248,22,149,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, 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,145,13,23,197, 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,182,8,23,201,1,2,27,23, 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, 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, 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,146,6,23,197,2,27,248,22,146,13,23,198,2,28, 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,147,13,23,198,2,11,12,252,22,181, 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,146,6,23,197,2, 8,2,10,2,25,35,23,200,2,23,201,2,28,28,248,22,149,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, 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,145,13,23,199,2,87,94, 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,182,8,2,10,2,27,23,201,2, 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,134,13,250,22,181,13,0,18,35, 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,130,13, 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,146,6,23,203,2,249,22,158,7,23,204,1,8,63,23, 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,189,12,23,199,2,248,22,190,12,23,199,1,87,94,23,198, 202,1,28,248,22,128,13,23,199,2,248,22,129,13,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, 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,189,12,23,196,2,10,27,248,22, 11,90,161,37,35,11,87,95,28,28,248,22,128,13,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, 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,146,13,23,198,2,28,23,193,2,192,87,94,23,193,1,248, 197,2,27,248,22,149,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, 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,146,6,23,197,2,10,248,22,134,7,23,197,2,12,252, 201,2,28,28,248,22,149,6,23,197,2,10,248,22,137,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, 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,145,13,23,199,2,87,94,23,195,1,87,94,28,23,193,2,12, 35,11,248,22,148,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, 250,22,185,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, 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,130,13,23,203,1,6,1,1,95,28,248,22,146,6,23,202,2, 93,34,248,22,133,13,23,203,1,6,1,1,95,28,248,22,149,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, 249,22,161,7,23,203,1,8,63,23,201,1,28,248,22,128,13,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, 22,129,13,23,199,1,87,94,23,198,1,247,22,130,13,28,248,22,191,12,194,
249,22,142,13,195,194,192,249,247,22,178,4,194,11,248,80,158,36,46,9,27, 249,22,145,13,195,194,192,249,247,22,180,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, 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, 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, 28,23,196,1,250,22,145,13,248,22,166,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, 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,163,13,72,99,111,108,108, 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, 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, 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, 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, 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,133,13,23,197,1,23,195,1,87,95,23,199, 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,140,7,23,196,2,2,28,249,22,77,23,200,2,9, 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,133,13,23,197,1,9,28,249,22,140,7,23,196,2,2,28, 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,133,13,23,197,1,194, 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,140,7,23,198,2,2,28,249,22,77,195,9,87, 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,133,13,23,199,1,9,87,95,28,28,248,22, 94,23,194,1,249,22,63,248,22,136,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, 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, 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, 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, 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, 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,150, 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,153,8,23,195,2,23,202,2,11,28,248,22,146,13, 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,142,13,23,200,2,23,198, 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, 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, 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,137,13,193,10,248,22,136,13,193,192,11,11,28,23,193, 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,150,13,23,202,2,28, 2,192,87,94,23,193,1,28,23,199,2,11,27,248,22,153,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, 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,142,13,23,201,1,23,198,1,250,2,51,201, 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,149,13,248,22,64,23,199, 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,142,13,23,196,1,23,197,2,28,248,22,136,13,23,194,2,250, 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, 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, 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,136,13,23,194,2,250,2,51,201,202,195,87,94, 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, 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, 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, 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,146,13,23,197,2,28,23,193,2,192,87,94,23,193,1, 23,196,2,27,248,22,149,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, 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, 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, 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,146,6,23,197,2,27,248,22,146,13,23, 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,147,13,23,198,2,11,248, 198,2,28,23,193,2,192,87,94,23,193,1,248,22,150,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, 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, 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, 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,145,13,23,198,2,249,22,151,8,194,68,114,101,108, 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,163,7,6,4,4,80,65,84,72,251,2,50, 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, 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,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,149,13,23,196,1,28,248,22,136,13,193, 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, 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, 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, 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, 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, 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,137,67,35,37,117,116,105,108,115, 98,101,103,105,110,16,0,83,158,41,20,100,138,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, 2,1,11,11,10,10,42,80,158,35,35,20,103,159,37,16,17,30,2,1,2,
193,30,2,1,2,3,193,30,2,1,2,4,193,30,2,1,2,5,193,30,2, 2,193,30,2,1,2,3,193,30,2,1,2,4,193,30,2,1,2,5,193,30,
1,2,6,193,30,2,1,2,7,193,30,2,1,2,8,193,30,2,1,2,9, 2,1,2,6,193,30,2,1,2,7,193,30,2,1,2,8,193,30,2,1,2,
193,30,2,1,2,10,193,30,2,1,2,11,193,30,2,1,2,12,193,30,2, 9,193,30,2,1,2,10,193,30,2,1,2,11,193,30,2,1,2,12,193,30,
1,2,13,193,30,2,1,2,14,193,30,2,1,2,15,193,30,2,1,2,16, 2,1,2,13,193,30,2,1,2,14,193,30,2,1,2,15,193,30,2,1,2,
193,30,2,18,1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111, 16,193,30,2,18,1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,
110,45,107,101,121,4,30,2,18,1,23,101,120,116,101,110,100,45,112,97,114, 111,110,45,107,101,121,4,30,2,18,1,23,101,120,116,101,110,100,45,112,97,
97,109,101,116,101,114,105,122,97,116,105,111,110,3,16,0,11,11,16,4,2, 114,97,109,101,116,101,114,105,122,97,116,105,111,110,3,16,0,11,11,16,4,
6,2,5,2,3,2,9,39,11,38,35,11,11,16,11,2,8,2,7,2,16, 2,6,2,5,2,3,2,9,39,11,38,35,11,11,16,11,2,8,2,7,2,
2,15,2,13,2,12,2,4,2,11,2,14,2,10,2,2,16,11,11,11,11, 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,16,11,2,8,2,7,2,16,2,15,2,13,2, 11,11,11,11,11,11,11,11,11,16,11,2,8,2,7,2,16,2,15,2,13,
12,2,4,2,11,2,14,2,10,2,2,46,46,36,11,11,16,0,16,0,16, 2,12,2,4,2,11,2,14,2,10,2,2,46,46,36,11,11,16,0,16,0,
0,35,35,11,11,11,16,0,16,0,16,0,35,35,16,0,16,17,83,158,35, 16,0,35,35,11,11,11,16,0,16,0,16,0,35,35,16,0,16,17,83,158,
16,2,89,162,43,36,48,2,19,223,0,33,29,80,159,35,53,36,83,158,35, 35,16,2,89,162,43,36,48,2,19,223,0,33,29,80,159,35,53,36,83,158,
16,2,89,162,8,44,36,55,2,19,223,0,33,30,80,159,35,52,36,83,158, 35,16,2,89,162,8,44,36,55,2,19,223,0,33,30,80,159,35,52,36,83,
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,32,0,89,162,43,36,44,2,2,222,33,31,80,159,35,35,36,
158,35,16,2,249,22,148,6,7,92,7,92,80,159,35,36,36,83,158,35,16, 83,158,35,16,2,249,22,151,6,7,92,7,92,80,159,35,36,36,83,158,35,
2,89,162,43,36,53,2,4,223,0,33,32,80,159,35,37,36,83,158,35,16, 16,2,89,162,43,36,53,2,4,223,0,33,32,80,159,35,37,36,83,158,35,
2,32,0,89,162,8,44,37,49,2,5,222,33,33,80,159,35,38,36,83,158, 16,2,32,0,89,162,8,44,37,49,2,5,222,33,33,80,159,35,38,36,83,
35,16,2,32,0,89,162,8,44,38,50,2,6,222,33,35,80,159,35,39,36, 158,35,16,2,32,0,89,162,8,44,38,50,2,6,222,33,35,80,159,35,39,
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,89,162,8,45,37,47,2,7,223,0,33,37,80,159,35,
36,83,158,35,16,2,32,0,89,162,43,39,51,2,8,222,33,40,80,159,35, 40,36,83,158,35,16,2,32,0,89,162,43,39,51,2,8,222,33,40,80,159,
41,36,83,158,35,16,2,32,0,89,162,43,38,49,2,9,222,33,41,80,159, 35,41,36,83,158,35,16,2,32,0,89,162,43,38,49,2,9,222,33,41,80,
35,42,36,83,158,35,16,2,32,0,89,162,43,37,52,2,10,222,33,42,80, 159,35,42,36,83,158,35,16,2,32,0,89,162,43,37,52,2,10,222,33,42,
159,35,43,36,83,158,35,16,2,32,0,89,162,43,37,53,2,11,222,33,43, 80,159,35,43,36,83,158,35,16,2,32,0,89,162,43,37,53,2,11,222,33,
80,159,35,44,36,83,158,35,16,2,32,0,89,162,43,36,43,2,12,222,33, 43,80,159,35,44,36,83,158,35,16,2,32,0,89,162,43,36,43,2,12,222,
44,80,159,35,45,36,83,158,35,16,2,83,158,38,20,96,95,2,13,89,162, 33,44,80,159,35,45,36,83,158,35,16,2,83,158,38,20,96,95,2,13,89,
43,35,42,9,223,0,33,45,89,162,43,36,52,9,223,0,33,46,80,159,35, 162,43,35,42,9,223,0,33,45,89,162,43,36,52,9,223,0,33,46,80,159,
46,36,83,158,35,16,2,27,248,22,170,13,248,22,157,7,27,28,249,22,151, 35,46,36,83,158,35,16,2,27,248,22,173,13,248,22,160,7,27,28,249,22,
8,247,22,165,7,2,21,6,1,1,59,6,1,1,58,250,22,130,7,6,14, 154,8,247,22,168,7,2,21,6,1,1,59,6,1,1,58,250,22,133,7,6,
14,40,91,94,126,97,93,42,41,126,97,40,46,42,41,23,196,2,23,196,1, 14,14,40,91,94,126,97,93,42,41,126,97,40,46,42,41,23,196,2,23,196,
89,162,8,44,37,47,2,14,223,0,33,49,80,159,35,47,36,83,158,35,16, 1,89,162,8,44,37,47,2,14,223,0,33,49,80,159,35,47,36,83,158,35,
2,83,158,38,20,96,96,2,15,89,162,8,44,38,53,9,223,0,33,54,89, 16,2,83,158,38,20,96,96,2,15,89,162,8,44,38,53,9,223,0,33,54,
162,43,37,46,9,223,0,33,55,89,162,43,36,45,9,223,0,33,56,80,159, 89,162,43,37,46,9,223,0,33,55,89,162,43,36,45,9,223,0,33,56,80,
35,48,36,83,158,35,16,2,89,162,43,38,51,2,16,223,0,33,58,80,159, 159,35,48,36,83,158,35,16,2,89,162,43,38,51,2,16,223,0,33,58,80,
35,49,36,94,29,94,2,17,68,35,37,107,101,114,110,101,108,11,29,94,2, 159,35,49,36,94,29,94,2,17,68,35,37,107,101,114,110,101,108,11,29,94,
17,69,35,37,109,105,110,45,115,116,120,11,9,9,9,35,0}; 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); 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, 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,254,0,0,0,65,113,117,111,116, 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, 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, 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, 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, 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, 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, 100,138,69,35,37,98,117,105,108,116,105,110,29,11,11,11,10,10,18,96,11,
42,42,35,80,158,35,35,20,103,159,35,16,0,16,0,11,11,16,0,35,11, 42,42,42,35,80,158,35,35,20,103,159,35,16,0,16,0,11,11,16,0,35,
38,35,11,11,16,0,16,0,16,0,35,35,36,11,11,16,0,16,0,16,0, 11,38,35,11,11,16,0,16,0,16,0,35,35,36,11,11,16,0,16,0,16,
35,35,11,11,11,16,0,16,0,16,0,35,35,16,0,16,0,99,2,6,2, 0,35,35,11,11,11,16,0,16,0,16,0,35,35,16,0,16,0,99,2,6,
5,29,94,2,1,69,35,37,102,111,114,101,105,103,110,11,2,4,2,3,2, 2,5,29,94,2,1,69,35,37,102,111,114,101,105,103,110,11,2,4,2,3,
2,29,94,2,1,67,35,37,112,108,97,99,101,11,9,9,9,35,0}; 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); 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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,162,4,23,197,2,28,248,22,188,12,23,194, 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,145,13,23,197,1,87,95,83,160, 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, 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, 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,179, 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,188,12,23,198,2,23,197,1,87,94,23,197,1,247,22,164,13, 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,142,13,23,197,1,23,199,1,249,80,158,42,38,23,198,1,2, 247,194,250,22,145,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, 18,252,22,145,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, 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,159,13,196,11,32,0,89,162,8,44,35,40,9,222,11, 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,159,13, 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, 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,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,159,13,196,11,32,0,89,162, 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,177,4,248, 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,177,4,194,195,87,94,28,248,80,158,36,37,23,195, 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,181,8,77,108,111,97,100,47,117,115,101,45,99,111,109,112,105, 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, 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, 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, 11,28,248,22,151,13,23,201,2,23,200,1,27,247,22,181,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, 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,151,8,23,196,2,68, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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,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, 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, 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, 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, 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, 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,130,14,247, 193,1,27,247,22,121,87,94,250,22,131,2,80,158,42,42,248,22,133,14,247,
22,171,11,195,192,250,22,131,2,195,198,66,97,116,116,97,99,104,251,211,197, 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,180,8,11,196,195,248,22,178,8,194,28,249,22,152, 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,152,6,194,6,2,2,46,46,62,117, 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,153,8,248,22,65,23,200,2,23,197,1,28,249,22,151,8, 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,178,8,2,20,6,26,26,99,121,99, 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, 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, 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, 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, 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,188,12,23,197,2,10,248,22,165,4,23,197, 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,180,8,11,6,15,15,98,97,100,32,109,111,100, 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,181,8,2,20,6,19,19,109, 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, 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, 28,28,248,22,61,23,197,2,249,22,154,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, 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, 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, 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, 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,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, 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, 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, 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, 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, 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, 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, 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,169,6,23,199,1,6,3,3,46,115,115,28, 109,97,105,110,46,115,115,249,22,172,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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 249,22,179,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, 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,149,13,248,22,153,13,248,22,88,23,202,2, 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,188,12,23,194,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,168,7,23,194,2,87,94,23,200,1,12,28,23,200,2,250,22,180, 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,130,7,6,17,17,98,97,100,32,109, 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, 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, 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, 248,22,64,23,199,2,6,0,0,23,201,2,27,28,248,22,171,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, 249,22,176,7,23,196,2,35,249,22,154,13,248,22,155,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, 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,168,7,23,199,2,250, 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,173,7,23,203,2,37,2,22,248,22,145,13,23,198,2, 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,168,7,23,200,2,249,22,173,7, 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,168,7,23, 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,173,7,23,202,2,39,248,22,161,4,23,200,2,27,27,250,22, 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,130,14,247,22,171,11,11,28,23,193,2,192,87, 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,130, 94,23,193,1,27,247,22,121,87,94,250,22,131,2,80,158,52,42,248,22,133,
14,247,22,171,11,195,192,87,95,28,23,209,1,27,250,22,133,2,23,197,2, 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, 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, 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, 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, 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, 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, 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,151,8,248,22,64,23,210,2,2,21,11,250,22, 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,146,6,23,210,2,249,22,63,23,211,1,248, 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, 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, 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, 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, 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, 142,4,248,80,158,37,49,247,22,174,11,248,22,180,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, 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,137,66,35,37,98,111,111,116,2,1,11,10,10,36, 16,0,83,158,41,20,100,138,66,35,37,98,111,111,116,2,1,11,11,10,10,
80,158,35,35,20,103,159,39,16,19,30,2,1,2,2,193,30,2,1,2,3, 36,80,158,35,35,20,103,159,39,16,19,30,2,1,2,2,193,30,2,1,2,
193,30,2,5,72,112,97,116,104,45,115,116,114,105,110,103,63,10,30,2,5, 3,193,30,2,5,72,112,97,116,104,45,115,116,114,105,110,103,63,10,30,2,
75,112,97,116,104,45,97,100,100,45,115,117,102,102,105,120,7,30,2,6,1, 5,75,112,97,116,104,45,97,100,100,45,115,117,102,102,105,120,7,30,2,6,
20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121, 1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,
4,30,2,6,1,23,101,120,116,101,110,100,45,112,97,114,97,109,101,116,101, 121,4,30,2,6,1,23,101,120,116,101,110,100,45,112,97,114,97,109,101,116,
114,105,122,97,116,105,111,110,3,30,2,1,2,7,193,30,2,1,2,8,193, 101,114,105,122,97,116,105,111,110,3,30,2,1,2,7,193,30,2,1,2,8,
30,2,1,2,9,193,30,2,1,2,10,193,30,2,1,2,11,193,30,2,1, 193,30,2,1,2,9,193,30,2,1,2,10,193,30,2,1,2,11,193,30,2,
2,12,193,30,2,1,2,13,193,30,2,1,2,14,193,30,2,1,2,15,193, 1,2,12,193,30,2,1,2,13,193,30,2,1,2,14,193,30,2,1,2,15,
30,2,5,69,45,102,105,110,100,45,99,111,108,0,30,2,5,76,110,111,114, 193,30,2,5,69,45,102,105,110,100,45,99,111,108,0,30,2,5,76,110,111,
109,97,108,45,99,97,115,101,45,112,97,116,104,6,30,2,5,79,112,97,116, 114,109,97,108,45,99,97,115,101,45,112,97,116,104,6,30,2,5,79,112,97,
104,45,114,101,112,108,97,99,101,45,115,117,102,102,105,120,9,30,2,1,2, 116,104,45,114,101,112,108,97,99,101,45,115,117,102,102,105,120,9,30,2,1,
16,193,16,0,11,11,16,11,2,10,2,11,2,8,2,9,2,12,2,13,2, 2,16,193,16,0,11,11,16,11,2,10,2,11,2,8,2,9,2,12,2,13,
3,2,7,2,2,2,15,2,14,46,11,38,35,11,11,16,1,2,16,16,1, 2,3,2,7,2,2,2,15,2,14,46,11,38,35,11,11,16,1,2,16,16,
11,16,1,2,16,36,36,36,11,11,16,0,16,0,16,0,35,35,11,11,11, 1,11,16,1,2,16,36,36,36,11,11,16,0,16,0,16,0,35,35,11,11,
16,0,16,0,16,0,35,35,16,0,16,16,83,158,35,16,2,89,162,43,36, 11,16,0,16,0,16,0,35,35,16,0,16,16,83,158,35,16,2,89,162,43,
44,9,223,0,33,23,80,159,35,57,36,83,158,35,16,2,89,162,43,36,44, 36,44,9,223,0,33,23,80,159,35,57,36,83,158,35,16,2,89,162,43,36,
9,223,0,33,24,80,159,35,56,36,83,158,35,16,2,89,162,43,36,48,67, 44,9,223,0,33,24,80,159,35,56,36,83,158,35,16,2,89,162,43,36,48,
103,101,116,45,100,105,114,223,0,33,25,80,159,35,55,36,83,158,35,16,2, 67,103,101,116,45,100,105,114,223,0,33,25,80,159,35,55,36,83,158,35,16,
89,162,43,37,48,68,119,105,116,104,45,100,105,114,223,0,33,26,80,159,35, 2,89,162,43,37,48,68,119,105,116,104,45,100,105,114,223,0,33,26,80,159,
54,36,83,158,35,16,2,248,22,165,7,69,115,111,45,115,117,102,102,105,120, 35,54,36,83,158,35,16,2,248,22,168,7,69,115,111,45,115,117,102,102,105,
80,159,35,35,36,83,158,35,16,2,89,162,43,37,59,2,3,223,0,33,35, 120,80,159,35,35,36,83,158,35,16,2,89,162,43,37,59,2,3,223,0,33,
80,159,35,36,36,83,158,35,16,2,32,0,89,162,8,44,36,41,2,7,222, 35,80,159,35,36,36,83,158,35,16,2,32,0,89,162,8,44,36,41,2,7,
192,80,159,35,41,36,83,158,35,16,2,247,22,123,80,159,35,42,36,83,158, 222,192,80,159,35,41,36,83,158,35,16,2,247,22,123,80,159,35,42,36,83,
35,16,2,247,22,122,80,159,35,43,36,83,158,35,16,2,247,22,59,80,159, 158,35,16,2,247,22,122,80,159,35,43,36,83,158,35,16,2,247,22,59,80,
35,44,36,83,158,35,16,2,248,22,18,74,109,111,100,117,108,101,45,108,111, 159,35,44,36,83,158,35,16,2,248,22,18,74,109,111,100,117,108,101,45,108,
97,100,105,110,103,80,159,35,45,36,83,158,35,16,2,11,80,158,35,46,83, 111,97,100,105,110,103,80,159,35,45,36,83,158,35,16,2,11,80,158,35,46,
158,35,16,2,11,80,158,35,47,83,158,35,16,2,32,0,89,162,43,37,44, 83,158,35,16,2,11,80,158,35,47,83,158,35,16,2,32,0,89,162,43,37,
2,14,222,33,41,80,159,35,48,36,83,158,35,16,2,89,162,8,44,36,44, 44,2,14,222,33,41,80,159,35,48,36,83,158,35,16,2,89,162,8,44,36,
2,15,223,0,33,50,80,159,35,49,36,83,158,35,16,2,89,162,43,35,43, 44,2,15,223,0,33,50,80,159,35,49,36,83,158,35,16,2,89,162,43,35,
2,16,223,0,33,51,80,159,35,53,36,95,29,94,2,4,68,35,37,107,101, 43,2,16,223,0,33,51,80,159,35,53,36,95,29,94,2,4,68,35,37,107,
114,110,101,108,11,29,94,2,4,69,35,37,109,105,110,45,115,116,120,11,2, 101,114,110,101,108,11,29,94,2,4,69,35,37,109,105,110,45,115,116,120,11,
5,9,9,9,35,0}; 2,5,9,9,9,35,0};
EVAL_ONE_SIZED_STR((char *)expr, 4121); 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_name(int argc, Scheme_Object *argv[]);
static Scheme_Object *module_compiled_imports(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_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_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_p(int argc, Scheme_Object *argv[]);
static Scheme_Object *module_path_index_resolve(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-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_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", scheme_dynamic_require, 2, 3, env);
GLOBAL_PRIM_W_ARITY("dynamic-require-for-syntax", dynamic_require_for_syntax, 2, 2, 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-require", namespace_require, 1, 1, env);
GLOBAL_PRIM_W_ARITY("namespace-attach-module", namespace_attach_module, 2, 3, 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); 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-name", module_compiled_name, 1, 1, env);
GLOBAL_PRIM_W_ARITY("module-compiled-imports", module_compiled_imports, 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_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_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_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); 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("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-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->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); 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) int position)
{ {
Scheme_Object *modname, *modidx; Scheme_Object *modname, *modidx;
Scheme_Object *name, *srcname, *srcmname; Scheme_Object *name, *srcname, *srcmname, *fail_thunk;
Scheme_Module *m, *srcm; Scheme_Module *m, *srcm;
Scheme_Env *menv, *lookup_env = NULL; Scheme_Env *menv, *lookup_env = NULL;
int i, count, protected = 0; int i, count, protected = 0;
@ -797,6 +801,10 @@ static Scheme_Object *_dynamic_require(int argc, Scheme_Object *argv[],
modname = argv[0]; modname = argv[0];
name = argv[1]; name = argv[1];
if (argc > 2)
fail_thunk = argv[2];
else
fail_thunk = NULL;
errname = (phase errname = (phase
? ((phase < 0) ? ((phase < 0)
@ -809,6 +817,9 @@ static Scheme_Object *_dynamic_require(int argc, Scheme_Object *argv[],
return NULL; return NULL;
} }
if (fail_thunk)
scheme_check_proc_arity(errname, 0, 2, argc, argv);
if (SAME_TYPE(SCHEME_TYPE(modname), scheme_module_index_type)) if (SAME_TYPE(SCHEME_TYPE(modname), scheme_module_index_type))
modidx = modname; modidx = modname;
else else
@ -943,11 +954,14 @@ static Scheme_Object *_dynamic_require(int argc, Scheme_Object *argv[],
} }
if (i == count) { 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, scheme_raise_exn(MZEXN_FAIL_CONTRACT,
"%s: name is not provided: %V by module: %V", "%s: name is not provided: %V by module: %V",
errname, errname,
name, srcm->modname); name, srcm->modname);
}
return NULL; return NULL;
} }
} }
@ -992,8 +1006,11 @@ static Scheme_Object *_dynamic_require(int argc, Scheme_Object *argv[],
if (!menv->ran) if (!menv->ran)
scheme_run_module(menv, 1); 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); scheme_unbound_global(b);
}
return b->val; return b->val;
} }
} else } else
@ -2459,6 +2476,31 @@ static Scheme_Object *module_to_namespace(int argc, Scheme_Object *argv[])
return scheme_module_to_namespace(argv[0], env); 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[]) 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; 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[]) static Scheme_Object *module_path_index_p(int argc, Scheme_Object *argv[])
{ {
return (SAME_TYPE(SCHEME_TYPE(argv[0]), scheme_module_index_type) 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) { if (rec[drec].comp) {
Scheme_Object *dummy; Scheme_Object *dummy, *pv;
dummy = scheme_make_environment_dummy(env); dummy = scheme_make_environment_dummy(env);
m->dummy = dummy; m->dummy = dummy;
@ -5211,6 +5267,15 @@ static Scheme_Object *do_module(Scheme_Object *form, Scheme_Comp_Env *env,
m->ii_src = NULL; 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); fm = scheme_make_syntax_compiled(MODULE_EXPD, (Scheme_Object *)m);
} else { } else {
Scheme_Object *hints, *formname; 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->et_functional ? scheme_true : scheme_false, l);
l = cons(m->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(m->me->src_modidx, l);
l = cons(SCHEME_PTR_VAL(m->modname), 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; ((Scheme_Modidx *)m->me->src_modidx)->resolved = m->modname;
m->self_modidx = m->me->src_modidx; 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(); if (!SCHEME_PAIRP(obj)) return_NULL();
m->functional = SCHEME_TRUEP(SCHEME_CAR(obj)); m->functional = SCHEME_TRUEP(SCHEME_CAR(obj));
obj = SCHEME_CDR(obj); obj = SCHEME_CDR(obj);

View File

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

View File

@ -943,6 +943,8 @@ module_val {
gcMARK(m->insp); gcMARK(m->insp);
gcMARK(m->lang_info);
gcMARK(m->hints); gcMARK(m->hints);
gcMARK(m->ii_src); 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_syntax_recur_f (int, Scheme_Object *[]);
static Scheme_Object *read_honu_syntax_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_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 (int, Scheme_Object *[]);
static Scheme_Object *read_char_spec (int, Scheme_Object *[]); static Scheme_Object *read_char_spec (int, Scheme_Object *[]);
static Scheme_Object *read_byte (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/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", 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-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", read_char, 0, 1, env);
GLOBAL_NONCM_PRIM("read-char-or-special", read_char_spec, 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); 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); 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 * static Scheme_Object *
do_read_char(char *name, int argc, Scheme_Object *argv[], int peek, int spec, int is_byte) 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); ReadParams *params);
static Scheme_Object *read_lang(Scheme_Object *port, Scheme_Object *stxsrc, static Scheme_Object *read_lang(Scheme_Object *port, Scheme_Object *stxsrc,
long line, long col, long pos, long line, long col, long pos,
int get_info,
Scheme_Hash_Table **ht, Scheme_Hash_Table **ht,
Scheme_Object *indentation, Scheme_Object *indentation,
ReadParams *params, ReadParams *params,
@ -267,6 +268,10 @@ static void unexpected_closer(int ch,
long line, long col, long pos, long line, long col, long pos,
Scheme_Object *indentation, Scheme_Object *indentation,
ReadParams *params); 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 void pop_indentation(Scheme_Object *indentation);
static int skip_whitespace_comments(Scheme_Object *port, Scheme_Object *stxsrc, 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, 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_Object *port, Scheme_Object *src, long line, long col, long pos,
int get_info,
Scheme_Hash_Table **ht, Scheme_Object *modpath_stx); Scheme_Hash_Table **ht, Scheme_Object *modpath_stx);
#define READTABLE_WHITESPACE 0x1 #define READTABLE_WHITESPACE 0x1
@ -709,7 +715,8 @@ static Scheme_Object *read_inner_inner(Scheme_Object *port,
ReadParams *params, ReadParams *params,
int comment_mode, int comment_mode,
int pre_char, int pre_char,
Readtable *init_readtable); Readtable *init_readtable,
int get_info);
static Scheme_Object *read_inner(Scheme_Object *port, static Scheme_Object *read_inner(Scheme_Object *port,
Scheme_Object *stxsrc, Scheme_Object *stxsrc,
Scheme_Hash_Table **ht, Scheme_Hash_Table **ht,
@ -744,7 +751,7 @@ static Scheme_Object *read_inner_inner_k(void)
p->ku.k.p4 = NULL; p->ku.k.p4 = NULL;
p->ku.k.p5 = 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 #endif
@ -753,7 +760,8 @@ static Scheme_Object *read_inner_inner_k(void)
static Scheme_Object * static Scheme_Object *
read_inner_inner(Scheme_Object *port, Scheme_Object *stxsrc, Scheme_Hash_Table **ht, read_inner_inner(Scheme_Object *port, Scheme_Object *stxsrc, Scheme_Hash_Table **ht,
Scheme_Object *indentation, ReadParams *params, 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; int ch, ch2, depth, dispatch_ch, special_value_need_copy = 0;
long line = 0, col = 0, pos = 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.i1 = comment_mode;
p->ku.k.i2 = pre_char; p->ku.k.i2 = pre_char;
p->ku.k.i3 = get_info;
return scheme_handle_stack_overflow(read_inner_inner_k); 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 } else
dispatch_ch = ch; dispatch_ch = ch;
if (get_info && (dispatch_ch != '#') && (dispatch_ch != ';')) {
return expected_lang("", ch, port, stxsrc, line, col, pos, get_info);
}
switch ( dispatch_ch ) switch ( dispatch_ch )
{ {
case EOF: case EOF:
@ -968,6 +981,10 @@ read_inner_inner(Scheme_Object *port, Scheme_Object *stxsrc, Scheme_Hash_Table *
case '#': case '#':
ch = scheme_getc_special_ok(port); 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) { if (table) {
Scheme_Object *v; Scheme_Object *v;
int use_default; 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"); "read: #lang expressions not currently enabled");
return NULL; 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 (!v) {
if (comment_mode & RETURN_FOR_SPECIAL_COMMENT) if (comment_mode & RETURN_FOR_SPECIAL_COMMENT)
return NULL; return NULL;
@ -1601,7 +1618,7 @@ read_inner_inner(Scheme_Object *port, Scheme_Object *stxsrc, Scheme_Hash_Table *
"read: #! reader expressions not currently enabled"); "read: #! reader expressions not currently enabled");
return NULL; 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 (!v) {
if (comment_mode & RETURN_FOR_SPECIAL_COMMENT) if (comment_mode & RETURN_FOR_SPECIAL_COMMENT)
return NULL; return NULL;
@ -1863,7 +1880,7 @@ read_inner(Scheme_Object *port, Scheme_Object *stxsrc, Scheme_Hash_Table **ht,
Scheme_Object *indentation, ReadParams *params, Scheme_Object *indentation, ReadParams *params,
int comment_mode) 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 #ifdef DO_STACK_CHECK
@ -2133,11 +2150,11 @@ static Scheme_Object *resolve_references(Scheme_Object *obj,
return result; return result;
} }
Scheme_Object * static Scheme_Object *
_scheme_internal_read(Scheme_Object *port, Scheme_Object *stxsrc, int crc, int cant_fail, int honu_mode, _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, int recur, int expose_comment, int extra_char, Scheme_Object *init_readtable,
Scheme_Object *magic_sym, Scheme_Object *magic_val, Scheme_Object *magic_sym, Scheme_Object *magic_val,
Scheme_Object *delay_load_info) Scheme_Object *delay_load_info, int get_info)
{ {
Scheme_Object *v, *v2; Scheme_Object *v, *v2;
Scheme_Config *config; Scheme_Config *config;
@ -2146,11 +2163,15 @@ _scheme_internal_read(Scheme_Object *port, Scheme_Object *stxsrc, int crc, int c
config = scheme_current_config(); config = scheme_current_config();
v = scheme_get_param(config, MZCONFIG_READTABLE); if (get_info) {
if (SCHEME_TRUEP(v))
params.table = (Readtable *)v;
else
params.table = NULL; 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; params.can_read_compiled = crc;
v = scheme_get_param(config, MZCONFIG_CAN_READ_PIPE_QUOTE); v = scheme_get_param(config, MZCONFIG_CAN_READ_PIPE_QUOTE);
params.can_read_pipe_quote = SCHEME_TRUEP(v); 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); params.can_read_box = SCHEME_TRUEP(v);
v = scheme_get_param(config, MZCONFIG_CAN_READ_GRAPH); v = scheme_get_param(config, MZCONFIG_CAN_READ_GRAPH);
params.can_read_graph = SCHEME_TRUEP(v); params.can_read_graph = SCHEME_TRUEP(v);
if (crc) { if (crc || get_info) {
params.can_read_reader = 1; params.can_read_reader = 1;
} else { } else {
v = scheme_get_param(config, MZCONFIG_CAN_READ_READER); 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) ? (SCHEME_FALSEP(init_readtable)
? NULL ? NULL
: (Readtable *)init_readtable) : (Readtable *)init_readtable)
: params.table)); : params.table),
get_info);
extra_char = -1; extra_char = -1;
@ -2280,10 +2302,10 @@ static void *scheme_internal_read_k(void)
magic_sym = SCHEME_CAR(magic_sym); magic_sym = SCHEME_CAR(magic_sym);
} }
return (void *)_scheme_internal_read(port, stxsrc, p->ku.k.i1, 0, p->ku.k.i2, 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.i3 & 0x2, p->ku.k.i3 & 0x1,
p->ku.k.i4, init_readtable, p->ku.k.i4, init_readtable,
magic_sym, magic_val, delay_load_info); magic_sym, magic_val, delay_load_info, 0);
} }
Scheme_Object * 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)); crc = SCHEME_TRUEP(scheme_get_param(scheme_current_config(), MZCONFIG_CAN_READ_COMPILED));
if (cantfail) { if (cantfail) {
return _scheme_internal_read(port, stxsrc, crc, cantfail, honu_mode, recur, expose_comment, -1, NULL, return _internal_read(port, stxsrc, crc, cantfail, honu_mode, recur, expose_comment, -1, NULL,
magic_sym, magic_val, delay_load_info); magic_sym, magic_val, delay_load_info, 0);
} else { } else {
if (magic_sym) if (magic_sym)
magic_sym = scheme_make_pair(magic_sym, magic_val); 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) 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) 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) 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 the readtable provides a "symbol" reader, then use it: */
if (table->symbol_parser) { if (table->symbol_parser) {
return readtable_call(1, init_ch, table->symbol_parser, params, 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. */ /* 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, 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_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; int cnt, add_srcloc = 0;
Scheme_Object *a[6], *v; 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); ht = MALLOC_N(Scheme_Hash_Table *, 1);
} }
if (!get_info) {
scheme_push_continuation_frame(&cframe); scheme_push_continuation_frame(&cframe);
scheme_set_in_read_mark(src, ht); scheme_set_in_read_mark(src, ht);
}
v = scheme_apply(proc, cnt, a); 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 (SCHEME_STXP(v)) {
if (!src) if (!src)
v = scheme_syntax_to_datum(v, 0, NULL); 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 = 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; return v;
} }
@ -5687,7 +5720,7 @@ static Scheme_Object *readtable_handle_hash(Readtable *t, int ch, int *_use_defa
*_use_default = 0; *_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)) if (scheme_special_comment_value(v))
return NULL; return NULL;
@ -5927,13 +5960,20 @@ static Scheme_Object *current_reader_guard(int argc, Scheme_Object **argv)
1, NULL, NULL, 0); 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, static Scheme_Object *do_reader(Scheme_Object *modpath_stx,
Scheme_Object *port, Scheme_Object *port,
Scheme_Object *stxsrc, long line, long col, long pos, Scheme_Object *stxsrc, long line, long col, long pos,
int get_info,
Scheme_Hash_Table **ht, Scheme_Hash_Table **ht,
Scheme_Object *indentation, ReadParams *params) 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) if (stxsrc)
modpath = scheme_syntax_to_datum(modpath_stx, 0, NULL); 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); modpath = scheme_apply(proc, 1, a);
a[0] = modpath; a[0] = modpath;
if (stxsrc) if (get_info)
name = scheme_intern_symbol("get-info");
else if (stxsrc)
name = scheme_intern_symbol("read-syntax"); name = scheme_intern_symbol("read-syntax");
else else
name = scheme_intern_symbol("read"); name = scheme_intern_symbol("read");
a[1] = name; 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; a[0] = proc;
if (scheme_check_proc_arity(NULL, stxsrc ? 6 : 5, 0, 1, a)) { if (scheme_check_proc_arity(NULL, stxsrc ? 6 : 5, 0, 1, a)) {
/* provide modpath_stx to reader */ /* 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 */ /* don't provide modpath_stx to reader */
modpath_stx = NULL; modpath_stx = NULL;
} else { } else {
scheme_wrong_type("#reader", 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); -1, -1, a);
return NULL; return NULL;
} }
v = readtable_call(0, 0, proc, params, v = readtable_call(0, 0, proc, params,
port, stxsrc, line, col, pos, 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; return NULL;
else else
return v; return v;
@ -5996,12 +6055,13 @@ static Scheme_Object *read_reader(Scheme_Object *port,
return NULL; 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 */ /* "#lang " has been read */
static Scheme_Object *read_lang(Scheme_Object *port, static Scheme_Object *read_lang(Scheme_Object *port,
Scheme_Object *stxsrc, long line, long col, long pos, Scheme_Object *stxsrc, long line, long col, long pos,
int get_info,
Scheme_Hash_Table **ht, Scheme_Hash_Table **ht,
Scheme_Object *indentation, ReadParams *params, Scheme_Object *indentation, ReadParams *params,
int init_ch) int init_ch)
@ -6094,7 +6154,28 @@ static Scheme_Object *read_lang(Scheme_Object *port,
stxsrc, STX_SRCTAG); 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 USE_COMPILED_STARTUP 1
#define EXPECTED_PRIM_COUNT 926 #define EXPECTED_PRIM_COUNT 929
#ifdef MZSCHEME_SOMETHING_OMITTED #ifdef MZSCHEME_SOMETHING_OMITTED
# undef USE_COMPILED_STARTUP # 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_write(Scheme_Object *obj, Scheme_Object *port);
void scheme_internal_print(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(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_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) #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 Scheme_Object *insp; /* declaration-time inspector, for creating certificates
and for module instantiation */ and for module instantiation */
Scheme_Object *lang_info; /* NULL or vector */
Scheme_Object *hints; /* set by expansion; moved to properties */ Scheme_Object *hints; /* set by expansion; moved to properties */
Scheme_Object *ii_src; /* set by compile, temporary */ Scheme_Object *ii_src; /* set by compile, temporary */
Comp_Prefix *comp_prefix; /* set by body compile, temporary */ Comp_Prefix *comp_prefix; /* set by body compile, temporary */

View File

@ -13,12 +13,12 @@
consistently.) consistently.)
*/ */
#define MZSCHEME_VERSION "4.1.0.3" #define MZSCHEME_VERSION "4.1.0.4"
#define MZSCHEME_VERSION_X 4 #define MZSCHEME_VERSION_X 4
#define MZSCHEME_VERSION_Y 1 #define MZSCHEME_VERSION_Y 1
#define MZSCHEME_VERSION_Z 0 #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_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y)
#define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W) #define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)