xform => xpand; program/export forms dropped

This commit is contained in:
ESL 2024-07-25 22:42:15 -04:00
parent 62fed2125b
commit a5dd8c87c8
6 changed files with 305 additions and 297 deletions

4
i.c
View file

@ -4888,7 +4888,7 @@ static obj *init_module(obj *r, obj *sp, obj *hp, const char **mod)
/* hand-coded! */ /* hand-coded! */
char *i_code[] = { char *i_code[] = {
/* initialize *transformers* with xform builtins */ /* initialize *transformers* with xpand builtins */
"B", "syntax-quote", 0, "B", "syntax-quote", 0,
"B", "quote", 0, "B", "quote", 0,
"B", "set!", 0, "B", "set!", 0,
@ -4907,9 +4907,7 @@ char *i_code[] = {
"B", "syntax-length", 0, "B", "syntax-length", 0,
"B", "syntax-error", 0, "B", "syntax-error", 0,
"B", "define-library", 0, "B", "define-library", 0,
"B", "program", 0,
"B", "import", 0, "B", "import", 0,
"B", "export", 0,
"B", "...", 0, "B", "...", 0,
"B", "_", 0, "B", "_", 0,

View file

@ -2128,8 +2128,8 @@
(cond [(or (eq? arg #f) (string? arg)) (cond [(or (eq? arg #f) (string? arg))
(let ([args (if arg (cons arg args) args)] [p (open-output-string)]) (let ([args (if arg (cons arg args) args)] [p (open-output-string)])
(apply fprintf p args) (get-output-string p))] (apply fprintf p args) (get-output-string p))]
[(eq? arg #t) (apply fprintf (current-output-port) args)] [(eq? arg #t) (apply fprintf (current-output-port) args) (void)]
[else (apply fprintf arg args)])) [else (apply fprintf arg args) (void)]))
(define (write-to-string obj) (define (write-to-string obj)
(let ([p (open-output-string)]) (let ([p (open-output-string)])

View file

@ -4,7 +4,7 @@
(import (only (skint hidden) (import (only (skint hidden)
list2? list3? location-set-val! root-environment list2? list3? location-set-val! root-environment
xform write-serialized-sexp compile-to-string xpand write-serialized-sexp compile-to-string
make-location syntax-rules* new-id? new-id-lookup make-location syntax-rules* new-id? new-id-lookup
lookup-integrable write-serialized-sexp compile-to-string lookup-integrable write-serialized-sexp compile-to-string
path-strip-extension path-strip-directory path-strip-extension path-strip-directory
@ -61,7 +61,7 @@
(location-set-val! (top-transformer-env s 'ref) t)) (location-set-val! (top-transformer-env s 'ref) t))
(define (transform appos? sexp . ?env) (define (transform appos? sexp . ?env)
(xform appos? sexp (if (null? ?env) top-transformer-env (car ?env)))) (xpand appos? sexp (if (null? ?env) top-transformer-env (car ?env))))
(define *hide-refs* '()) (define *hide-refs* '())

247
pre/t.scm
View file

@ -187,7 +187,7 @@
; <core> -> (define-library <listname> <library>) where <library> is a vector (see below) ; <core> -> (define-library <listname> <library>) where <library> is a vector (see below)
; <core> -> (import <library>) ; <core> -> (import <library>)
; These names are bound to specials never returned by xform: ; These names are bound to specials never returned by xpand:
; (syntax-quote <value>) ; (syntax-quote <value>)
; (body <expr or def> ...) ; (body <expr or def> ...)
@ -349,11 +349,11 @@
(define (xenv-lookup env id at) (define (xenv-lookup env id at)
(or (env id at) (or (env id at)
(error* "transformer: invalid identifier access" (list id (xform-sexp->datum id) at)))) (error* "transformer: invalid identifier access" (list id (xpand-sexp->datum id) at))))
(define (xenv-ref env id) (xenv-lookup env id 'ref)) (define (xenv-ref env id) (xenv-lookup env id 'ref))
(define (xform-sexp->datum sexp) (define (xpand-sexp->datum sexp)
(let conv ([sexp sexp]) (let conv ([sexp sexp])
(cond [(id? sexp) (id->sym sexp)] (cond [(id? sexp) (id->sym sexp)]
[(pair? sexp) (cons (conv (car sexp)) (conv (cdr sexp)))] [(pair? sexp) (cons (conv (car sexp)) (conv (cdr sexp)))]
@ -381,66 +381,65 @@
(and (eq? p1 p2) (eq? id1 id2)) ; would end w/same loc if alloced (and (eq? p1 p2) (eq? id1 id2)) ; would end w/same loc if alloced
(eq? p1 p2))))) ; nrs and locs are distinct, so this means "same loc" (eq? p1 p2))))) ; nrs and locs are distinct, so this means "same loc"
; xform receives Scheme s-expressions and returns either Core Scheme <core> form ; xpand receives Scheme s-expressions and returns either Core Scheme <core> form
; (always a pair) or so-called 'special', which is either a builtin (a symbol), a ; (always a pair) or so-called 'special', which is either a builtin (a symbol), a
; a transformer (a procedure), or an integrable (an integer). Appos? flag is true ; a transformer (a procedure), or an integrable (an integer). Appos? flag is true
; when the context allows xform to return a special; otherwise, only <core> can ; when the context allows xpand to return a special; otherwise, only <core> can
; be returned. ; be returned.
(define (xform appos? sexp env) (define (xpand appos? sexp env)
(cond [(id? sexp) (cond [(id? sexp)
(let ([hval (xform-ref sexp env)]) (let ([hval (xpand-ref sexp env)])
(cond [appos? hval] ; anything goes in app position (cond [appos? hval] ; anything goes in app position
[(val-integrable? hval) (list 'const (integrable-global hval))] [(val-integrable? hval) (list 'const (integrable-global hval))]
[(val-transformer? hval) (xform appos? (hval sexp env) env)] ; id-syntax [(val-transformer? hval) (xpand appos? (hval sexp env) env)] ; id-syntax
[(val-library? hval) (x-error "improper use of library" hval sexp)] [(val-library? hval) (x-error "improper use of library" hval sexp)]
[(val-void? hval) (x-error "id has no value" hval sexp (id->sym sexp))] [(val-void? hval) (x-error "id has no value" hval sexp (id->sym sexp))]
[(not (val-core? hval)) (x-error "improper use of syntax form" hval)] [(not (val-core? hval)) (x-error "improper use of syntax form" hval)]
[else hval]))] [else hval]))]
[(not (pair? sexp)) [(not (pair? sexp))
(xform-quote (list sexp) env)] (xpand-quote (list sexp) env)]
[else ; note: these transformations are made in 'expression' context [else ; note: these transformations are made in 'expression' context
(let* ([head (car sexp)] [tail (cdr sexp)] [hval (xform #t head env)]) (let* ([head (car sexp)] [tail (cdr sexp)] [hval (xpand #t head env)])
(case hval (case hval
[(quote) (xform-quote tail env)] [(quote) (xpand-quote tail env)]
[(set!) (xform-set! tail env)] [(set!) (xpand-set! tail env)]
[(set&) (xform-set& tail env)] [(set&) (xpand-set& tail env)]
[(if) (xform-if tail env)] [(if) (xpand-if tail env)]
[(lambda) (xform-lambda tail env)] [(lambda) (xpand-lambda tail env)]
[(lambda*) (xform-lambda* tail env)] [(lambda*) (xpand-lambda* tail env)]
[(letcc) (xform-letcc tail env)] [(letcc) (xpand-letcc tail env)]
[(withcc) (xform-withcc tail env)] [(withcc) (xpand-withcc tail env)]
[(body) (xform-body tail env appos?)] [(body) (xpand-body tail env appos?)]
[(begin) (xform-begin tail env appos?)] [(begin) (xpand-begin tail env appos?)]
[(define) (xform-define tail env)] ; as expression: will fail later [(define) (xpand-define tail env)] ; as expression: will fail later
[(define-syntax) (xform-define-syntax tail env)] ; as expression: will fail later [(define-syntax) (xpand-define-syntax tail env)] ; as expression: will fail later
[(syntax-quote) (xform-syntax-quote tail env)] [(syntax-quote) (xpand-syntax-quote tail env)]
[(syntax-lambda) (xform-syntax-lambda tail env appos?)] [(syntax-lambda) (xpand-syntax-lambda tail env appos?)]
[(syntax-rules) (xform-syntax-rules tail env)] [(syntax-rules) (xpand-syntax-rules tail env)]
[(syntax-length) (xform-syntax-length tail env)] [(syntax-length) (xpand-syntax-length tail env)]
[(syntax-error) (xform-syntax-error tail env)] [(syntax-error) (xpand-syntax-error tail env)]
[(define-library) (xform-define-library head tail env #f)] [(define-library) (xpand-define-library head tail env #f)]
[(import) (xform-import head tail env #f)] [(import) (xpand-import head tail env #f)]
[(export program) (x-error "FIXME: not yet implemented" hval sexp)]
[(... _) (x-error "improper use of auxiliary syntax" hval sexp)] [(... _) (x-error "improper use of auxiliary syntax" hval sexp)]
[else (cond [(val-integrable? hval) (xform-integrable hval tail env)] [else (cond [(val-integrable? hval) (xpand-integrable hval tail env)]
[(val-transformer? hval) (xform appos? (hval sexp env) env)] [(val-transformer? hval) (xpand appos? (hval sexp env) env)]
[(val-library? hval) (x-error "improper use of library" hval sexp)] [(val-library? hval) (x-error "improper use of library" hval sexp)]
[(val-void? hval) (x-error "use of uninitialized val" hval sexp)] [(val-void? hval) (x-error "use of uninitialized val" hval sexp)]
[(not (val-core? hval)) (x-error "improper use of syntax form" hval)] [(not (val-core? hval)) (x-error "improper use of syntax form" hval)]
[else (xform-call hval tail env)])]))])) [else (xpand-call hval tail env)])]))]))
(define (xform-quote tail env) (define (xpand-quote tail env)
(if (list1? tail) (if (list1? tail)
(list 'quote (xform-sexp->datum (car tail))) (list 'quote (xpand-sexp->datum (car tail)))
(x-error "improper quote form" (cons 'quote tail)))) (x-error "improper quote form" (cons 'quote tail))))
(define (xform-ref id env) (define (xpand-ref id env)
(location-val (xenv-ref env id))) (location-val (xenv-ref env id)))
(define (xform-set! tail env) (define (xpand-set! tail env)
(if (and (list2? tail) (id? (car tail))) (if (and (list2? tail) (id? (car tail)))
(let ([den (xenv-lookup env (car tail) 'set!)] [xexp (xform #f (cadr tail) env)]) (let ([den (xenv-lookup env (car tail) 'set!)] [xexp (xpand #f (cadr tail) env)])
(if (location-special? den) ;; was (location-set-val! den xexp) '(begin) (if (location-special? den) ;; was (location-set-val! den xexp) '(begin)
(x-error "set! to macro or integrable identifier" (cons 'set! tail)) (x-error "set! to macro or integrable identifier" (cons 'set! tail))
(let ([val (location-val den)]) (let ([val (location-val den)])
@ -449,7 +448,7 @@
(x-error "set! is not allowed" (cons 'set! tail)))))) (x-error "set! is not allowed" (cons 'set! tail))))))
(x-error "improper set! form" (cons 'set! tail)))) (x-error "improper set! form" (cons 'set! tail))))
(define (xform-set& tail env) (define (xpand-set& tail env)
(if (list1? tail) (if (list1? tail)
(let ([den (xenv-lookup env (car tail) 'set!)]) (let ([den (xenv-lookup env (car tail) 'set!)])
(if (location-special? den) (if (location-special? den)
@ -460,18 +459,18 @@
(x-error "set& is not allowed" (cons 'set! tail)))))) (x-error "set& is not allowed" (cons 'set! tail))))))
(x-error "improper set& form" (cons 'set& tail)))) (x-error "improper set& form" (cons 'set& tail))))
(define (xform-if tail env) (define (xpand-if tail env)
(if (list? tail) (if (list? tail)
(let ([xexps (map (lambda (sexp) (xform #f sexp env)) tail)]) (let ([xexps (map (lambda (sexp) (xpand #f sexp env)) tail)])
(case (length xexps) (case (length xexps)
[(2) (cons 'if (append xexps '((begin))))] [(2) (cons 'if (append xexps '((begin))))]
[(3) (cons 'if xexps)] [(3) (cons 'if xexps)]
[else (x-error "malformed if form" (cons 'if tail))])) [else (x-error "malformed if form" (cons 'if tail))]))
(x-error "improper if form" (cons 'if tail)))) (x-error "improper if form" (cons 'if tail))))
(define (xform-call xexp tail env) (define (xpand-call xexp tail env)
(if (list? tail) (if (list? tail)
(let ([xexps (map (lambda (sexp) (xform #f sexp env)) tail)]) (let ([xexps (map (lambda (sexp) (xpand #f sexp env)) tail)])
(if (and (null? xexps) (eq? (car xexp) 'lambda) (null? (cadr xexp))) (if (and (null? xexps) (eq? (car xexp) 'lambda) (null? (cadr xexp)))
(caddr xexp) ; ((let () x)) => x (caddr xexp) ; ((let () x)) => x
(pair* 'call xexp xexps))) (pair* 'call xexp xexps)))
@ -485,27 +484,27 @@
[(#\#) (>= n 0)] [(#\@) #f] [(#\#) (>= n 0)] [(#\@) #f]
[else #f])) [else #f]))
(define (xform-integrable ig tail env) (define (xpand-integrable ig tail env)
(if (integrable-argc-match? (integrable-type ig) (length tail)) (if (integrable-argc-match? (integrable-type ig) (length tail))
(cons 'integrable (cons ig (map (lambda (sexp) (xform #f sexp env)) tail))) (cons 'integrable (cons ig (map (lambda (sexp) (xpand #f sexp env)) tail)))
(xform-call (list 'ref (integrable-global ig)) tail env))) (xpand-call (list 'ref (integrable-global ig)) tail env)))
(define (xform-lambda tail env) (define (xpand-lambda tail env)
(if (and (list1+? tail) (idslist? (car tail))) (if (and (list1+? tail) (idslist? (car tail)))
(let loop ([vars (car tail)] [ienv env] [ipars '()]) (let loop ([vars (car tail)] [ienv env] [ipars '()])
(cond [(pair? vars) (cond [(pair? vars)
(let* ([var (car vars)] [nvar (gensym (id->sym var))]) (let* ([var (car vars)] [nvar (gensym (id->sym var))])
(loop (cdr vars) (add-local-var var nvar ienv) (cons nvar ipars)))] (loop (cdr vars) (add-local-var var nvar ienv) (cons nvar ipars)))]
[(null? vars) [(null? vars)
(list 'lambda (reverse ipars) (xform-body (cdr tail) ienv #f))] (list 'lambda (reverse ipars) (xpand-body (cdr tail) ienv #f))]
[else ; improper [else ; improper
(let* ([var vars] [nvar (gensym (id->sym var))] (let* ([var vars] [nvar (gensym (id->sym var))]
[ienv (add-local-var var nvar ienv)]) [ienv (add-local-var var nvar ienv)])
(list 'lambda (append (reverse ipars) nvar) (list 'lambda (append (reverse ipars) nvar)
(xform-body (cdr tail) ienv #f)))])) (xpand-body (cdr tail) ienv #f)))]))
(x-error "improper lambda body" (cons 'lambda tail)))) (x-error "improper lambda body" (cons 'lambda tail))))
(define (xform-lambda* tail env) (define (xpand-lambda* tail env)
(if (list? tail) (if (list? tail)
(cons 'lambda* (cons 'lambda*
(map (lambda (aexp) (map (lambda (aexp)
@ -515,22 +514,22 @@
(boolean? (cadar aexp))) (boolean? (cadar aexp)))
(idslist? (car aexp)))) (idslist? (car aexp))))
(list (normalize-arity (car aexp)) (list (normalize-arity (car aexp))
(xform #f (cadr aexp) env)) (xpand #f (cadr aexp) env))
(x-error "improper lambda* clause" aexp))) (x-error "improper lambda* clause" aexp)))
tail)) tail))
(x-error "improper lambda* form" (cons 'lambda* tail)))) (x-error "improper lambda* form" (cons 'lambda* tail))))
(define (xform-letcc tail env) (define (xpand-letcc tail env)
(if (and (list2+? tail) (id? (car tail))) (if (and (list2+? tail) (id? (car tail)))
(let* ([var (car tail)] [nvar (gensym (id->sym var))]) (let* ([var (car tail)] [nvar (gensym (id->sym var))])
(list 'letcc nvar (list 'letcc nvar
(xform-body (cdr tail) (add-local-var var nvar env) #f))) (xpand-body (cdr tail) (add-local-var var nvar env) #f)))
(x-error "improper letcc form" (cons 'letcc tail)))) (x-error "improper letcc form" (cons 'letcc tail))))
(define (xform-withcc tail env) (define (xpand-withcc tail env)
(if (list2+? tail) (if (list2+? tail)
(list 'withcc (xform #f (car tail) env) (list 'withcc (xpand #f (car tail) env)
(xform-body (cdr tail) env) #f) (xpand-body (cdr tail) env) #f)
(x-error "improper withcc form" (cons 'withcc tail)))) (x-error "improper withcc form" (cons 'withcc tail))))
(define (preprocess-define head tail) ;=> (id sexp) or (sexp) for idless (define (preprocess-define head tail) ;=> (id sexp) or (sexp) for idless
@ -546,19 +545,19 @@
; TODO? here we can do some fancy shortcuts or extensions ; TODO? here we can do some fancy shortcuts or extensions
[else (x-error "improper define-syntax form" (cons head tail))])) [else (x-error "improper define-syntax form" (cons head tail))]))
(define (xform-body tail env appos?) (define (xpand-body tail env appos?)
(cond (cond
[(null? tail) [(null? tail)
(list 'begin)] (list 'begin)]
[(list1? tail) ; can't have defines there [(list1? tail) ; can't have defines there
(xform appos? (car tail) env)] (xpand appos? (car tail) env)]
[(not (list? tail)) [(not (list? tail))
(x-error "improper body form" (cons 'body tail))] (x-error "improper body form" (cons 'body tail))]
[else [else
(let loop ([env env] [ids '()] [inits '()] [nids '()] [body tail]) (let loop ([env env] [ids '()] [inits '()] [nids '()] [body tail])
(if (and (pair? body) (pair? (car body))) (if (and (pair? body) (pair? (car body)))
(let ([first (car body)] [rest (cdr body)]) (let ([first (car body)] [rest (cdr body)])
(let* ([head (car first)] [tail (cdr first)] [hval (xform #t head env)]) (let* ([head (car first)] [tail (cdr first)] [hval (xpand #t head env)])
(case hval (case hval
[(begin) ; internal [(begin) ; internal
(if (list? tail) (if (list? tail)
@ -582,16 +581,16 @@
(if (and (list2+? tail) (listname? (car tail))) (if (and (list2+? tail) (listname? (car tail)))
; note: library is fully expanded in incomplete env, to make it ; note: library is fully expanded in incomplete env, to make it
; immediately available for import; it ignores lexical scope anyway ; immediately available for import; it ignores lexical scope anyway
(let* ([core (xform-define-library head tail env #f)] (let* ([core (xpand-define-library head tail env #f)]
; core is (define-library <listname> <library>) ; core is (define-library <listname> <library>)
[listname (cadr core)] [library (caddr core)] [listname (cadr core)] [library (caddr core)]
[env (extend-xenv-local listname library env)]) [env (extend-xenv-local listname library env)])
(loop env ids inits nids rest)) ; no trace for xform-labels (loop env ids inits nids rest)) ; no trace for xpand-labels
(x-error "improper define-library form" first))] (x-error "improper define-library form" first))]
[(import) ; internal [(import) ; internal
(if (list? tail) (if (list? tail)
; note: import is fully expanded in incomplete env, right now! ; note: import is fully expanded in incomplete env, right now!
(let* ([core (xform-import head tail env #f)] ; core is (import <library>) (let* ([core (xpand-import head tail env #f)] ; core is (import <library>)
[l (cadr core)] [code (library-code l)] [eal (library-exports l)]) [l (cadr core)] [code (library-code l)] [eal (library-exports l)])
(let scan ([eal eal] [env env]) (let scan ([eal eal] [env env])
(if (null? eal) ; add init code as if it were idless define (if (null? eal) ; add init code as if it were idless define
@ -605,76 +604,76 @@
[else [else
(if (val-transformer? hval) (if (val-transformer? hval)
(loop env ids inits nids (cons (hval first env) rest)) (loop env ids inits nids (cons (hval first env) rest))
(xform-labels (reverse ids) (reverse inits) (reverse nids) body env appos?))]))) (xpand-labels (reverse ids) (reverse inits) (reverse nids) body env appos?))])))
(xform-labels (reverse ids) (reverse inits) (reverse nids) body env appos?)))])) (xpand-labels (reverse ids) (reverse inits) (reverse nids) body env appos?)))]))
(define (xform-labels ids inits nids body env appos?) (define (xpand-labels ids inits nids body env appos?)
(define no-defines? (andmap (lambda (nid) (eq? nid #t)) nids)) (define no-defines? (andmap (lambda (nid) (eq? nid #t)) nids))
(let loop ([ids ids] [inits inits] [nids nids] [sets '()] [lids '()]) (let loop ([ids ids] [inits inits] [nids nids] [sets '()] [lids '()])
(cond [(null? ids) (cond [(null? ids)
(if (and no-defines? (list1? body)) (if (and no-defines? (list1? body))
; special case: expand body using current appos? ; special case: expand body using current appos?
(xform appos? (car body) env) (xpand appos? (car body) env)
; general case: produce expression ; general case: produce expression
(let* ([xexps (append (reverse sets) (map (lambda (x) (xform #f x env)) body))] (let* ([xexps (append (reverse sets) (map (lambda (x) (xpand #f x env)) body))]
[xexp (if (list1? xexps) (car xexps) (cons 'begin xexps))]) [xexp (if (list1? xexps) (car xexps) (cons 'begin xexps))])
(if (null? lids) xexp (if (null? lids) xexp
(pair* 'call (list 'lambda (reverse lids) xexp) (pair* 'call (list 'lambda (reverse lids) xexp)
(map (lambda (lid) '(begin)) lids)))))] (map (lambda (lid) '(begin)) lids)))))]
[(not (car ids)) ; idless define, nid is #f [(not (car ids)) ; idless define, nid is #f
(loop (cdr ids) (cdr inits) (cdr nids) (loop (cdr ids) (cdr inits) (cdr nids)
(cons (xform #f (car inits) env) sets) lids)] (cons (xpand #f (car inits) env) sets) lids)]
[(symbol? (car nids)) ; define [(symbol? (car nids)) ; define
(loop (cdr ids) (cdr inits) (cdr nids) (loop (cdr ids) (cdr inits) (cdr nids)
(cons (xform-set! (list (car ids) (car inits)) env) sets) (cons (xpand-set! (list (car ids) (car inits)) env) sets)
(cons (car nids) lids))] (cons (car nids) lids))]
[else ; define-syntax, nid is #t [else ; define-syntax, nid is #t
(location-set-val! (xenv-lookup env (car ids) 'set!) (xform #t (car inits) env)) (location-set-val! (xenv-lookup env (car ids) 'set!) (xpand #t (car inits) env))
(loop (cdr ids) (cdr inits) (cdr nids) sets lids)]))) (loop (cdr ids) (cdr inits) (cdr nids) sets lids)])))
; FIXME: make sure that (begin (begin) x (begin)) == x !! (tail-rec includes hack) ; FIXME: make sure that (begin (begin) x (begin)) == x !! (tail-rec includes hack)
(define (xform-begin tail env appos?) ; non-internal (define (xpand-begin tail env appos?) ; non-internal
(if (list? tail) (if (list? tail)
(if (list1? tail) (if (list1? tail)
(xform appos? (car tail) env) ; (begin x) == x (xpand appos? (car tail) env) ; (begin x) == x
(cons 'begin (map (lambda (sexp) (xform #f sexp env)) tail))) (cons 'begin (map (lambda (sexp) (xpand #f sexp env)) tail)))
(x-error "improper begin form" (cons 'begin tail)))) (x-error "improper begin form" (cons 'begin tail))))
; not for general use: used in scm2c.ssc simplistic transformer only! ; not for general use: used in scm2c.ssc simplistic transformer only!
(define (xform-define tail env) (define (xpand-define tail env)
(let ([tail (preprocess-define 'define tail)]) (let ([tail (preprocess-define 'define tail)])
(if (list1? tail) ; idless (if (list1? tail) ; idless
(xform #f (cadr tail) env) (xpand #f (cadr tail) env)
(list 'define (id->sym (car tail)) (list 'define (id->sym (car tail))
(xform #f (cadr tail) env))))) (xpand #f (cadr tail) env)))))
; not for general use: used in scm2c.ssc simplistic transformer only! ; not for general use: used in scm2c.ssc simplistic transformer only!
(define (xform-define-syntax tail env) (define (xpand-define-syntax tail env)
(let ([tail (preprocess-define-syntax 'define-syntax tail)]) (let ([tail (preprocess-define-syntax 'define-syntax tail)])
(list 'define-syntax (id->sym (car tail)) (xform #t (cadr tail) env)))) (list 'define-syntax (id->sym (car tail)) (xpand #t (cadr tail) env))))
(define (xform-syntax-quote tail env) (define (xpand-syntax-quote tail env)
(if (list1? tail) (if (list1? tail)
(car tail) ; must be <core>, todo: check? (car tail) ; must be <core>, todo: check?
(x-error "improper syntax-quote form" (cons 'syntax-quote tail)))) (x-error "improper syntax-quote form" (cons 'syntax-quote tail))))
(define (xform-syntax-lambda tail env appos?) (define (xpand-syntax-lambda tail env appos?)
(if (and (list2+? tail) (andmap id? (car tail))) (if (and (list2+? tail) (andmap id? (car tail)))
(let ([vars (car tail)] [macenv env] [forms (cdr tail)]) (let ([vars (car tail)] [macenv env] [forms (cdr tail)])
; return a transformer that wraps xformed body in (syntax-quote ...) ; return a transformer that wraps xformed body in (syntax-quote ...)
; to make sure xform treats it as final <core> form and exits the loop ; to make sure xpand treats it as final <core> form and exits the loop
(lambda (use useenv) (lambda (use useenv)
(if (and (list1+? use) (fx=? (length vars) (length (cdr use)))) (if (and (list1+? use) (fx=? (length vars) (length (cdr use))))
(let loop ([vars vars] [exps (cdr use)] [env macenv]) (let loop ([vars vars] [exps (cdr use)] [env macenv])
(if (null? vars) (if (null? vars)
(list syntax-quote-id (xform-body forms env appos?)) (list syntax-quote-id (xpand-body forms env appos?))
(loop (cdr vars) (cdr exps) (loop (cdr vars) (cdr exps)
(extend-xenv-local (car vars) (extend-xenv-local (car vars)
(xform #t (car exps) useenv) env)))) (xpand #t (car exps) useenv) env))))
(x-error "invalid syntax-lambda application" use)))) (x-error "invalid syntax-lambda application" use))))
(x-error "improper syntax-lambda body" (cons 'syntax-lambda tail)))) (x-error "improper syntax-lambda body" (cons 'syntax-lambda tail))))
(define (xform-syntax-rules tail env) (define (xpand-syntax-rules tail env)
(cond [(and (list2+? tail) (id? (car tail)) (andmap id? (cadr tail))) (cond [(and (list2+? tail) (id? (car tail)) (andmap id? (cadr tail)))
(syntax-rules* env (car tail) (cadr tail) (cddr tail))] (syntax-rules* env (car tail) (cadr tail) (cddr tail))]
[(and (list1+? tail) (andmap id? (car tail))) [(and (list1+? tail) (andmap id? (car tail)))
@ -682,13 +681,13 @@
[else [else
(x-error "improper syntax-rules form" (cons 'syntax-rules tail))])) (x-error "improper syntax-rules form" (cons 'syntax-rules tail))]))
(define (xform-syntax-length tail env) (define (xpand-syntax-length tail env)
(if (and (list1? tail) (list? (car tail))) (if (and (list1? tail) (list? (car tail)))
(list 'quote (length (car tail))) (list 'quote (length (car tail)))
(x-error "improper syntax-length form" (cons 'syntax-length tail)))) (x-error "improper syntax-length form" (cons 'syntax-length tail))))
(define (xform-syntax-error tail env) (define (xpand-syntax-error tail env)
(let ([args (map xform-sexp->datum tail)]) (let ([args (map xpand-sexp->datum tail)])
(if (and (list1+? args) (string? (car args))) (if (and (list1+? args) (string? (car args)))
(apply x-error args) (apply x-error args)
(x-error "improper syntax-error form" (cons 'syntax-error tail))))) (x-error "improper syntax-error form" (cons 'syntax-error tail)))))
@ -961,7 +960,7 @@
(cond [(lit=? freq 'else) (con)] (cond [(lit=? freq 'else) (con)]
[(id? freq) (if (feature-available? (id->sym freq)) (con) (alt))] [(id? freq) (if (feature-available? (id->sym freq)) (con) (alt))]
[(and (list2? freq) (lit=? (car freq) 'library)) [(and (list2? freq) (lit=? (car freq) 'library))
(if (library-available? (xform-sexp->datum (cadr freq)) env) (con) (alt))] (if (library-available? (xpand-sexp->datum (cadr freq)) env) (con) (alt))]
[(and (list1+? freq) (lit=? (car freq) 'and)) [(and (list1+? freq) (lit=? (car freq) 'and))
(cond [(null? (cdr freq)) (con)] [(null? (cddr freq)) (pp (cadr freq) con alt)] (cond [(null? (cdr freq)) (con)] [(null? (cddr freq)) (pp (cadr freq) con alt)]
[else (pp (cadr freq) (lambda () (pp (cons (car freq) (cddr freq)) con alt)) alt)])] [else (pp (cadr freq) (lambda () (pp (cons (car freq) (cddr freq)) con alt)) alt)])]
@ -1053,7 +1052,7 @@
(pp (cadr s) ;=> (pp (cadr s) ;=>
(lambda (code al) (lambda (code al)
(return code (return code
(let loop ([al al] [idpairs (xform-sexp->datum (cddr s))]) (let loop ([al al] [idpairs (xpand-sexp->datum (cddr s))])
(cond [(null? al) al] (cond [(null? al) al]
[(assq (caar al) idpairs) => [(assq (caar al) idpairs) =>
(lambda (idpair) (cons (cons (cadr idpair) (cdar al)) (loop (cdr al) idpairs)))] (lambda (idpair) (cons (cons (cadr idpair) (cdar al)) (loop (cdr al) idpairs)))]
@ -1063,7 +1062,7 @@
(return (car ic&ex) (cdr ic&ex)))] (return (car ic&ex) (cdr ic&ex)))]
[(and (list1+? s) (andmap libpart? s)) [(and (list1+? s) (andmap libpart? s))
; NB: this is part 1/4 of listname <-> library interaction ; NB: this is part 1/4 of listname <-> library interaction
(let* ([listname (xform-sexp->datum s)] [val (xform-ref listname env)]) (let* ([listname (xpand-sexp->datum s)] [val (xpand-ref listname env)])
(unless (val-library? val) (x-error "invalid library" listname val)) (unless (val-library? val) (x-error "invalid library" listname val))
(return (library-code val) (library-exports val)))] (return (library-code val) (library-exports val)))]
[else [else
@ -1095,7 +1094,7 @@
(toesps (cdr ee) (adjoin-esps (list (cons s s)) esps)))] (toesps (cdr ee) (adjoin-esps (list (cons s s)) esps)))]
[(and (sexp-match? '(<id> <id> <id>) (car ee)) (eq? (caar ee) ld-rename-id)) [(and (sexp-match? '(<id> <id> <id>) (car ee)) (eq? (caar ee) ld-rename-id))
(toesps (cdr ee) (adjoin-esps (list (cons (id->sym (cadar ee)) (id->sym (caddar ee)))) esps))] (toesps (cdr ee) (adjoin-esps (list (cons (id->sym (cadar ee)) (id->sym (caddar ee)))) esps))]
[else (x-error "invalid export spec element" (xform-sexp->datum (car ee)))])) [else (x-error "invalid export spec element" (xpand-sexp->datum (car ee)))]))
(let loop ([decls (cdr sexp)] [code '(begin)] [eal '()] [esps '()] [forms '()]) (let loop ([decls (cdr sexp)] [code '(begin)] [eal '()] [esps '()] [forms '()])
(if (null? decls) (if (null? decls)
(list code eal esps forms) (list code eal esps forms)
@ -1139,7 +1138,7 @@
(check-syntax decl '(<id> <string> ...) "invalid include-ci library declaration syntax") (check-syntax decl '(<id> <string> ...) "invalid include-ci library declaration syntax")
(loop decls code eal esps `(,@forms (,include-ci-id . ,(cdr decl))))] (loop decls code eal esps `(,@forms (,include-ci-id . ,(cdr decl))))]
[(eq? (car decl) ld-begin-id) [(eq? (car decl) ld-begin-id)
(loop decls code eal esps (append forms (xform-sexp->datum (cdr decl))))])))))) (loop decls code eal esps (append forms (xpand-sexp->datum (cdr decl))))]))))))
; scan forms and return reversed list of core forms, interspersed with (define gs exp) ; scan forms and return reversed list of core forms, interspersed with (define gs exp)
; forms that need further processing (each one will become (set! gs core) form ; forms that need further processing (each one will become (set! gs core) form
@ -1149,7 +1148,7 @@
code* code*
(let ([first (car body)] [rest (cdr body)]) (let ([first (car body)] [rest (cdr body)])
(if (pair? first) (if (pair? first)
(let* ([head (car first)] [tail (cdr first)] [hval (xform #t head cenv)]) (let* ([head (car first)] [tail (cdr first)] [hval (xpand #t head cenv)])
(cond (cond
[(eq? hval 'begin) [(eq? hval 'begin)
(unless (list? tail) (x-error "improper begin form" first)) (unless (list? tail) (x-error "improper begin form" first))
@ -1169,10 +1168,10 @@
[loc (top-defined-id-lookup cenv (car tail) 'define-syntax)]) [loc (top-defined-id-lookup cenv (car tail) 'define-syntax)])
(unless (location? loc) (unless (location? loc)
(x-error "unexpected define-syntax for id" (car tail) first)) (x-error "unexpected define-syntax for id" (car tail) first))
(location-set-val! loc (xform #t (cadr tail) cenv)) (location-set-val! loc (xpand #t (cadr tail) cenv))
(scan rest code*))] (scan rest code*))]
[(eq? hval 'define-library) [(eq? hval 'define-library)
(let* ([core (xform-define-library head tail env #f)] (let* ([core (xpand-define-library head tail env #f)]
; core is (define-library <listname> <library>) ; core is (define-library <listname> <library>)
[loc (xenv-lookup env (cadr core) 'define-syntax)]) [loc (xenv-lookup env (cadr core) 'define-syntax)])
(unless (location? loc) (unless (location? loc)
@ -1180,7 +1179,7 @@
(location-set-val! loc (caddr core)) (location-set-val! loc (caddr core))
(scan rest code*))] (scan rest code*))]
[(eq? hval 'import) ; support, in case there is an internal import [(eq? hval 'import) ; support, in case there is an internal import
(let* ([core (xform-import head tail cenv #f)] (let* ([core (xpand-import head tail cenv #f)]
; core is (import <library>) ; core is (import <library>)
[l (cadr core)] [code (library-code l)] [eal (library-exports l)]) [l (cadr core)] [code (library-code l)] [eal (library-exports l)])
(unless (cenv eal 'import) ; adjoins eal to cenv's imports (unless (cenv eal 'import) ; adjoins eal to cenv's imports
@ -1197,7 +1196,7 @@
; scan returns underprocessed defines; this fn fixes that ; scan returns underprocessed defines; this fn fixes that
(define (preprocess-top-form-fix! code cenv) ;=> core (define (preprocess-top-form-fix! code cenv) ;=> core
(if (and (pair? code) (eq? (car code) 'define) (list3? code)) (if (and (pair? code) (eq? (car code) 'define) (list3? code))
(let* ([gs (cadr code)] [exp (caddr code)] [core (xform #f exp cenv)]) (let* ([gs (cadr code)] [exp (caddr code)] [core (xpand #f exp cenv)])
(if (null? gs) core (list 'set! gs core))) (if (null? gs) core (list 'set! gs core)))
code)) code))
@ -1234,9 +1233,9 @@
; it should become available in local env immediately, even at definition-scanning phase -- so we ; it should become available in local env immediately, even at definition-scanning phase -- so we
; introduce new special <core> form define-library ; introduce new special <core> form define-library
(define (xform-define-library head tail env top?) ; non-internal (define (xpand-define-library head tail env top?) ; non-internal
(if (and (list2+? tail) (listname? (car tail))) (if (and (list2+? tail) (listname? (car tail)))
(let* ([listname (xform-sexp->datum (car tail))] (let* ([listname (xpand-sexp->datum (car tail))]
[prefix (and top? (listname->symbol listname))] [prefix (and top? (listname->symbol listname))]
; NB: head is used as seed id for renamings; fixed prefix used on top only ; NB: head is used as seed id for renamings; fixed prefix used on top only
[libform (cons head (if prefix (cons prefix (cdr tail)) (cdr tail)))] [libform (cons head (if prefix (cons prefix (cdr tail)) (cdr tail)))]
@ -1248,7 +1247,7 @@
; for now, we have no clear idea of how to process import in all possible contexts, so we will also ; for now, we have no clear idea of how to process import in all possible contexts, so we will also
; introduce new special <core> form import ; introduce new special <core> form import
(define (xform-import head tail env top?) (define (xpand-import head tail env top?)
(if (list? tail) (if (list? tail)
(let ([ic&ex (preprocess-import-sets (cons head tail) env)]) (let ([ic&ex (preprocess-import-sets (cons head tail) env)])
; NB: this is part 3/4 of listname <-> library interaction ; NB: this is part 3/4 of listname <-> library interaction
@ -1904,8 +1903,8 @@
(lambda () (lambda ()
(let ([sexps (read-file-sexps filepath #f)]) (let ([sexps (read-file-sexps filepath #f)])
(if (sexp-match? '((define-library * * ...)) sexps) (if (sexp-match? '((define-library * * ...)) sexps)
; invoke xform-define-library in 'top' context (for lib:// globals) ; invoke xpand-define-library in 'top' context (for lib:// globals)
(let ([core (xform-define-library (caar sexps) (cdar sexps) sld-env #t)]) (let ([core (xpand-define-library (caar sexps) (cdar sexps) sld-env #t)])
(if (and (sexp-match? '(define-library * *) core) (if (and (sexp-match? '(define-library * *) core)
(equal? (cadr core) listname) (val-library? (caddr core))) (equal? (cadr core) listname) (val-library? (caddr core)))
(caddr core) ;=> <library> (caddr core) ;=> <library>
@ -2114,13 +2113,13 @@
(write w v) (current-jiffy t) (current-second t) (jiffies-per-second t) (write-shared w) (write w v) (current-jiffy t) (current-second t) (jiffies-per-second t) (write-shared w)
(write-simple w) (write-simple w)
; these are special forms in skint! ; these are special forms in skint!
(define-library) (import) (export) (program) (define-library) (import)
; selected extracts from r7rs-large and srfis ; selected extracts from r7rs-large and srfis
(box? x 111) (box x 111) (unbox x 111) (set-box! x 111) (format 28 48) (box? x 111) (box x 111) (unbox x 111) (set-box! x 111) (format 28 48)
(fprintf) (format-pretty-print) (format-fixed-print) (format-fresh-line) (format-help-string) (fprintf) (format-pretty-print) (format-fixed-print) (format-fresh-line) (format-help-string)
; skint extras go into (skint); the rest goes to (skint hidden) ; skint extras go into repl and (skint) library; the rest goes to (skint hidden)
(set&) (lambda*) (body) (letcc) (withcc) (syntax-lambda) (syntax-length) (set&) (lambda*) (body) (letcc) (withcc) (syntax-lambda) (syntax-length)
(record?) (make-record) (record-length) (record-ref) (record-set!) (record?) (make-record) (record-length) (record-ref) (record-set!) (expand)
(fixnum?) (fxpositive?) (fxnegative?) (fxeven?) (fxodd?) (fxzero?) (fx+) (fx*) (fx-) (fx/) (fixnum?) (fxpositive?) (fxnegative?) (fxeven?) (fxodd?) (fxzero?) (fx+) (fx*) (fx-) (fx/)
(fxquotient) (fxremainder) (fxmodquo) (fxmodulo) (fxeucquo) (fxeucrem) (fxneg) (fxquotient) (fxremainder) (fxmodquo) (fxmodulo) (fxeucquo) (fxeucrem) (fxneg)
(fxabs) (fx<?) (fx<=?) (fx>?) (fx>=?) (fx=?) (fx!=?) (fxmin) (fxmax) (fxneg) (fxabs) (fxgcd) (fxabs) (fx<?) (fx<=?) (fx>?) (fx>=?) (fx=?) (fx!=?) (fxmin) (fxmax) (fxneg) (fxabs) (fxgcd)
@ -2130,10 +2129,10 @@
(flexpt) (flsqrt) (flfloor) (flceiling) (fltruncate) (flround) (flexp) (fllog) (flsin) (flcos) (flexpt) (flsqrt) (flfloor) (flceiling) (fltruncate) (flround) (flexp) (fllog) (flsin) (flcos)
(fltan) (flasin) (flacos) (flatan) (fl<?) (fl<=?) (fl>?) (fl>=?) (fl=?) (fl!=?) (flmin) (fltan) (flasin) (flacos) (flatan) (fl<?) (fl<=?) (fl>?) (fl>=?) (fl=?) (fl!=?) (flmin)
(flmax) (flremainder) (flmodulo) (flquotient) (flmodquo) (flonum->fixnum) (flonum->string) (flmax) (flremainder) (flmodulo) (flquotient) (flmodquo) (flonum->fixnum) (flonum->string)
(string->flonum) (list-cat) (last-pair) (list-head) (meme) (asse) (reverse!) (circular?) (cons*) (string->flonum) (list-cat) (last-pair) (list-head) (meme) (asse) (memp) (assp) (reverse!)
(list*) (char-cmp) (char-ci-cmp) (string-cat) (string-position) (string-cmp) (string-ci-cmp) (circular?) (cons*) (list*) (char-cmp) (char-ci-cmp) (string-cat) (string-position)
(vector-cat) (bytevector=?) (bytevector->list) (list->bytevector) (subbytevector) (string-cmp) (string-ci-cmp) (vector-cat) (bytevector=?) (bytevector->list) (list->bytevector)
(standard-input-port) (standard-output-port) (standard-error-port) (tty-port?) (subbytevector) (standard-input-port) (standard-output-port) (standard-error-port) (tty-port?)
(port-fold-case?) (set-port-fold-case!) (rename-file) (current-directory) (directory-separator) (port-fold-case?) (set-port-fold-case!) (rename-file) (current-directory) (directory-separator)
(void) (void?) (void) (void?)
; (repl hidden) library entries below the auto-adder need to be added explicitly ; (repl hidden) library entries below the auto-adder need to be added explicitly
@ -2396,7 +2395,7 @@
(define (evaluate-top-form x env) (define (evaluate-top-form x env)
(if (pair? x) (if (pair? x)
(let ([hval (xform #t (car x) env)]) ; returns <core> (let ([hval (xpand #t (car x) env)]) ; returns <core>
(cond (cond
[(eq? hval 'begin) ; splice [(eq? hval 'begin) ; splice
(let loop ([x* (cdr x)]) (let loop ([x* (cdr x)])
@ -2411,18 +2410,18 @@
(let ([loc (top-defined-id-lookup env (car tail) 'define)]) (let ([loc (top-defined-id-lookup env (car tail) 'define)])
(unless (and (location? loc) (sexp-match? '(ref *) (location-val loc))) (unless (and (location? loc) (sexp-match? '(ref *) (location-val loc)))
(x-error "identifier cannot be (re)defined as variable" (car tail) x)) (x-error "identifier cannot be (re)defined as variable" (car tail) x))
(let ([g (cadr (location-val loc))] [core (xform #f (cadr tail) env)]) (let ([g (cadr (location-val loc))] [core (xpand #f (cadr tail) env)])
(compile-and-run-core-expr (list 'set! g core)) (void)))))] (compile-and-run-core-expr (list 'set! g core)) (void)))))]
[(eq? hval 'define-syntax) ; use new protocol for top-level envs [(eq? hval 'define-syntax) ; use new protocol for top-level envs
(let* ([tail (preprocess-define-syntax (car x) (cdr x))] (let* ([tail (preprocess-define-syntax (car x) (cdr x))]
[loc (top-defined-id-lookup env (car tail) 'define-syntax)]) [loc (top-defined-id-lookup env (car tail) 'define-syntax)])
(unless (location? loc) (unless (location? loc)
(x-error "unexpected define-syntax for id" (car tail) x)) (x-error "unexpected define-syntax for id" (car tail) x))
(location-set-val! loc (xform #t (cadr tail) env)) (location-set-val! loc (xpand #t (cadr tail) env))
(when *verbose* (display "SYNTAX INSTALLED: ") (write (car tail)) (newline)) (when *verbose* (display "SYNTAX INSTALLED: ") (write (car tail)) (newline))
(void))] (void))]
[(eq? hval 'define-library) ; use new protocol for top-level envs [(eq? hval 'define-library) ; use new protocol for top-level envs
(let* ([core (xform-define-library (car x) (cdr x) env #t)] (let* ([core (xpand-define-library (car x) (cdr x) env #t)]
; core is (define-library <listname> <library>) ; core is (define-library <listname> <library>)
[loc (xenv-lookup env (cadr core) 'define-syntax)]) [loc (xenv-lookup env (cadr core) 'define-syntax)])
(unless (location? loc) (unless (location? loc)
@ -2430,7 +2429,7 @@
(location-set-val! loc (caddr core)) (location-set-val! loc (caddr core))
(when *verbose* (display "LIBRARY INSTALLED: ") (write (cadr core)) (newline)))] (when *verbose* (display "LIBRARY INSTALLED: ") (write (cadr core)) (newline)))]
[(eq? hval 'import) ; splice as definitions [(eq? hval 'import) ; splice as definitions
(let* ([core (xform-import (car x) (cdr x) env #t)] (let* ([core (xpand-import (car x) (cdr x) env #t)]
; core is (import <library>) ; core is (import <library>)
[l (cadr core)] [code (library-code l)] [eal (library-exports l)]) [l (cadr core)] [code (library-code l)] [eal (library-exports l)])
; note: try to use env's import protocol ; note: try to use env's import protocol
@ -2447,7 +2446,7 @@
[(val-transformer? hval) ; apply transformer and loop [(val-transformer? hval) ; apply transformer and loop
; NOTE: if transformer output is a begin, it needs to be scanned for defines ; NOTE: if transformer output is a begin, it needs to be scanned for defines
; in case some of them use generated names that need to be gensym'd via pp pass ; in case some of them use generated names that need to be gensym'd via pp pass
(let* ([x (hval x env)] [hv (and (pair? x) (xform #t (car x) env))]) (let* ([x (hval x env)] [hv (and (pair? x) (xpand #t (car x) env))])
(if (and (eq? hv 'begin) (list2+? x)) (if (and (eq? hv 'begin) (list2+? x))
(let* ([code* (preprocess-top-forms-scan (cdr x) env env)] (let* ([code* (preprocess-top-forms-scan (cdr x) env env)]
[fix! (lambda (code) (preprocess-top-form-fix! code env))] [fix! (lambda (code) (preprocess-top-form-fix! code env))]
@ -2455,13 +2454,13 @@
(compile-and-run-core-expr code)) ; tail (compile-and-run-core-expr code)) ; tail
(evaluate-top-form x env)))] ; tail (evaluate-top-form x env)))] ; tail
[(val-integrable? hval) ; integrable application [(val-integrable? hval) ; integrable application
(compile-and-run-core-expr (xform-integrable hval (cdr x) env))] (compile-and-run-core-expr (xpand-integrable hval (cdr x) env))]
[(val-builtin? hval) ; other builtins [(val-builtin? hval) ; other builtins
(compile-and-run-core-expr (xform #f x env))] (compile-and-run-core-expr (xpand #f x env))]
[else ; regular call [else ; regular call
(compile-and-run-core-expr (xform-call hval (cdr x) env))])) (compile-and-run-core-expr (xpand-call hval (cdr x) env))]))
; var refs and literals ; var refs and literals
(compile-and-run-core-expr (xform #f x env)))) (compile-and-run-core-expr (xpand #f x env))))
; public interface to eval as per r7rs ; public interface to eval as per r7rs
@ -2483,7 +2482,13 @@
(eval x env) (eval x env)
(loop (read-code-sexp port)))))) (loop (read-code-sexp port))))))
; we aren't asked by the spec to call last expr tail-recursively, so this ; we aren't asked by the spec to call last expr tail-recursively, so this
(void)) (void))
; useful debugging form
(define (expand expr . ?env)
(define env (if (pair? ?env) (car ?env) (interaction-environment)))
(xpand #t expr env)) ; allow it to return any expressed value
; srfi-22 - like script processor (args is list of strings) ; srfi-22 - like script processor (args is list of strings)
(define (run-script filename args) (define (run-script filename args)
@ -2685,7 +2690,7 @@
[help "-h" "--help" #f "Display this help"] [help "-h" "--help" #f "Display this help"]
)) ))
(define *skint-version* "0.3.9") (define *skint-version* "0.4.9")
(define (skint-main) (define (skint-main)
; see if command line asks for special processing ; see if command line asks for special processing

5
s.c
View file

@ -1123,8 +1123,9 @@ char *s_code[] = {
"P", "format", "P", "format",
"%!1f,.2q,.0?{.0}{.2S0}_1?{P51,.2?{.1,.3c}{.1},${.2,.4c,@(y7:fprintf),@" "%!1f,.2q,.0?{.0}{.2S0}_1?{P51,.2?{.1,.3c}{.1},${.2,.4c,@(y7:fprintf),@"
"(y13:apply-to-list)[02}.1P90]4}t,.2q?{.0,Poc,@(y7:fprintf),@(y13:apply" "(y13:apply-to-list)[02}.1P90]4}t,.2q?{${.2,Poc,@(y7:fprintf),@(y13:app"
"-to-list)[22}.0,.2c,@(y7:fprintf),@(y13:apply-to-list)[22", "ly-to-list)[02}Y9]2}${.2,.4c,@(y7:fprintf),@(y13:apply-to-list)[02}Y9]"
"2",
"P", "write-to-string", "P", "write-to-string",
"%1P51,.0,.2W5.0P90,.1P61.0]3", "%1P51,.0,.2W5.0P90,.1P61.0]3",

338
t.c
View file

@ -209,13 +209,13 @@ char *t_code[] = {
"%3.2,.2,'(y3:ref),l2,.2,@(y17:extend-xenv-local)[33", "%3.2,.2,'(y3:ref),l2,.2,@(y17:extend-xenv-local)[33",
"P", "xenv-lookup", "P", "xenv-lookup",
"%3${.4,.4,.4[02},.0?{.0]4}.3,${.5,@(y17:xform-sexp->datum)[01},.4,l3,'" "%3${.4,.4,.4[02},.0?{.0]4}.3,${.5,@(y17:xpand-sexp->datum)[01},.4,l3,'"
"(s38:transformer: invalid identifier access),@(y6:error*)[42", "(s38:transformer: invalid identifier access),@(y6:error*)[42",
"P", "xenv-ref", "P", "xenv-ref",
"%2'(y3:ref),.2,.2,@(y11:xenv-lookup)[23", "%2'(y3:ref),.2,.2,@(y11:xenv-lookup)[23",
"P", "xform-sexp->datum", "P", "xpand-sexp->datum",
"%1.0,,#0.0,&1{%1${.2,@(y3:id?)[01}?{.0,@(y7:id->sym)[11}.0p?{${.2d,:0^" "%1.0,,#0.0,&1{%1${.2,@(y3:id?)[01}?{.0,@(y7:id->sym)[11}.0p?{${.2d,:0^"
"[01},${.3a,:0^[01}c]1}.0V0?{${.2X0,:0^,@(y5:%25map1)[02}X1]1}.0]1}.!0." "[01},${.3a,:0^[01}c]1}.0V0?{${.2X0,:0^,@(y5:%25map1)[02}X1]1}.0]1}.!0."
"0^_1[11", "0^_1[11",
@ -248,65 +248,65 @@ char *t_code[] = {
"e-registry?)[01}?{${.3,@(y14:name-registry?)[01}}{f}?{.1,.1q?{.4,.3q]6" "e-registry?)[01}?{${.3,@(y14:name-registry?)[01}}{f}?{.1,.1q?{.4,.3q]6"
"}f]6}.1,.1q]6}f]6}f]6", "}f]6}.1,.1q]6}f]6}f]6",
"P", "xform", "P", "xpand",
"%3${.3,@(y3:id?)[01}?{${.4,.4,@(y9:xform-ref)[02},.1?{.0]4}.0U0?{.0U7," "%3${.3,@(y3:id?)[01}?{${.4,.4,@(y9:xpand-ref)[02},.1?{.0]4}.0U0?{.0U7,"
"'(y5:const),l2]4}.0K0?{.3,${.6,.6,.5[02},.3,@(y5:xform)[43}.0V0?{.2,.1" "'(y5:const),l2]4}.0K0?{.3,${.6,.6,.5[02},.3,@(y5:xpand)[43}.0V0?{.2,.1"
",'(s23:improper use of library),@(y7:x-error)[43}.0Y8?{${.4,@(y7:id->s" ",'(s23:improper use of library),@(y7:x-error)[43}.0Y8?{${.4,@(y7:id->s"
"ym)[01},.3,.2,'(s15:id has no value),@(y7:x-error)[44}.0p~?{.0,'(s27:i" "ym)[01},.3,.2,'(s15:id has no value),@(y7:x-error)[44}.0p~?{.0,'(s27:i"
"mproper use of syntax form),@(y7:x-error)[42}.0]4}.1p~?{.2,.2,l1,@(y11" "mproper use of syntax form),@(y7:x-error)[42}.0]4}.1p~?{.2,.2,l1,@(y11"
":xform-quote)[32}.1a,.2d,${.6,.4,t,@(y5:xform)[03},.0,'(y5:quote),.1v?" ":xpand-quote)[32}.1a,.2d,${.6,.4,t,@(y5:xpand)[03},.0,'(y5:quote),.1v?"
"{.6,.3,@(y11:xform-quote)[72}'(y4:set!),.1v?{.6,.3,@(y10:xform-set!)[7" "{.6,.3,@(y11:xpand-quote)[72}'(y4:set!),.1v?{.6,.3,@(y10:xpand-set!)[7"
"2}'(y4:set&),.1v?{.6,.3,@(y10:xform-set&)[72}'(y2:if),.1v?{.6,.3,@(y8:" "2}'(y4:set&),.1v?{.6,.3,@(y10:xpand-set&)[72}'(y2:if),.1v?{.6,.3,@(y8:"
"xform-if)[72}'(y6:lambda),.1v?{.6,.3,@(y12:xform-lambda)[72}'(y7:lambd" "xpand-if)[72}'(y6:lambda),.1v?{.6,.3,@(y12:xpand-lambda)[72}'(y7:lambd"
"a*),.1v?{.6,.3,@(y13:xform-lambda*)[72}'(y5:letcc),.1v?{.6,.3,@(y11:xf" "a*),.1v?{.6,.3,@(y13:xpand-lambda*)[72}'(y5:letcc),.1v?{.6,.3,@(y11:xp"
"orm-letcc)[72}'(y6:withcc),.1v?{.6,.3,@(y12:xform-withcc)[72}'(y4:body" "and-letcc)[72}'(y6:withcc),.1v?{.6,.3,@(y12:xpand-withcc)[72}'(y4:body"
"),.1v?{.4,.7,.4,@(y10:xform-body)[73}'(y5:begin),.1v?{.4,.7,.4,@(y11:x" "),.1v?{.4,.7,.4,@(y10:xpand-body)[73}'(y5:begin),.1v?{.4,.7,.4,@(y11:x"
"form-begin)[73}'(y6:define),.1v?{.6,.3,@(y12:xform-define)[72}'(y13:de" "pand-begin)[73}'(y6:define),.1v?{.6,.3,@(y12:xpand-define)[72}'(y13:de"
"fine-syntax),.1v?{.6,.3,@(y19:xform-define-syntax)[72}'(y12:syntax-quo" "fine-syntax),.1v?{.6,.3,@(y19:xpand-define-syntax)[72}'(y12:syntax-quo"
"te),.1v?{.6,.3,@(y18:xform-syntax-quote)[72}'(y13:syntax-lambda),.1v?{" "te),.1v?{.6,.3,@(y18:xpand-syntax-quote)[72}'(y13:syntax-lambda),.1v?{"
".4,.7,.4,@(y19:xform-syntax-lambda)[73}'(y12:syntax-rules),.1v?{.6,.3," ".4,.7,.4,@(y19:xpand-syntax-lambda)[73}'(y12:syntax-rules),.1v?{.6,.3,"
"@(y18:xform-syntax-rules)[72}'(y13:syntax-length),.1v?{.6,.3,@(y19:xfo" "@(y18:xpand-syntax-rules)[72}'(y13:syntax-length),.1v?{.6,.3,@(y19:xpa"
"rm-syntax-length)[72}'(y12:syntax-error),.1v?{.6,.3,@(y18:xform-syntax" "nd-syntax-length)[72}'(y12:syntax-error),.1v?{.6,.3,@(y18:xpand-syntax"
"-error)[72}'(y14:define-library),.1v?{f,.7,.4,.6,@(y20:xform-define-li" "-error)[72}'(y14:define-library),.1v?{f,.7,.4,.6,@(y20:xpand-define-li"
"brary)[74}'(y6:import),.1v?{f,.7,.4,.6,@(y12:xform-import)[74}'(l2:y6:" "brary)[74}'(y6:import),.1v?{f,.7,.4,.6,@(y12:xpand-import)[74}'(l2:y6:"
"export;y7:program;),.1A1?{.5,.2,'(s26:FIXME: not yet implemented),@(y7" "export;y7:program;),.1A1?{.5,.2,'(s26:FIXME: not yet implemented),@(y7"
":x-error)[73}'(l2:y3:...;y1:_;),.1A1?{.5,.2,'(s32:improper use of auxi" ":x-error)[73}'(l2:y3:...;y1:_;),.1A1?{.5,.2,'(s32:improper use of auxi"
"liary syntax),@(y7:x-error)[73}.1U0?{.6,.3,.3,@(y16:xform-integrable)[" "liary syntax),@(y7:x-error)[73}.1U0?{.6,.3,.3,@(y16:xpand-integrable)["
"73}.1K0?{.6,${.9,.9,.6[02},.6,@(y5:xform)[73}.1V0?{.5,.2,'(s23:imprope" "73}.1K0?{.6,${.9,.9,.6[02},.6,@(y5:xpand)[73}.1V0?{.5,.2,'(s23:imprope"
"r use of library),@(y7:x-error)[73}.1Y8?{.5,.2,'(s24:use of uninitiali" "r use of library),@(y7:x-error)[73}.1Y8?{.5,.2,'(s24:use of uninitiali"
"zed val),@(y7:x-error)[73}.1p~?{.1,'(s27:improper use of syntax form)," "zed val),@(y7:x-error)[73}.1p~?{.1,'(s27:improper use of syntax form),"
"@(y7:x-error)[72}.6,.3,.3,@(y10:xform-call)[73", "@(y7:x-error)[72}.6,.3,.3,@(y10:xpand-call)[73",
"P", "xform-quote", "P", "xpand-quote",
"%2${.2,@(y6:list1?)[01}?{${.2a,@(y17:xform-sexp->datum)[01},'(y5:quote" "%2${.2,@(y6:list1?)[01}?{${.2a,@(y17:xpand-sexp->datum)[01},'(y5:quote"
"),l2]2}.0,'(y5:quote)c,'(s19:improper quote form),@(y7:x-error)[22", "),l2]2}.0,'(y5:quote)c,'(s19:improper quote form),@(y7:x-error)[22",
"P", "xform-ref", "P", "xpand-ref",
"%2${.2,.4,@(y8:xenv-ref)[02}z]2", "%2${.2,.4,@(y8:xenv-ref)[02}z]2",
"P", "xform-set!", "P", "xpand-set!",
"%2${.2,@(y6:list2?)[01}?{${.2a,@(y3:id?)[01}}{f}?{${.3,.3da,f,@(y5:xfo" "%2${.2,@(y6:list2?)[01}?{${.2a,@(y3:id?)[01}}{f}?{${.3,.3da,f,@(y5:xpa"
"rm)[03},${'(y4:set!),.4a,.6,@(y11:xenv-lookup)[03},${.2,@(y17:location" "nd)[03},${'(y4:set!),.4a,.6,@(y11:xenv-lookup)[03},${.2,@(y17:location"
"-special?)[01}?{.2,'(y4:set!)c,'(s38:set! to macro or integrable ident" "-special?)[01}?{.2,'(y4:set!)c,'(s38:set! to macro or integrable ident"
"ifier),@(y7:x-error)[42}.0z,'(y3:ref),.1aq?{.2,.1da,'(y4:set!),l3]5}.3" "ifier),@(y7:x-error)[42}.0z,'(y3:ref),.1aq?{.2,.1da,'(y4:set!),l3]5}.3"
",'(y4:set!)c,'(s19:set! is not allowed),@(y7:x-error)[52}.0,'(y4:set!)" ",'(y4:set!)c,'(s19:set! is not allowed),@(y7:x-error)[52}.0,'(y4:set!)"
"c,'(s18:improper set! form),@(y7:x-error)[22", "c,'(s18:improper set! form),@(y7:x-error)[22",
"P", "xform-set&", "P", "xpand-set&",
"%2${.2,@(y6:list1?)[01}?{${'(y4:set!),.3a,.5,@(y11:xenv-lookup)[03},${" "%2${.2,@(y6:list1?)[01}?{${'(y4:set!),.3a,.5,@(y11:xenv-lookup)[03},${"
".2,@(y17:location-special?)[01}?{.1,'(y4:set&)c,'(s38:set& of macro or" ".2,@(y17:location-special?)[01}?{.1,'(y4:set&)c,'(s38:set& of macro or"
" integrable identifier),@(y7:x-error)[32}.0z,'(y3:ref),.1aq?{.0da,'(y4" " integrable identifier),@(y7:x-error)[32}.0z,'(y3:ref),.1aq?{.0da,'(y4"
":set&),l2]4}.2,'(y4:set!)c,'(s19:set& is not allowed),@(y7:x-error)[42" ":set&),l2]4}.2,'(y4:set!)c,'(s19:set& is not allowed),@(y7:x-error)[42"
"}.0,'(y4:set&)c,'(s18:improper set& form),@(y7:x-error)[22", "}.0,'(y4:set&)c,'(s18:improper set& form),@(y7:x-error)[22",
"P", "xform-if", "P", "xpand-if",
"%2.0L0?{${.2,.4,&1{%1:0,.1,f,@(y5:xform)[13},@(y5:%25map1)[02},.0g,'2," "%2.0L0?{${.2,.4,&1{%1:0,.1,f,@(y5:xpand)[13},@(y5:%25map1)[02},.0g,'2,"
".1v?{'(l1:l1:y5:begin;;),.2L6,'(y2:if)c]4}'3,.1v?{.1,'(y2:if)c]4}.2,'(" ".1v?{'(l1:l1:y5:begin;;),.2L6,'(y2:if)c]4}'3,.1v?{.1,'(y2:if)c]4}.2,'("
"y2:if)c,'(s17:malformed if form),@(y7:x-error)[42}.0,'(y2:if)c,'(s16:i" "y2:if)c,'(s17:malformed if form),@(y7:x-error)[42}.0,'(y2:if)c,'(s16:i"
"mproper if form),@(y7:x-error)[22", "mproper if form),@(y7:x-error)[22",
"P", "xform-call", "P", "xpand-call",
"%3.1L0?{${.3,.5,&1{%1:0,.1,f,@(y5:xform)[13},@(y5:%25map1)[02},.0u?{'(" "%3.1L0?{${.3,.5,&1{%1:0,.1,f,@(y5:xpand)[13},@(y5:%25map1)[02},.0u?{'("
"y6:lambda),.2aq?{.1dau}{f}}{f}?{.1dda]4}.0,.2,'(y4:call),@(y5:pair*)[4" "y6:lambda),.2aq?{.1dau}{f}}{f}?{.1dda]4}.0,.2,'(y4:call),@(y5:pair*)[4"
"3}.1,.1c,'(s20:improper application),@(y7:x-error)[32", "3}.1,.1c,'(s20:improper application),@(y7:x-error)[32",
@ -317,36 +317,36 @@ char *t_code[] = {
",.3,,'1>!;>!]3}'(ct),.1v?{'3,.3,,'2>!;>!]3}'(c#),.1v?{'0,.3<!]3}'(c@)," ",.3,,'1>!;>!]3}'(ct),.1v?{'3,.3,,'2>!;>!]3}'(c#),.1v?{'0,.3<!]3}'(c@),"
".1v?{f]3}f]3", ".1v?{f]3}f]3",
"P", "xform-integrable", "P", "xpand-integrable",
"%3${.3g,.3U6,@(y22:integrable-argc-match?)[02}?{${.3,.5,&1{%1:0,.1,f,@" "%3${.3g,.3U6,@(y22:integrable-argc-match?)[02}?{${.3,.5,&1{%1:0,.1,f,@"
"(y5:xform)[13},@(y5:%25map1)[02},.1c,'(y10:integrable)c]3}.2,.2,.2U7,'" "(y5:xpand)[13},@(y5:%25map1)[02},.1c,'(y10:integrable)c]3}.2,.2,.2U7,'"
"(y3:ref),l2,@(y10:xform-call)[33", "(y3:ref),l2,@(y10:xpand-call)[33",
"P", "xform-lambda", "P", "xpand-lambda",
"%2${.2,@(y7:list1+?)[01}?{${.2a,@(y8:idslist?)[01}}{f}?{n,.2,.2a,,#0.4" "%2${.2,@(y7:list1+?)[01}?{${.2a,@(y8:idslist?)[01}}{f}?{n,.2,.2a,,#0.4"
",.1,&2{%3.0p?{.0a,${${.4,@(y7:id->sym)[01},@(y6:gensym)[01},.4,.1c,${." ",.1,&2{%3.0p?{.0a,${${.4,@(y7:id->sym)[01},@(y6:gensym)[01},.4,.1c,${."
"6,.4,.6,@(y13:add-local-var)[03},.4d,:0^[53}.0u?{${f,.4,:1d,@(y10:xfor" "6,.4,.6,@(y13:add-local-var)[03},.4d,:0^[53}.0u?{${f,.4,:1d,@(y10:xpan"
"m-body)[03},.3A8,'(y6:lambda),l3]3}.0,${${.4,@(y7:id->sym)[01},@(y6:ge" "d-body)[03},.3A8,'(y6:lambda),l3]3}.0,${${.4,@(y7:id->sym)[01},@(y6:ge"
"nsym)[01},${.5,.3,.5,@(y13:add-local-var)[03},${f,.3,:1d,@(y10:xform-b" "nsym)[01},${.5,.3,.5,@(y13:add-local-var)[03},${f,.3,:1d,@(y10:xpand-b"
"ody)[03},.2,.7A8L6,'(y6:lambda),l3]6}.!0.0^_1[23}.0,'(y6:lambda)c,'(s2" "ody)[03},.2,.7A8L6,'(y6:lambda),l3]6}.!0.0^_1[23}.0,'(y6:lambda)c,'(s2"
"0:improper lambda body),@(y7:x-error)[22", "0:improper lambda body),@(y7:x-error)[22",
"P", "xform-lambda*", "P", "xpand-lambda*",
"%2.0L0?{${.2,.4,&1{%1${.2,@(y6:list2?)[01}?{${.2a,@(y6:list2?)[01}?{.0" "%2.0L0?{${.2,.4,&1{%1${.2,@(y6:list2?)[01}?{${.2a,@(y6:list2?)[01}?{.0"
"aaI0?{.0adaY1}{f}}{f},.0?{.0}{${.3a,@(y8:idslist?)[01}}_1}{f}?{${:0,.3" "aaI0?{.0adaY1}{f}}{f},.0?{.0}{${.3a,@(y8:idslist?)[01}}_1}{f}?{${:0,.3"
"da,f,@(y5:xform)[03},${.3a,@(y15:normalize-arity)[01},l2]1}.0,'(s23:im" "da,f,@(y5:xpand)[03},${.3a,@(y15:normalize-arity)[01},l2]1}.0,'(s23:im"
"proper lambda* clause),@(y7:x-error)[12},@(y5:%25map1)[02},'(y7:lambda" "proper lambda* clause),@(y7:x-error)[12},@(y5:%25map1)[02},'(y7:lambda"
"*)c]2}.0,'(y7:lambda*)c,'(s21:improper lambda* form),@(y7:x-error)[22", "*)c]2}.0,'(y7:lambda*)c,'(s21:improper lambda* form),@(y7:x-error)[22",
"P", "xform-letcc", "P", "xpand-letcc",
"%2${.2,@(y7:list2+?)[01}?{${.2a,@(y3:id?)[01}}{f}?{.0a,${${.4,@(y7:id-" "%2${.2,@(y7:list2+?)[01}?{${.2a,@(y3:id?)[01}}{f}?{.0a,${${.4,@(y7:id-"
">sym)[01},@(y6:gensym)[01},${f,${.8,.6,.8,@(y13:add-local-var)[03},.6d" ">sym)[01},@(y6:gensym)[01},${f,${.8,.6,.8,@(y13:add-local-var)[03},.6d"
",@(y10:xform-body)[03},.1,'(y5:letcc),l3]4}.0,'(y5:letcc)c,'(s19:impro" ",@(y10:xpand-body)[03},.1,'(y5:letcc),l3]4}.0,'(y5:letcc)c,'(s19:impro"
"per letcc form),@(y7:x-error)[22", "per letcc form),@(y7:x-error)[22",
"P", "xform-withcc", "P", "xpand-withcc",
"%2${.2,@(y7:list2+?)[01}?{f,${.4,.4d,@(y10:xform-body)[02},${.5,.5a,f," "%2${.2,@(y7:list2+?)[01}?{f,${.4,.4d,@(y10:xpand-body)[02},${.5,.5a,f,"
"@(y5:xform)[03},'(y6:withcc),l4]2}.0,'(y6:withcc)c,'(s20:improper with" "@(y5:xpand)[03},'(y6:withcc),l4]2}.0,'(y6:withcc)c,'(s20:improper with"
"cc form),@(y7:x-error)[22", "cc form),@(y7:x-error)[22",
"P", "preprocess-define", "P", "preprocess-define",
@ -359,11 +359,11 @@ char *t_code[] = {
"%2${.3,@(y6:list2?)[01}?{${.3a,@(y3:id?)[01}}{f}?{.1]2}.1,.1c,'(s27:im" "%2${.3,@(y6:list2?)[01}?{${.3a,@(y3:id?)[01}}{f}?{.1]2}.1,.1c,'(s27:im"
"proper define-syntax form),@(y7:x-error)[22", "proper define-syntax form),@(y7:x-error)[22",
"P", "xform-body", "P", "xpand-body",
"%3.0u?{'(y5:begin),l1]3}${.2,@(y6:list1?)[01}?{.1,.1a,.4,@(y5:xform)[3" "%3.0u?{'(y5:begin),l1]3}${.2,@(y6:list1?)[01}?{.1,.1a,.4,@(y5:xpand)[3"
"3}.0L0~?{.0,'(y4:body)c,'(s18:improper body form),@(y7:x-error)[32}.0," "3}.0L0~?{.0,'(y4:body)c,'(s18:improper body form),@(y7:x-error)[32}.0,"
"n,n,n,.5,,#0.8,.1,&2{%5.4p?{.4ap}{f}?{.4d,.5a,.0a,.1d,${.6,.4,t,@(y5:x" "n,n,n,.5,,#0.8,.1,&2{%5.4p?{.4ap}{f}?{.4d,.5a,.0a,.1d,${.6,.4,t,@(y5:x"
"form)[03},.0,'(y5:begin),.1v?{.2L0?{.5,.3L6,.(i10),.(i10),.(i10),.(i10" "pand)[03},.0,'(y5:begin),.1v?{.2L0?{.5,.3L6,.(i10),.(i10),.(i10),.(i10"
"),:0^[(i11)5}.4,'(s19:improper begin form),@(y7:x-error)[(i11)2}'(y6:d" "),:0^[(i11)5}.4,'(s19:improper begin form),@(y7:x-error)[(i11)2}'(y6:d"
"efine),.1v?{${.4,.6,@(y17:preprocess-define)[02},${.2,@(y6:list1?)[01}" "efine),.1v?{${.4,.6,@(y17:preprocess-define)[02},${.2,@(y6:list1?)[01}"
"?{.0a,.7,.(i12),fc,.(i12),.3c,.(i12),fc,.(i12),:0^[(i13)5}.0a,.1da,${$" "?{.0a,.7,.(i12),fc,.(i12),.3c,.(i12),fc,.(i12),:0^[(i13)5}.0a,.1da,${$"
@ -373,71 +373,71 @@ char *t_code[] = {
"a,${.(i11),'(l1:y9:undefined;),.5,@(y17:extend-xenv-local)[03},.9,.(i1" "a,${.(i11),'(l1:y9:undefined;),.5,@(y17:extend-xenv-local)[03},.9,.(i1"
"4),tc,.(i14),.4c,.(i14),.6c,.4,:0^[(i15)5}'(y14:define-library),.1v?{$" "4),tc,.(i14),.4c,.(i14),.6c,.4,:0^[(i15)5}'(y14:define-library),.1v?{$"
"{.4,@(y7:list2+?)[01}?{${.4a,@(y9:listname?)[01}}{f}?{${f,.9,.6,.8,@(y" "{.4,@(y7:list2+?)[01}?{${.4a,@(y9:listname?)[01}}{f}?{${f,.9,.6,.8,@(y"
"20:xform-define-library)[04},.0da,.1dda,${.(i11),.3,.5,@(y17:extend-xe" "20:xpand-define-library)[04},.0da,.1dda,${.(i11),.3,.5,@(y17:extend-xe"
"nv-local)[03},.9,.(i14),.(i14),.(i14),.4,:0^[(i15)5}.4,'(s28:improper " "nv-local)[03},.9,.(i14),.(i14),.(i14),.4,:0^[(i15)5}.4,'(s28:improper "
"define-library form),@(y7:x-error)[(i11)2}'(y6:import),.1v?{.2L0?{${f," "define-library form),@(y7:x-error)[(i11)2}'(y6:import),.1v?{.2L0?{${f,"
".9,.6,.8,@(y12:xform-import)[04},.0da,'0,.1V4,'1,.2V4,.(i10),.1,,#0.(i" ".9,.6,.8,@(y12:xpand-import)[04},.0da,'0,.1V4,'1,.2V4,.(i10),.1,,#0.(i"
"10),.1,.(i14),.(i19),.(i19),.(i19),:0,.(i11),&8{%2.0u?{:0,@(y15:syntax" "10),.1,.(i14),.(i19),.(i19),.(i19),:0,.(i11),&8{%2.0u?{:0,@(y15:syntax"
"-quote-id),l2,:5,:4,fc,:3,.3c,:2,fc,.6,:1^[35}.0ad,${.3aa,:7,@(y12:id-" "-quote-id),l2,:5,:4,fc,:3,.3c,:2,fc,.6,:1^[35}.0ad,${.3aa,:7,@(y12:id-"
"rename-as)[02},.3,.2,.2,&3{%2:0,.1q?{'(l2:y3:ref;y4:peek;),.2A0?{:1]2}" "rename-as)[02},.3,.2,.2,&3{%2:0,.1q?{'(l2:y3:ref;y4:peek;),.2A0?{:1]2}"
"f]2}.1,.1,:2[22},.3d,:6^[42}.!0.0^_1[(i15)2}.4,'(s20:improper import f" "f]2}.1,.1,:2[22},.3d,:6^[42}.!0.0^_1[(i15)2}.4,'(s20:improper import f"
"orm),@(y7:x-error)[(i11)2}.1K0?{.5,${.9,.8,.6[02}c,.(i10),.(i10),.(i10" "orm),@(y7:x-error)[(i11)2}.1K0?{.5,${.9,.8,.6[02}c,.(i10),.(i10),.(i10"
"),.(i10),:0^[(i11)5}:1,.7,.(i12),.(i12)A8,.(i12)A8,.(i12)A8,@(y12:xfor" "),.(i10),:0^[(i11)5}:1,.7,.(i12),.(i12)A8,.(i12)A8,.(i12)A8,@(y12:xpan"
"m-labels)[(i11)6}:1,.1,.6,.6A8,.6A8,.6A8,@(y12:xform-labels)[56}.!0.0^" "d-labels)[(i11)6}:1,.1,.6,.6A8,.6A8,.6A8,@(y12:xpand-labels)[56}.!0.0^"
"_1[35", "_1[35",
"P", "xform-labels", "P", "xpand-labels",
"%6,#0${.5,&0{%1t,.1q]1},@(y6:andmap)[02}.!0n,n,.5,.5,.5,,#0.0,.(i12),." "%6,#0${.5,&0{%1t,.1q]1},@(y6:andmap)[02}.!0n,n,.5,.5,.5,,#0.0,.(i12),."
"8,.(i15),.(i14),&5{%5.0u?{:2^?{${:0,@(y6:list1?)[01}}{f}?{:3,:0a,:1,@(" "8,.(i15),.(i14),&5{%5.0u?{:2^?{${:0,@(y6:list1?)[01}}{f}?{:3,:0a,:1,@("
"y5:xform)[53}${:0,:3,&1{%1:0,.1,f,@(y5:xform)[13},@(y5:%25map1)[02},.4" "y5:xpand)[53}${:0,:3,&1{%1:0,.1,f,@(y5:xpand)[13},@(y5:%25map1)[02},.4"
"A8L6,${.2,@(y6:list1?)[01}?{.0a}{.0,'(y5:begin)c},.6u?{.0]7}${.8,&0{%1" "A8L6,${.2,@(y6:list1?)[01}?{.0a}{.0,'(y5:begin)c},.6u?{.0]7}${.8,&0{%1"
"'(l1:y5:begin;)]1},@(y5:%25map1)[02},.1,.8A8,'(y6:lambda),l3,'(y4:call" "'(l1:y5:begin;)]1},@(y5:%25map1)[02},.1,.8A8,'(y6:lambda),l3,'(y4:call"
"),@(y5:pair*)[73}.0a~?{.4,.4,${:3,.6a,f,@(y5:xform)[03}c,.4d,.4d,.4d,:" "),@(y5:pair*)[73}.0a~?{.4,.4,${:3,.6a,f,@(y5:xpand)[03}c,.4d,.4d,.4d,:"
"4^[55}.2aY0?{.4,.3ac,.4,${:3,.6a,.6a,l2,@(y10:xform-set!)[02}c,.4d,.4d" "4^[55}.2aY0?{.4,.3ac,.4,${:3,.6a,.6a,l2,@(y10:xpand-set!)[02}c,.4d,.4d"
",.4d,:4^[55}${:3,.4a,t,@(y5:xform)[03},${'(y4:set!),.4a,:3,@(y11:xenv-" ",.4d,:4^[55}${:3,.4a,t,@(y5:xpand)[03},${'(y4:set!),.4a,:3,@(y11:xenv-"
"lookup)[03}sz.4,.4,.4d,.4d,.4d,:4^[55}.!0.0^_1[75", "lookup)[03}sz.4,.4,.4d,.4d,.4d,:4^[55}.!0.0^_1[75",
"P", "xform-begin", "P", "xpand-begin",
"%3.0L0?{${.2,@(y6:list1?)[01}?{.1,.1a,.4,@(y5:xform)[33}${.2,.4,&1{%1:" "%3.0L0?{${.2,@(y6:list1?)[01}?{.1,.1a,.4,@(y5:xpand)[33}${.2,.4,&1{%1:"
"0,.1,f,@(y5:xform)[13},@(y5:%25map1)[02},'(y5:begin)c]3}.0,'(y5:begin)" "0,.1,f,@(y5:xpand)[13},@(y5:%25map1)[02},'(y5:begin)c]3}.0,'(y5:begin)"
"c,'(s19:improper begin form),@(y7:x-error)[32", "c,'(s19:improper begin form),@(y7:x-error)[32",
"P", "xform-define", "P", "xpand-define",
"%2${.2,'(y6:define),@(y17:preprocess-define)[02},${.2,@(y6:list1?)[01}" "%2${.2,'(y6:define),@(y17:preprocess-define)[02},${.2,@(y6:list1?)[01}"
"?{.2,.1da,f,@(y5:xform)[33}${.4,.3da,f,@(y5:xform)[03},${.3a,@(y7:id->" "?{.2,.1da,f,@(y5:xpand)[33}${.4,.3da,f,@(y5:xpand)[03},${.3a,@(y7:id->"
"sym)[01},'(y6:define),l3]3", "sym)[01},'(y6:define),l3]3",
"P", "xform-define-syntax", "P", "xpand-define-syntax",
"%2${.2,'(y13:define-syntax),@(y24:preprocess-define-syntax)[02},${.4,." "%2${.2,'(y13:define-syntax),@(y24:preprocess-define-syntax)[02},${.4,."
"3da,t,@(y5:xform)[03},${.3a,@(y7:id->sym)[01},'(y13:define-syntax),l3]" "3da,t,@(y5:xpand)[03},${.3a,@(y7:id->sym)[01},'(y13:define-syntax),l3]"
"3", "3",
"P", "xform-syntax-quote", "P", "xpand-syntax-quote",
"%2${.2,@(y6:list1?)[01}?{.0a]2}.0,'(y12:syntax-quote)c,'(s26:improper " "%2${.2,@(y6:list1?)[01}?{.0a]2}.0,'(y12:syntax-quote)c,'(s26:improper "
"syntax-quote form),@(y7:x-error)[22", "syntax-quote form),@(y7:x-error)[22",
"P", "xform-syntax-lambda", "P", "xpand-syntax-lambda",
"%3${.2,@(y7:list2+?)[01}?{${.2a,@(y3:id?),@(y6:andmap)[02}}{f}?{.0d,.2" "%3${.2,@(y7:list2+?)[01}?{${.2a,@(y3:id?),@(y6:andmap)[02}}{f}?{.0d,.2"
",.2a,.5,.3,.2,.4,&4{%2${.2,@(y7:list1+?)[01}?{.0dg,:1gI=}{f}?{:0,.1d,:" ",.2a,.5,.3,.2,.4,&4{%2${.2,@(y7:list1+?)[01}?{.0dg,:1gI=}{f}?{:0,.1d,:"
"1,,#0.5,.1,:3,:2,&4{%3.0u?{${:1,.5,:0,@(y10:xform-body)[03},@(y15:synt" "1,,#0.5,.1,:3,:2,&4{%3.0u?{${:1,.5,:0,@(y10:xpand-body)[03},@(y15:synt"
"ax-quote-id),l2]3}${.4,${:3,.7a,t,@(y5:xform)[03},.4a,@(y17:extend-xen" "ax-quote-id),l2]3}${.4,${:3,.7a,t,@(y5:xpand)[03},.4a,@(y17:extend-xen"
"v-local)[03},.2d,.2d,:2^[33}.!0.0^_1[23}.0,'(s33:invalid syntax-lambda" "v-local)[03},.2d,.2d,:2^[33}.!0.0^_1[23}.0,'(s33:invalid syntax-lambda"
" application),@(y7:x-error)[22}]6}.0,'(y13:syntax-lambda)c,'(s27:impro" " application),@(y7:x-error)[22}]6}.0,'(y13:syntax-lambda)c,'(s27:impro"
"per syntax-lambda body),@(y7:x-error)[32", "per syntax-lambda body),@(y7:x-error)[32",
"P", "xform-syntax-rules", "P", "xpand-syntax-rules",
"%2${.2,@(y7:list2+?)[01}?{${.2a,@(y3:id?)[01}?{${.2da,@(y3:id?),@(y6:a" "%2${.2,@(y7:list2+?)[01}?{${.2a,@(y3:id?)[01}?{${.2da,@(y3:id?),@(y6:a"
"ndmap)[02}}{f}}{f}?{.0dd,.1da,.2a,.4,@(y13:syntax-rules*)[24}${.2,@(y7" "ndmap)[02}}{f}}{f}?{.0dd,.1da,.2a,.4,@(y13:syntax-rules*)[24}${.2,@(y7"
":list1+?)[01}?{${.2a,@(y3:id?),@(y6:andmap)[02}}{f}?{.0d,.1a,f,.4,@(y1" ":list1+?)[01}?{${.2a,@(y3:id?),@(y6:andmap)[02}}{f}?{.0d,.1a,f,.4,@(y1"
"3:syntax-rules*)[24}.0,'(y12:syntax-rules)c,'(s26:improper syntax-rule" "3:syntax-rules*)[24}.0,'(y12:syntax-rules)c,'(s26:improper syntax-rule"
"s form),@(y7:x-error)[22", "s form),@(y7:x-error)[22",
"P", "xform-syntax-length", "P", "xpand-syntax-length",
"%2${.2,@(y6:list1?)[01}?{.0aL0}{f}?{.0ag,'(y5:quote),l2]2}.0,'(y13:syn" "%2${.2,@(y6:list1?)[01}?{.0aL0}{f}?{.0ag,'(y5:quote),l2]2}.0,'(y13:syn"
"tax-length)c,'(s27:improper syntax-length form),@(y7:x-error)[22", "tax-length)c,'(s27:improper syntax-length form),@(y7:x-error)[22",
"P", "xform-syntax-error", "P", "xpand-syntax-error",
"%2${.2,@(y17:xform-sexp->datum),@(y5:%25map1)[02},${.2,@(y7:list1+?)[0" "%2${.2,@(y17:xpand-sexp->datum),@(y5:%25map1)[02},${.2,@(y7:list1+?)[0"
"1}?{.0aS0}{f}?{.0,@(y7:x-error),@(y13:apply-to-list)[32}.1,'(y12:synta" "1}?{.0aS0}{f}?{.0,@(y7:x-error),@(y13:apply-to-list)[32}.1,'(y12:synta"
"x-error)c,'(s26:improper syntax-error form),@(y7:x-error)[32", "x-error)c,'(s26:improper syntax-error form),@(y7:x-error)[32",
@ -556,7 +556,7 @@ char *t_code[] = {
"%3,#0.0,.2,.5,&3{%3${'(y4:else),.3,:1[02}?{.1[30}${.2,@(y3:id?)[01}?{$" "%3,#0.0,.2,.5,&3{%3${'(y4:else),.3,:1[02}?{.1[30}${.2,@(y3:id?)[01}?{$"
"{${.4,@(y7:id->sym)[01},@(y18:feature-available?)[01}?{.1[30}.2[30}${." "{${.4,@(y7:id->sym)[01},@(y18:feature-available?)[01}?{.1[30}.2[30}${."
"2,@(y6:list2?)[01}?{${'(y7:library),.3a,:1[02}}{f}?{${:0,${.5da,@(y17:" "2,@(y6:list2?)[01}?{${'(y7:library),.3a,:1[02}}{f}?{${:0,${.5da,@(y17:"
"xform-sexp->datum)[01},@(y18:library-available?)[02}?{.1[30}.2[30}${.2" "xpand-sexp->datum)[01},@(y18:library-available?)[02}?{.1[30}.2[30}${.2"
",@(y7:list1+?)[01}?{${'(y3:and),.3a,:1[02}}{f}?{.0du?{.1[30}.0ddu?{.2," ",@(y7:list1+?)[01}?{${'(y3:and),.3a,:1[02}}{f}?{.0du?{.1[30}.0ddu?{.2,"
".2,.2da,:2^[33}.2,.3,.3,.3,:2,&4{%0:3,:2,:1dd,:1ac,:0^[03},.2da,:2^[33" ".2,.2da,:2^[33}.2,.3,.3,.3,:2,&4{%0:3,:2,:1dd,:1ac,:0^[03},.2da,:2^[33"
"}${.2,@(y7:list1+?)[01}?{${'(y2:or),.3a,:1[02}}{f}?{.0du?{.2[30}.0ddu?" "}${.2,@(y7:list1+?)[01}?{${'(y2:or),.3a,:1[02}}{f}?{.0du?{.2[30}.0ddu?"
@ -610,12 +610,12 @@ char *t_code[] = {
"d->sym)[01},.4,,#0.0,&1{%2.0u?{.0]2}${.2aa,.4,@(y13:symbol-append)[02}" "d->sym)[01},.4,,#0.0,&1{%2.0u?{.0]2}${.2aa,.4,@(y13:symbol-append)[02}"
",${.4,.4d,:0^[02},.2ad,.2cc]3}.!0.0^_1[02},.1,:0[22},.2da,:5^[32}.0^?{" ",${.4,.4d,:0^[02},.2ad,.2cc]3}.!0.0^_1[02},.1,:0[22},.2da,:5^[32}.0^?{"
":3,.2aq?{${.3dd,:4^,@(y6:andmap)[02}}{f}}{f}?{.1,.3,&2{%2${${:1dd,@(y1" ":3,.2aq?{${.3dd,:4^,@(y6:andmap)[02}}{f}}{f}?{.1,.3,&2{%2${${:1dd,@(y1"
"7:xform-sexp->datum)[01},.4,,#0.0,&1{%2.0u?{.0]2}.1,.1aaA3,.0?{.0,${.5" "7:xpand-sexp->datum)[01},.4,,#0.0,&1{%2.0u?{.0]2}.1,.1aaA3,.0?{.0,${.5"
",.5d,:0^[02},.3ad,.2dacc]4}${.4,.4d,:0^[02},.2ac]3}.!0.0^_1[02},.1,:0[" ",.5d,:0^[02},.3ad,.2dacc]4}${.4,.4d,:0^[02},.2ac]3}.!0.0^_1[02},.1,:0["
"22},.2da,:5^[32}${.3,@(y7:list2+?)[01}?{:6,.2aq}{f}?{${:8,.4,@(y18:pre" "22},.2da,:5^[32}${.3,@(y7:list2+?)[01}?{:6,.2aq}{f}?{${:8,.4,@(y18:pre"
"process-library)[02},.0d,.1a,.5[42}${.3,@(y7:list1+?)[01}?{${.3,:7^,@(" "process-library)[02},.0d,.1a,.5[42}${.3,@(y7:list1+?)[01}?{${.3,:7^,@("
"y6:andmap)[02}}{f}?{${.3,@(y17:xform-sexp->datum)[01},${:8,.3,@(y9:xfo" "y6:andmap)[02}}{f}?{${.3,@(y17:xpand-sexp->datum)[01},${:8,.3,@(y9:xpa"
"rm-ref)[02},.0V0~?{${.2,.4,'(s15:invalid library),@(y7:x-error)[03}}'1" "nd-ref)[02},.0V0~?{${.2,.4,'(s15:invalid library),@(y7:x-error)[03}}'1"
",.1V4,'0,.2V4,.6[52}.1,'(s28:invalid import set in import),@(y7:x-erro" ",.1V4,'0,.2V4,.6[52}.1,'(s28:invalid import set in import),@(y7:x-erro"
"r)[32}.!0n,'(l1:y5:begin;),.(i11)d,,#0.0,.5,&2{%3.0u?{.2,.2c]3}.2,.2,." "r)[32}.!0n,'(l1:y5:begin;),.(i11)d,,#0.0,.5,&2{%3.0u?{.2,.2c]3}.2,.2,."
"2,:1,&4{%2${:3,.4,@(y11:adjoin-eals)[02},${.3,:2,@(y11:adjoin-code)[02" "2,:1,&4{%2${:3,.4,@(y11:adjoin-eals)[02},${.3,:2,@(y11:adjoin-code)[02"
@ -637,7 +637,7 @@ char *t_code[] = {
"(y3:id?)[01}?{${.2a,@(y7:id->sym)[01},${.4,.3,.4c,l1,@(y11:adjoin-esps" "(y3:id?)[01}?{${.2a,@(y7:id->sym)[01},${.4,.3,.4c,l1,@(y11:adjoin-esps"
")[02},.2d,:1^[32}${.2a,'(l3:y4:<id>;y4:<id>;y4:<id>;),@(y11:sexp-match" ")[02},.2d,:1^[32}${.2a,'(l3:y4:<id>;y4:<id>;y4:<id>;),@(y11:sexp-match"
"?)[02}?{:0,.1aaq}{f}?{${.3,${.5adda,@(y7:id->sym)[01},${.6ada,@(y7:id-" "?)[02}?{:0,.1aaq}{f}?{${.3,${.5adda,@(y7:id->sym)[01},${.6ada,@(y7:id-"
">sym)[01}c,l1,@(y11:adjoin-esps)[02},.1d,:1^[22}${.2a,@(y17:xform-sexp" ">sym)[01}c,l1,@(y11:adjoin-esps)[02},.1d,:1^[22}${.2a,@(y17:xpand-sexp"
"->datum)[01},'(s27:invalid export spec element),@(y7:x-error)[22}.!0n," "->datum)[01},'(s27:invalid export spec element),@(y7:x-error)[22}.!0n,"
"n,n,'(l1:y5:begin;),.(i19)d,,#0.(i19),.7,.(i20),.(i13),.(i17),.(i25),." "n,n,'(l1:y5:begin;),.(i19)d,,#0.(i19),.7,.(i20),.(i13),.(i17),.(i25),."
"(i28),.(i16),.(i29),.(i21),.(i21),.(i28),.(i20),.(i29),.(i21),.(i30),." "(i28),.(i16),.(i29),.(i21),.(i21),.(i28),.(i20),.(i29),.(i21),.(i30),."
@ -665,11 +665,11 @@ char *t_code[] = {
"k-syntax)[03}n,.1d,:4cc,.7L6,.6,.6,.6,.5,:0^[75}:3,.1aq?{${'(s45:inval" "k-syntax)[03}n,.1d,:4cc,.7L6,.6,.6,.6,.5,:0^[75}:3,.1aq?{${'(s45:inval"
"id include-ci library declaration syntax),'(l3:y4:<id>;y8:<string>;y3:" "id include-ci library declaration syntax),'(l3:y4:<id>;y8:<string>;y3:"
"...;),.4,@(y12:check-syntax)[03}n,.1d,:2cc,.7L6,.6,.6,.6,.5,:0^[75}:1," "...;),.4,@(y12:check-syntax)[03}n,.1d,:2cc,.7L6,.6,.6,.6,.5,:0^[75}:1,"
".1aq?{${.2d,@(y17:xform-sexp->datum)[01},.7L6,.6,.6,.6,.5,:0^[75}f]7}." ".1aq?{${.2d,@(y17:xpand-sexp->datum)[01},.7L6,.6,.6,.6,.5,:0^[75}f]7}."
"!0.0^_1[(i17)5", "!0.0^_1[(i17)5",
"P", "preprocess-top-forms-scan", "P", "preprocess-top-forms-scan",
"%3,#0.2,.4,.2,&3{%2.0u?{.1]2}.0d,.1a,.0p?{.0a,.1d,${:2,.4,t,@(y5:xform" "%3,#0.2,.4,.2,&3{%2.0u?{.1]2}.0d,.1a,.0p?{.0a,.1d,${:2,.4,t,@(y5:xpand"
")[03},'(y5:begin),.1q?{.1L0~?{${.5,'(s19:improper begin form),@(y7:x-e" ")[03},'(y5:begin),.1q?{.1L0~?{${.5,'(s19:improper begin form),@(y7:x-e"
"rror)[02}}.6,.5,.3L6,:0^[72}'(y6:define),.1q?{${.3,.5,@(y17:preprocess" "rror)[02}}.6,.5,.3L6,:0^[72}'(y6:define),.1q?{${.3,.5,@(y17:preprocess"
"-define)[02},${.2,@(y6:list1?)[01}?{.7,.6,.2L6,:0^[82}${'(y6:define),." "-define)[02},${.2,@(y6:list1?)[01}?{.7,.6,.2L6,:0^[82}${'(y6:define),."
@ -679,11 +679,11 @@ char *t_code[] = {
")2}'(y13:define-syntax),.1q?{${.3,.5,@(y24:preprocess-define-syntax)[0" ")2}'(y13:define-syntax),.1q?{${.3,.5,@(y24:preprocess-define-syntax)[0"
"2},${'(y13:define-syntax),.3a,:2,@(y21:top-defined-id-lookup)[03},.0Y2" "2},${'(y13:define-syntax),.3a,:2,@(y21:top-defined-id-lookup)[03},.0Y2"
"~?{${.7,.4a,'(s31:unexpected define-syntax for id),@(y7:x-error)[03}}$" "~?{${.7,.4a,'(s31:unexpected define-syntax for id),@(y7:x-error)[03}}$"
"{:2,.4da,t,@(y5:xform)[03},.1sz.8,.7,:0^[92}'(y14:define-library),.1q?" "{:2,.4da,t,@(y5:xpand)[03},.1sz.8,.7,:0^[92}'(y14:define-library),.1q?"
"{${f,:1,.5,.7,@(y20:xform-define-library)[04},${'(y13:define-syntax),." "{${f,:1,.5,.7,@(y20:xpand-define-library)[04},${'(y13:define-syntax),."
"3da,:1,@(y11:xenv-lookup)[03},.0Y2~?{${.7,.4da,'(s32:unexpected define" "3da,:1,@(y11:xenv-lookup)[03},.0Y2~?{${.7,.4da,'(s32:unexpected define"
"-library for id),@(y7:x-error)[03}}.1dda,.1sz.8,.7,:0^[92}'(y6:import)" "-library for id),@(y7:x-error)[03}}.1dda,.1sz.8,.7,:0^[92}'(y6:import)"
",.1q?{${f,:2,.5,.7,@(y12:xform-import)[04},.0da,'0,.1V4,'1,.2V4,${'(y6" ",.1q?{${f,:2,.5,.7,@(y12:xpand-import)[04},.0da,'0,.1V4,'1,.2V4,${'(y6"
":import),.3,:2[02}~?{${.9,'(s33:broken import inside library code),@(y" ":import),.3,:2[02}~?{${.9,'(s33:broken import inside library code),@(y"
"7:x-error)[02}}.(i10),.2c,.9,:0^[(i11)2}.0K0?{.6,.5,${:2,.8,.6[02}c,:0" "7:x-error)[02}}.(i10),.2c,.9,:0^[(i11)2}.0K0?{.6,.5,${:2,.8,.6[02}c,:0"
"^[72}.6,.4,n,'(y6:define),l3c,.5,:0^[72}.3,.1,n,'(y6:define),l3c,.2,:0" "^[72}.6,.4,n,'(y6:define),l3c,.5,:0^[72}.3,.1,n,'(y6:define),l3c,.2,:0"
@ -691,7 +691,7 @@ char *t_code[] = {
"P", "preprocess-top-form-fix!", "P", "preprocess-top-form-fix!",
"%2.0p?{'(y6:define),.1aq?{${.2,@(y6:list3?)[01}}{f}}{f}?{.0da,.1dda,${" "%2.0p?{'(y6:define),.1aq?{${.2,@(y6:list3?)[01}}{f}}{f}?{.0da,.1dda,${"
".5,.3,f,@(y5:xform)[03},.2u?{.0]5}.0,.3,'(y4:set!),l3]5}.0]2", ".5,.3,f,@(y5:xpand)[03},.2u?{.0]5}.0,.3,'(y4:set!),l3]5}.0]2",
"P", "preprocess-library", "P", "preprocess-library",
"%2,#0.1,&1{%1${:0,@(y7:list2+?)[01}?{${:0da,@(y3:id?)[01}}{f}?{${.2,@(" "%2,#0.1,&1{%1${:0,@(y7:list2+?)[01}?{${:0da,@(y3:id?)[01}}{f}?{${.2,@("
@ -710,14 +710,14 @@ char *t_code[] = {
"0p~,.0?{.0}{'(l2:y3:ref;y5:const;),.2aA0}_1?{.5,.2,.4cc,.5d,:1^[62}.0," "0p~,.0?{.0}{'(l2:y3:ref;y5:const;),.2aA0}_1?{.5,.2,.4cc,.5d,:1^[62}.0,"
".4,'(s27:cannot export code alias id),@(y7:x-error)[63}.!0.0^_1[(i16)2", ".4,'(s27:cannot export code alias id),@(y7:x-error)[63}.!0.0^_1[(i16)2",
"P", "xform-define-library", "P", "xpand-define-library",
"%4${.3,@(y7:list2+?)[01}?{${.3a,@(y9:listname?)[01}}{f}?{${.3a,@(y17:x" "%4${.3,@(y7:list2+?)[01}?{${.3a,@(y9:listname?)[01}}{f}?{${.3a,@(y17:x"
"form-sexp->datum)[01},.4?{${.2,@(y16:listname->symbol)[01}}{f},.0?{.3d" "pand-sexp->datum)[01},.4?{${.2,@(y16:listname->symbol)[01}}{f},.0?{.3d"
",.1c}{.3d},.3c,${.7,.3,@(y18:preprocess-library)[02},.0d,.1a,V12,.4,'(" ",.1c}{.3d},.3c,${.7,.3,@(y18:preprocess-library)[02},.0d,.1a,V12,.4,'("
"y14:define-library),l3]8}.1,.1c,'(s28:improper define-library form),@(" "y14:define-library),l3]8}.1,.1c,'(s28:improper define-library form),@("
"y7:x-error)[42", "y7:x-error)[42",
"P", "xform-import", "P", "xpand-import",
"%4.1L0?{${.4,.4,.4c,@(y22:preprocess-import-sets)[02},.0d,.1a,V12,'(y6" "%4.1L0?{${.4,.4,.4c,@(y22:preprocess-import-sets)[02},.0d,.1a,V12,'(y6"
":import),l2]5}.1,.1c,'(s20:improper import form),@(y7:x-error)[42", ":import),l2]5}.1,.1c,'(s20:improper import form),@(y7:x-error)[42",
@ -1094,7 +1094,7 @@ char *t_code[] = {
"%2,,#0#1.3,.3,&2{%1@(y7:*quiet*)~?{Pe,.0,'(s11:; fetching )W4.0,:0W5.0" "%2,,#0#1.3,.3,&2{%1@(y7:*quiet*)~?{Pe,.0,'(s11:; fetching )W4.0,:0W5.0"
",'(s14: library from )W4.0,.2W4.0W6_1}.0,:1,:0,&3{%0${f,:2,@(y15:read-" ",'(s14: library from )W4.0,.2W4.0W6_1}.0,:1,:0,&3{%0${f,:2,@(y15:read-"
"file-sexps)[02},${.2,'(l1:l4:y14:define-library;y1:*;y1:*;y3:...;;),@(" "file-sexps)[02},${.2,'(l1:l4:y14:define-library;y1:*;y1:*;y3:...;;),@("
"y11:sexp-match?)[02}?{${t,:1,.4ad,.5aa,@(y20:xform-define-library)[04}" "y11:sexp-match?)[02}?{${t,:1,.4ad,.5aa,@(y20:xpand-define-library)[04}"
",${.2,'(l3:y14:define-library;y1:*;y1:*;),@(y11:sexp-match?)[02}?{:0,." ",${.2,'(l3:y14:define-library;y1:*;y1:*;),@(y11:sexp-match?)[02}?{:0,."
"1dae?{.0ddaV0}{f}}{f}?{.0dda]2}.0,.2,:2,:0,'(s46:library autoloader: i" "1dae?{.0ddaV0}{f}}{f}?{.0dda]2}.0,.2,:2,:0,'(s46:library autoloader: i"
"nternal transformer error),@(y7:x-error)[25}.0,:2,:0,'(s49:library aut" "nternal transformer error),@(y7:x-error)[25}.0,:2,:0,'(s49:library aut"
@ -1178,7 +1178,7 @@ char *t_code[] = {
"0:*root-name-registry*),@(y11:name-lookup)[03}", "0:*root-name-registry*),@(y11:name-lookup)[03}",
"C", 0, "C", 0,
"${'(l507:l3:y1:*;y1:v;y1:b;;l3:y1:+;y1:v;y1:b;;l3:y1:-;y1:v;y1:b;;l4:y" "${'(l508:l3:y1:*;y1:v;y1:b;;l3:y1:+;y1:v;y1:b;;l3:y1:-;y1:v;y1:b;;l4:y"
"3:...;y1:v;y1:u;y1:b;;l3:y1:/;y1:v;y1:b;;l3:y1:<;y1:v;y1:b;;l3:y2:<=;y" "3:...;y1:v;y1:u;y1:b;;l3:y1:/;y1:v;y1:b;;l3:y1:<;y1:v;y1:b;;l3:y2:<=;y"
"1:v;y1:b;;l3:y1:=;y1:v;y1:b;;l4:y2:=>;y1:v;y1:u;y1:b;;l3:y1:>;y1:v;y1:" "1:v;y1:b;;l3:y1:=;y1:v;y1:b;;l4:y2:=>;y1:v;y1:u;y1:b;;l3:y1:>;y1:v;y1:"
"b;;l3:y2:>=;y1:v;y1:b;;l2:y1:_;y1:b;;l3:y3:abs;y1:v;y1:b;;l4:y3:and;y1" "b;;l3:y2:>=;y1:v;y1:b;;l2:y1:_;y1:b;;l3:y3:abs;y1:v;y1:b;;l4:y3:and;y1"
@ -1308,71 +1308,71 @@ char *t_code[] = {
"vironment;y1:v;;l3:y5:write;y1:w;y1:v;;l2:y13:current-jiffy;y1:t;;l2:y" "vironment;y1:v;;l3:y5:write;y1:w;y1:v;;l2:y13:current-jiffy;y1:t;;l2:y"
"14:current-second;y1:t;;l2:y18:jiffies-per-second;y1:t;;l2:y12:write-s" "14:current-second;y1:t;;l2:y18:jiffies-per-second;y1:t;;l2:y12:write-s"
"hared;y1:w;;l2:y12:write-simple;y1:w;;l1:y14:define-library;;l1:y6:imp" "hared;y1:w;;l2:y12:write-simple;y1:w;;l1:y14:define-library;;l1:y6:imp"
"ort;;l1:y6:export;;l1:y7:program;;l3:y4:box?;y1:x;i111;;l3:y3:box;y1:x" "ort;;l3:y4:box?;y1:x;i111;;l3:y3:box;y1:x;i111;;l3:y5:unbox;y1:x;i111;"
";i111;;l3:y5:unbox;y1:x;i111;;l3:y8:set-box!;y1:x;i111;;l3:y6:format;i" ";l3:y8:set-box!;y1:x;i111;;l3:y6:format;i28;i48;;l1:y7:fprintf;;l1:y19"
"28;i48;;l1:y7:fprintf;;l1:y19:format-pretty-print;;l1:y18:format-fixed" ":format-pretty-print;;l1:y18:format-fixed-print;;l1:y17:format-fresh-l"
"-print;;l1:y17:format-fresh-line;;l1:y18:format-help-string;;l1:y4:set" "ine;;l1:y18:format-help-string;;l1:y4:set&;;l1:y7:lambda*;;l1:y4:body;"
"&;;l1:y7:lambda*;;l1:y4:body;;l1:y5:letcc;;l1:y6:withcc;;l1:y13:syntax" ";l1:y5:letcc;;l1:y6:withcc;;l1:y13:syntax-lambda;;l1:y13:syntax-length"
"-lambda;;l1:y13:syntax-length;;l1:y7:record?;;l1:y11:make-record;;l1:y" ";;l1:y7:record?;;l1:y11:make-record;;l1:y13:record-length;;l1:y10:reco"
"13:record-length;;l1:y10:record-ref;;l1:y11:record-set!;;l1:y7:fixnum?" "rd-ref;;l1:y11:record-set!;;l1:y6:expand;;l1:y7:fixnum?;;l1:y11:fxposi"
";;l1:y11:fxpositive?;;l1:y11:fxnegative?;;l1:y7:fxeven?;;l1:y6:fxodd?;" "tive?;;l1:y11:fxnegative?;;l1:y7:fxeven?;;l1:y6:fxodd?;;l1:y7:fxzero?;"
";l1:y7:fxzero?;;l1:y3:fx+;;l1:y3:fx*;;l1:y3:fx-;;l1:y3:fx/;;l1:y10:fxq" ";l1:y3:fx+;;l1:y3:fx*;;l1:y3:fx-;;l1:y3:fx/;;l1:y10:fxquotient;;l1:y11"
"uotient;;l1:y11:fxremainder;;l1:y8:fxmodquo;;l1:y8:fxmodulo;;l1:y8:fxe" ":fxremainder;;l1:y8:fxmodquo;;l1:y8:fxmodulo;;l1:y8:fxeucquo;;l1:y8:fx"
"ucquo;;l1:y8:fxeucrem;;l1:y5:fxneg;;l1:y5:fxabs;;l1:y4:fx<?;;l1:y5:fx<" "eucrem;;l1:y5:fxneg;;l1:y5:fxabs;;l1:y4:fx<?;;l1:y5:fx<=?;;l1:y4:fx>?;"
"=?;;l1:y4:fx>?;;l1:y5:fx>=?;;l1:y4:fx=?;;l1:y5:fx!=?;;l1:y5:fxmin;;l1:" ";l1:y5:fx>=?;;l1:y4:fx=?;;l1:y5:fx!=?;;l1:y5:fxmin;;l1:y5:fxmax;;l1:y5"
"y5:fxmax;;l1:y5:fxneg;;l1:y5:fxabs;;l1:y5:fxgcd;;l1:y6:fxexpt;;l1:y6:f" ":fxneg;;l1:y5:fxabs;;l1:y5:fxgcd;;l1:y6:fxexpt;;l1:y6:fxsqrt;;l1:y5:fx"
"xsqrt;;l1:y5:fxnot;;l1:y5:fxand;;l1:y5:fxior;;l1:y5:fxxor;;l1:y5:fxsll" "not;;l1:y5:fxand;;l1:y5:fxior;;l1:y5:fxxor;;l1:y5:fxsll;;l1:y5:fxsrl;;"
";;l1:y5:fxsrl;;l1:y14:fixnum->flonum;;l1:y14:fixnum->string;;l1:y14:st" "l1:y14:fixnum->flonum;;l1:y14:fixnum->string;;l1:y14:string->fixnum;;l"
"ring->fixnum;;l1:y7:flonum?;;l1:y7:flzero?;;l1:y11:flpositive?;;l1:y11" "1:y7:flonum?;;l1:y7:flzero?;;l1:y11:flpositive?;;l1:y11:flnegative?;;l"
":flnegative?;;l1:y10:flinteger?;;l1:y6:flnan?;;l1:y11:flinfinite?;;l1:" "1:y10:flinteger?;;l1:y6:flnan?;;l1:y11:flinfinite?;;l1:y9:flfinite?;;l"
"y9:flfinite?;;l1:y7:fleven?;;l1:y6:flodd?;;l1:y3:fl+;;l1:y3:fl*;;l1:y3" "1:y7:fleven?;;l1:y6:flodd?;;l1:y3:fl+;;l1:y3:fl*;;l1:y3:fl-;;l1:y3:fl/"
":fl-;;l1:y3:fl/;;l1:y5:flneg;;l1:y5:flabs;;l1:y5:flgcd;;l1:y6:flexpt;;" ";;l1:y5:flneg;;l1:y5:flabs;;l1:y5:flgcd;;l1:y6:flexpt;;l1:y6:flsqrt;;l"
"l1:y6:flsqrt;;l1:y7:flfloor;;l1:y9:flceiling;;l1:y10:fltruncate;;l1:y7" "1:y7:flfloor;;l1:y9:flceiling;;l1:y10:fltruncate;;l1:y7:flround;;l1:y5"
":flround;;l1:y5:flexp;;l1:y5:fllog;;l1:y5:flsin;;l1:y5:flcos;;l1:y5:fl" ":flexp;;l1:y5:fllog;;l1:y5:flsin;;l1:y5:flcos;;l1:y5:fltan;;l1:y6:flas"
"tan;;l1:y6:flasin;;l1:y6:flacos;;l1:y6:flatan;;l1:y4:fl<?;;l1:y5:fl<=?" "in;;l1:y6:flacos;;l1:y6:flatan;;l1:y4:fl<?;;l1:y5:fl<=?;;l1:y4:fl>?;;l"
";;l1:y4:fl>?;;l1:y5:fl>=?;;l1:y4:fl=?;;l1:y5:fl!=?;;l1:y5:flmin;;l1:y5" "1:y5:fl>=?;;l1:y4:fl=?;;l1:y5:fl!=?;;l1:y5:flmin;;l1:y5:flmax;;l1:y11:"
":flmax;;l1:y11:flremainder;;l1:y8:flmodulo;;l1:y10:flquotient;;l1:y8:f" "flremainder;;l1:y8:flmodulo;;l1:y10:flquotient;;l1:y8:flmodquo;;l1:y14"
"lmodquo;;l1:y14:flonum->fixnum;;l1:y14:flonum->string;;l1:y14:string->" ":flonum->fixnum;;l1:y14:flonum->string;;l1:y14:string->flonum;;l1:y8:l"
"flonum;;l1:y8:list-cat;;l1:y9:last-pair;;l1:y9:list-head;;l1:y4:meme;;" "ist-cat;;l1:y9:last-pair;;l1:y9:list-head;;l1:y4:meme;;l1:y4:asse;;l1:"
"l1:y4:asse;;l1:y8:reverse!;;l1:y9:circular?;;l1:y5:cons*;;l1:y5:list*;" "y4:memp;;l1:y4:assp;;l1:y8:reverse!;;l1:y9:circular?;;l1:y5:cons*;;l1:"
";l1:y8:char-cmp;;l1:y11:char-ci-cmp;;l1:y10:string-cat;;l1:y15:string-" "y5:list*;;l1:y8:char-cmp;;l1:y11:char-ci-cmp;;l1:y10:string-cat;;l1:y1"
"position;;l1:y10:string-cmp;;l1:y13:string-ci-cmp;;l1:y10:vector-cat;;" "5:string-position;;l1:y10:string-cmp;;l1:y13:string-ci-cmp;;l1:y10:vec"
"l1:y12:bytevector=?;;l1:y16:bytevector->list;;l1:y16:list->bytevector;" "tor-cat;;l1:y12:bytevector=?;;l1:y16:bytevector->list;;l1:y16:list->by"
";l1:y13:subbytevector;;l1:y19:standard-input-port;;l1:y20:standard-out" "tevector;;l1:y13:subbytevector;;l1:y19:standard-input-port;;l1:y20:sta"
"put-port;;l1:y19:standard-error-port;;l1:y9:tty-port?;;l1:y15:port-fol" "ndard-output-port;;l1:y19:standard-error-port;;l1:y9:tty-port?;;l1:y15"
"d-case?;;l1:y19:set-port-fold-case!;;l1:y11:rename-file;;l1:y17:curren" ":port-fold-case?;;l1:y19:set-port-fold-case!;;l1:y11:rename-file;;l1:y"
"t-directory;;l1:y19:directory-separator;;l1:y4:void;;l1:y5:void?;;py20" "17:current-directory;;l1:y19:directory-separator;;l1:y4:void;;l1:y5:vo"
":*user-name-registry*;y6:hidden;;py25:make-readonly-environment;y6:hid" "id?;;py20:*user-name-registry*;y6:hidden;;py25:make-readonly-environme"
"den;;py27:make-controlled-environment;y6:hidden;;py20:make-sld-environ" "nt;y6:hidden;;py27:make-controlled-environment;y6:hidden;;py20:make-sl"
"ment;y6:hidden;;py21:make-repl-environment;y6:hidden;;py19:find-librar" "d-environment;y6:hidden;;py21:make-repl-environment;y6:hidden;;py19:fi"
"y-in-env;y6:hidden;;py16:root-environment;y6:hidden;;py16:repl-environ" "nd-library-in-env;y6:hidden;;py16:root-environment;y6:hidden;;py16:rep"
"ment;y6:hidden;;py17:empty-environment;y6:hidden;;py32:make-historic-r" "l-environment;y6:hidden;;py17:empty-environment;y6:hidden;;py32:make-h"
"eport-environment;y6:hidden;;py16:r5rs-environment;y6:hidden;;py21:r5r" "istoric-report-environment;y6:hidden;;py16:r5rs-environment;y6:hidden;"
"s-null-environment;y6:hidden;;py9:*verbose*;y6:hidden;;py7:*quiet*;y6:" ";py21:r5rs-null-environment;y6:hidden;;py9:*verbose*;y6:hidden;;py7:*q"
"hidden;;py25:compile-and-run-core-expr;y6:hidden;;py17:evaluate-top-fo" "uiet*;y6:hidden;;py25:compile-and-run-core-expr;y6:hidden;;py17:evalua"
"rm;y6:hidden;;py10:run-script;y6:hidden;;py11:run-program;y6:hidden;;p" "te-top-form;y6:hidden;;py10:run-script;y6:hidden;;py11:run-program;y6:"
"y22:repl-evaluate-top-form;y6:hidden;;py9:repl-read;y6:hidden;;py17:re" "hidden;;py22:repl-evaluate-top-form;y6:hidden;;py9:repl-read;y6:hidden"
"pl-exec-command;y6:hidden;;py14:repl-from-port;y6:hidden;;py13:run-ben" ";;py17:repl-exec-command;y6:hidden;;py14:repl-from-port;y6:hidden;;py1"
"chmark;y6:hidden;;py4:repl;y6:hidden;;),&0{%1,,,,#0#1#2#3&0{%1.0,'(y1:" "3:run-benchmark;y6:hidden;;py4:repl;y6:hidden;;),&0{%1,,,,#0#1#2#3&0{%"
"w),.1v?{'(l2:y6:scheme;y5:write;)]2}'(y1:t),.1v?{'(l2:y6:scheme;y4:tim" "1.0,'(y1:w),.1v?{'(l2:y6:scheme;y5:write;)]2}'(y1:t),.1v?{'(l2:y6:sche"
"e;)]2}'(y1:p),.1v?{'(l2:y6:scheme;y4:repl;)]2}'(y1:r),.1v?{'(l2:y6:sch" "me;y4:time;)]2}'(y1:p),.1v?{'(l2:y6:scheme;y4:repl;)]2}'(y1:r),.1v?{'("
"eme;y4:read;)]2}'(y1:v),.1v?{'(l2:y6:scheme;y4:r5rs;)]2}'(y1:u),.1v?{'" "l2:y6:scheme;y4:read;)]2}'(y1:v),.1v?{'(l2:y6:scheme;y4:r5rs;)]2}'(y1:"
"(l2:y6:scheme;y9:r5rs-null;)]2}'(y1:d),.1v?{'(l2:y6:scheme;y4:load;)]2" "u),.1v?{'(l2:y6:scheme;y9:r5rs-null;)]2}'(y1:d),.1v?{'(l2:y6:scheme;y4"
"}'(y1:z),.1v?{'(l2:y6:scheme;y4:lazy;)]2}'(y1:s),.1v?{'(l2:y6:scheme;y" ":load;)]2}'(y1:z),.1v?{'(l2:y6:scheme;y4:lazy;)]2}'(y1:s),.1v?{'(l2:y6"
"15:process-context;)]2}'(y1:i),.1v?{'(l2:y6:scheme;y7:inexact;)]2}'(y1" ":scheme;y15:process-context;)]2}'(y1:i),.1v?{'(l2:y6:scheme;y7:inexact"
":f),.1v?{'(l2:y6:scheme;y4:file;)]2}'(y1:e),.1v?{'(l2:y6:scheme;y4:eva" ";)]2}'(y1:f),.1v?{'(l2:y6:scheme;y4:file;)]2}'(y1:e),.1v?{'(l2:y6:sche"
"l;)]2}'(y1:o),.1v?{'(l2:y6:scheme;y7:complex;)]2}'(y1:h),.1v?{'(l2:y6:" "me;y4:eval;)]2}'(y1:o),.1v?{'(l2:y6:scheme;y7:complex;)]2}'(y1:h),.1v?"
"scheme;y4:char;)]2}'(y1:l),.1v?{'(l2:y6:scheme;y11:case-lambda;)]2}'(y" "{'(l2:y6:scheme;y4:char;)]2}'(y1:l),.1v?{'(l2:y6:scheme;y11:case-lambd"
"1:a),.1v?{'(l2:y6:scheme;y3:cxr;)]2}'(y1:b),.1v?{'(l2:y6:scheme;y4:bas" "a;)]2}'(y1:a),.1v?{'(l2:y6:scheme;y3:cxr;)]2}'(y1:b),.1v?{'(l2:y6:sche"
"e;)]2}'(y1:x),.1v?{'(l2:y6:scheme;y3:box;)]2}.1I0?{.1,'(y4:srfi),l2]2}" "me;y4:base;)]2}'(y1:x),.1v?{'(l2:y6:scheme;y3:box;)]2}.1I0?{.1,'(y4:sr"
".1,l1]2}.!0&0{%1${&0{%1n,'(l1:y5:begin;),V12]1},.3,@(y20:*root-name-re" "fi),l2]2}.1,l1]2}.!0&0{%1${&0{%1n,'(l1:y5:begin;),V12]1},.3,@(y20:*roo"
"gistry*),@(y11:name-lookup)[03}z]1}.!1&0{%3'1,.1V4,.0,.3A3,.0?{.4,.1sd" "t-name-registry*),@(y11:name-lookup)[03}z]1}.!1&0{%3'1,.1V4,.0,.3A3,.0"
"]5}.1,.5,.5cc,'1,.4V5]5}.!2&0{%1&0{%1.0,'(y5:const),l2]1},.1,@(y20:*ro" "?{.4,.1sd]5}.1,.5,.5cc,'1,.4V5]5}.!2&0{%1&0{%1.0,'(y5:const),l2]1},.1,"
"ot-name-registry*),@(y11:name-lookup)[13}.!3.4d,.5a,,#0.0,.6,.5,.7,.(i" "@(y20:*root-name-registry*),@(y11:name-lookup)[13}.!3.4d,.5a,,#0.0,.6,"
"10),&5{%2.1u?{${.2,:0^[01},.1,${'(l1:y5:skint;),:1^[01},:3^[23}.1p~?{$" ".5,.7,.(i10),&5{%2.1u?{${.2,:0^[01},.1,${'(l1:y5:skint;),:1^[01},:3^[2"
"{.2,:0^[01},.1,${n,.6c,'(y5:skint)c,:1^[01},:3^[23}${${.4,:0^[01},.3,$" "3}.1p~?{${.2,:0^[01},.1,${n,.6c,'(y5:skint)c,:1^[01},:3^[23}${${.4,:0^"
"{${.9a,:2^[01},:1^[01},:3^[03}.1d,.1,:4^[22}.!0.0^_1[52},@(y10:%25for-" "[01},.3,${${.9a,:2^[01},:1^[01},:3^[03}.1d,.1,:4^[22}.!0.0^_1[52},@(y1"
"each1)[02}", "0:%25for-each1)[02}",
"C", 0, "C", 0,
"@(y20:*root-name-registry*),${f,'(l1:y5:skint;),.4,@(y11:name-lookup)[" "@(y20:*root-name-registry*),${f,'(l1:y5:skint;),.4,@(y11:name-lookup)["
@ -1515,7 +1515,7 @@ char *t_code[] = {
".1u?{.0,:1^[31}${.2,:1^[01}.1,:0^[31}.!0.0^_1[21", ".1u?{.0,:1^[31}${.2,:1^[01}.1,:0^[31}.!0.0^_1[21",
"P", "evaluate-top-form", "P", "evaluate-top-form",
"%2.0p?{${.3,.3a,t,@(y5:xform)[03},'(y5:begin),.1q?{.1d,,#0.0,.5,.5,&3{" "%2.0p?{${.3,.3a,t,@(y5:xpand)[03},'(y5:begin),.1q?{.1d,,#0.0,.5,.5,&3{"
"%1.0u?{Y9]1}.0p~?{:0,'(s19:invalid begin form:),@(y7:x-error)[12}.0du?" "%1.0u?{Y9]1}.0p~?{:0,'(s19:invalid begin form:),@(y7:x-error)[12}.0du?"
"{:1,.1a,@(y17:evaluate-top-form)[12}${:1,.3a,@(y17:evaluate-top-form)[" "{:1,.1a,@(y17:evaluate-top-form)[12}${:1,.3a,@(y17:evaluate-top-form)["
"02}.0d,:2^[11}.!0.0^_1[31}'(y6:define),.1q?{${.3d,.4a,@(y17:preprocess" "02}.0d,:2^[11}.!0.0^_1[31}'(y6:define),.1q?{${.3d,.4a,@(y17:preprocess"
@ -1523,32 +1523,32 @@ char *t_code[] = {
"02}Y9]4}${'(y6:define),.3a,.7,@(y21:top-defined-id-lookup)[03},.0Y2?{$" "02}Y9]4}${'(y6:define),.3a,.7,@(y21:top-defined-id-lookup)[03},.0Y2?{$"
"{.2z,'(l2:y3:ref;y1:*;),@(y11:sexp-match?)[02}}{f}~?{${.5,.4a,'(s44:id" "{.2z,'(l2:y3:ref;y1:*;),@(y11:sexp-match?)[02}}{f}~?{${.5,.4a,'(s44:id"
"entifier cannot be (re)defined as variable),@(y7:x-error)[03}}${.6,.4d" "entifier cannot be (re)defined as variable),@(y7:x-error)[03}}${.6,.4d"
"a,f,@(y5:xform)[03},.1zda,${.3,.3,'(y4:set!),l3,@(y25:compile-and-run-" "a,f,@(y5:xpand)[03},.1zda,${.3,.3,'(y4:set!),l3,@(y25:compile-and-run-"
"core-expr)[01}Y9]7}'(y13:define-syntax),.1q?{${.3d,.4a,@(y24:preproces" "core-expr)[01}Y9]7}'(y13:define-syntax),.1q?{${.3d,.4a,@(y24:preproces"
"s-define-syntax)[02},${'(y13:define-syntax),.3a,.7,@(y21:top-defined-i" "s-define-syntax)[02},${'(y13:define-syntax),.3a,.7,@(y21:top-defined-i"
"d-lookup)[03},.0Y2~?{${.5,.4a,'(s31:unexpected define-syntax for id),@" "d-lookup)[03},.0Y2~?{${.5,.4a,'(s31:unexpected define-syntax for id),@"
"(y7:x-error)[03}}${.6,.4da,t,@(y5:xform)[03},.1sz@(y9:*verbose*)?{Po,'" "(y7:x-error)[03}}${.6,.4da,t,@(y5:xpand)[03},.1sz@(y9:*verbose*)?{Po,'"
"(s18:SYNTAX INSTALLED: )W4Po,.2aW5PoW6}Y9]5}'(y14:define-library),.1q?" "(s18:SYNTAX INSTALLED: )W4Po,.2aW5PoW6}Y9]5}'(y14:define-library),.1q?"
"{${t,.5,.5d,.6a,@(y20:xform-define-library)[04},${'(y13:define-syntax)" "{${t,.5,.5d,.6a,@(y20:xpand-define-library)[04},${'(y13:define-syntax)"
",.3da,.7,@(y11:xenv-lookup)[03},.0Y2~?{${.5,.4da,'(s32:unexpected defi" ",.3da,.7,@(y11:xenv-lookup)[03},.0Y2~?{${.5,.4da,'(s32:unexpected defi"
"ne-library for id),@(y7:x-error)[03}}.1dda,.1sz@(y9:*verbose*)?{Po,'(s" "ne-library for id),@(y7:x-error)[03}}.1dda,.1sz@(y9:*verbose*)?{Po,'(s"
"19:LIBRARY INSTALLED: )W4Po,.2daW5PoW6]5}]5}'(y6:import),.1q?{${t,.5,." "19:LIBRARY INSTALLED: )W4Po,.2daW5PoW6]5}]5}'(y6:import),.1q?{${t,.5,."
"5d,.6a,@(y12:xform-import)[04},.0da,'0,.1V4,'1,.2V4,${'(y6:import),.3," "5d,.6a,@(y12:xpand-import)[04},.0da,'0,.1V4,'1,.2V4,${'(y6:import),.3,"
".(i10)[02},.0~?{${.3,.(i10),'(s49:failed to import to env, import is n" ".(i10)[02},.0~?{${.3,.(i10),'(s49:failed to import to env, import is n"
"ot supported:),@(y7:x-error)[03}}@(y7:*quiet*)~,.0?{.0}{@(y9:*verbose*" "ot supported:),@(y7:x-error)[03}}@(y7:*quiet*)~,.0?{.0}{@(y9:*verbose*"
")}_1?{${.2,'(l3:y8:<number>;y8:<number>;y8:<number>;),@(y11:sexp-match" ")}_1?{${.2,'(l3:y8:<number>;y8:<number>;y8:<number>;),@(y11:sexp-match"
"?)[02}}{f}?{@(y9:*verbose*)?{Po,'(s8:IMPORT: )W4}{Po,'(s10:; import: )" "?)[02}}{f}?{@(y9:*verbose*)?{Po,'(s8:IMPORT: )W4}{Po,'(s10:; import: )"
"W4}Po,.1aW5Po,'(s24: bindings are the same, )W4Po,.1daW5Po,'(s11: modi" "W4}Po,.1aW5Po,'(s24: bindings are the same, )W4Po,.1daW5Po,'(s11: modi"
"fied, )W4Po,.1ddaW5Po,'(s7: added%0a)W4}_1.1,@(y25:compile-and-run-cor" "fied, )W4Po,.1ddaW5Po,'(s7: added%0a)W4}_1.1,@(y25:compile-and-run-cor"
"e-expr)[71}.0K0?{${.4,.4,.4[02},.0p?{${.5,.3a,t,@(y5:xform)[03}}{f},'(" "e-expr)[71}.0K0?{${.4,.4,.4[02},.0p?{${.5,.3a,t,@(y5:xpand)[03}}{f},'("
"y5:begin),.1q?{${.3,@(y7:list2+?)[01}}{f}?{${.6,.7,.5d,@(y25:preproces" "y5:begin),.1q?{${.3,@(y7:list2+?)[01}}{f}?{${.6,.7,.5d,@(y25:preproces"
"s-top-forms-scan)[03},.5,&1{%1:0,.1,@(y24:preprocess-top-form-fix!)[12" "s-top-forms-scan)[03},.5,&1{%1:0,.1,@(y24:preprocess-top-form-fix!)[12"
"},${.3A9,.3,@(y5:%25map1)[02},'(y5:begin)c,.0,@(y25:compile-and-run-co" "},${.3A9,.3,@(y5:%25map1)[02},'(y5:begin)c,.0,@(y25:compile-and-run-co"
"re-expr)[81}.4,.2,@(y17:evaluate-top-form)[52}.0U0?{${.4,.4d,.4,@(y16:" "re-expr)[81}.4,.2,@(y17:evaluate-top-form)[52}.0U0?{${.4,.4d,.4,@(y16:"
"xform-integrable)[03},@(y25:compile-and-run-core-expr)[31}.0Y0?{${.4,." "xpand-integrable)[03},@(y25:compile-and-run-core-expr)[31}.0Y0?{${.4,."
"4,f,@(y5:xform)[03},@(y25:compile-and-run-core-expr)[31}${.4,.4d,.4,@(" "4,f,@(y5:xpand)[03},@(y25:compile-and-run-core-expr)[31}${.4,.4d,.4,@("
"y10:xform-call)[03},@(y25:compile-and-run-core-expr)[31}${.3,.3,f,@(y5" "y10:xpand-call)[03},@(y25:compile-and-run-core-expr)[31}${.3,.3,f,@(y5"
":xform)[03},@(y25:compile-and-run-core-expr)[21", ":xpand)[03},@(y25:compile-and-run-core-expr)[21",
"P", "eval", "P", "eval",
"%!1,#0.1p?{.1a}{${@(y23:interaction-environment)[00}}.!0.0^,.3,@(y17:e" "%!1,#0.1p?{.1a}{${@(y23:interaction-environment)[00}}.!0.0^,.3,@(y17:e"
@ -1560,6 +1560,10 @@ char *t_code[] = {
"8~?{${:2^,.3,@(y4:eval)[02}${:1,@(y14:read-code-sexp)[01},:0^[11}]1}.!" "8~?{${:2^,.3,@(y4:eval)[02}${:1,@(y14:read-code-sexp)[01},:0^[11}]1}.!"
"0.0^_1[11},.6,@(y28:call-with-current-input-file)[02}Y9]4", "0.0^_1[11},.6,@(y28:call-with-current-input-file)[02}Y9]4",
"P", "expand",
"%!1,#0.1p?{.1a}{${@(y23:interaction-environment)[00}}.!0.0^,.3,t,@(y5:"
"xpand)[33",
"P", "run-script", "P", "run-script",
"%2,,,,#0#1#2#3${@(y23:interaction-environment)[00}.!0f.!1f.!2.5,.5c.!3" "%2,,,,#0#1#2#3${@(y23:interaction-environment)[00}.!0f.!1f.!2.5,.5c.!3"
".1,.4,.2,.5,&4{%1${.2,@(y14:read-code-sexp)[01},#0.0^Y5?{.0^Y7X4,.0,'(" ".1,.4,.2,.5,&4{%1${.2,@(y14:read-code-sexp)[01},#0.0^Y5?{.0^Y7X4,.0,'("
@ -1706,7 +1710,7 @@ char *t_code[] = {
"-options*)", "-options*)",
"C", 0, "C", 0,
"'(s5:0.3.9)@!(y15:*skint-version*)", "'(s5:0.4.9)@!(y15:*skint-version*)",
"P", "skint-main", "P", "skint-main",
"%0,,,,,#0#1#2#3#4&0{%2${.2,@(y16:read-from-string)[01},${@(y4:list),.3" "%0,,,,,#0#1#2#3#4&0{%2${.2,@(y16:read-from-string)[01},${@(y4:list),.3"