mirror of
https://github.com/false-schemers/skint.git
synced 2024-12-24 21:58:52 +01:00
xform => xpand; program/export forms dropped
This commit is contained in:
parent
62fed2125b
commit
a5dd8c87c8
6 changed files with 305 additions and 297 deletions
4
i.c
4
i.c
|
@ -4888,7 +4888,7 @@ static obj *init_module(obj *r, obj *sp, obj *hp, const char **mod)
|
|||
/* hand-coded! */
|
||||
char *i_code[] = {
|
||||
|
||||
/* initialize *transformers* with xform builtins */
|
||||
/* initialize *transformers* with xpand builtins */
|
||||
"B", "syntax-quote", 0,
|
||||
"B", "quote", 0,
|
||||
"B", "set!", 0,
|
||||
|
@ -4907,9 +4907,7 @@ char *i_code[] = {
|
|||
"B", "syntax-length", 0,
|
||||
"B", "syntax-error", 0,
|
||||
"B", "define-library", 0,
|
||||
"B", "program", 0,
|
||||
"B", "import", 0,
|
||||
"B", "export", 0,
|
||||
"B", "...", 0,
|
||||
"B", "_", 0,
|
||||
|
||||
|
|
|
@ -2128,8 +2128,8 @@
|
|||
(cond [(or (eq? arg #f) (string? arg))
|
||||
(let ([args (if arg (cons arg args) args)] [p (open-output-string)])
|
||||
(apply fprintf p args) (get-output-string p))]
|
||||
[(eq? arg #t) (apply fprintf (current-output-port) args)]
|
||||
[else (apply fprintf arg args)]))
|
||||
[(eq? arg #t) (apply fprintf (current-output-port) args) (void)]
|
||||
[else (apply fprintf arg args) (void)]))
|
||||
|
||||
(define (write-to-string obj)
|
||||
(let ([p (open-output-string)])
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
(import (only (skint hidden)
|
||||
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
|
||||
lookup-integrable write-serialized-sexp compile-to-string
|
||||
path-strip-extension path-strip-directory
|
||||
|
@ -61,7 +61,7 @@
|
|||
(location-set-val! (top-transformer-env s 'ref) t))
|
||||
|
||||
(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* '())
|
||||
|
||||
|
|
247
pre/t.scm
247
pre/t.scm
|
@ -187,7 +187,7 @@
|
|||
; <core> -> (define-library <listname> <library>) where <library> is a vector (see below)
|
||||
; <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>)
|
||||
; (body <expr or def> ...)
|
||||
|
@ -349,11 +349,11 @@
|
|||
|
||||
(define (xenv-lookup 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 (xform-sexp->datum sexp)
|
||||
(define (xpand-sexp->datum sexp)
|
||||
(let conv ([sexp sexp])
|
||||
(cond [(id? sexp) (id->sym 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
|
||||
(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
|
||||
; 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.
|
||||
|
||||
(define (xform appos? sexp env)
|
||||
(define (xpand appos? sexp env)
|
||||
(cond [(id? sexp)
|
||||
(let ([hval (xform-ref sexp env)])
|
||||
(let ([hval (xpand-ref sexp env)])
|
||||
(cond [appos? hval] ; anything goes in app position
|
||||
[(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-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)]
|
||||
[else hval]))]
|
||||
[(not (pair? sexp))
|
||||
(xform-quote (list sexp) env)]
|
||||
(xpand-quote (list sexp) env)]
|
||||
[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
|
||||
[(quote) (xform-quote tail env)]
|
||||
[(set!) (xform-set! tail env)]
|
||||
[(set&) (xform-set& tail env)]
|
||||
[(if) (xform-if tail env)]
|
||||
[(lambda) (xform-lambda tail env)]
|
||||
[(lambda*) (xform-lambda* tail env)]
|
||||
[(letcc) (xform-letcc tail env)]
|
||||
[(withcc) (xform-withcc tail env)]
|
||||
[(body) (xform-body tail env appos?)]
|
||||
[(begin) (xform-begin tail env appos?)]
|
||||
[(define) (xform-define tail env)] ; as expression: will fail later
|
||||
[(define-syntax) (xform-define-syntax tail env)] ; as expression: will fail later
|
||||
[(syntax-quote) (xform-syntax-quote tail env)]
|
||||
[(syntax-lambda) (xform-syntax-lambda tail env appos?)]
|
||||
[(syntax-rules) (xform-syntax-rules tail env)]
|
||||
[(syntax-length) (xform-syntax-length tail env)]
|
||||
[(syntax-error) (xform-syntax-error tail env)]
|
||||
[(define-library) (xform-define-library head tail env #f)]
|
||||
[(import) (xform-import head tail env #f)]
|
||||
[(export program) (x-error "FIXME: not yet implemented" hval sexp)]
|
||||
[(quote) (xpand-quote tail env)]
|
||||
[(set!) (xpand-set! tail env)]
|
||||
[(set&) (xpand-set& tail env)]
|
||||
[(if) (xpand-if tail env)]
|
||||
[(lambda) (xpand-lambda tail env)]
|
||||
[(lambda*) (xpand-lambda* tail env)]
|
||||
[(letcc) (xpand-letcc tail env)]
|
||||
[(withcc) (xpand-withcc tail env)]
|
||||
[(body) (xpand-body tail env appos?)]
|
||||
[(begin) (xpand-begin tail env appos?)]
|
||||
[(define) (xpand-define tail env)] ; as expression: will fail later
|
||||
[(define-syntax) (xpand-define-syntax tail env)] ; as expression: will fail later
|
||||
[(syntax-quote) (xpand-syntax-quote tail env)]
|
||||
[(syntax-lambda) (xpand-syntax-lambda tail env appos?)]
|
||||
[(syntax-rules) (xpand-syntax-rules tail env)]
|
||||
[(syntax-length) (xpand-syntax-length tail env)]
|
||||
[(syntax-error) (xpand-syntax-error tail env)]
|
||||
[(define-library) (xpand-define-library head tail env #f)]
|
||||
[(import) (xpand-import head tail env #f)]
|
||||
[(... _) (x-error "improper use of auxiliary syntax" hval sexp)]
|
||||
[else (cond [(val-integrable? hval) (xform-integrable hval tail env)]
|
||||
[(val-transformer? hval) (xform appos? (hval sexp env) env)]
|
||||
[else (cond [(val-integrable? hval) (xpand-integrable hval tail env)]
|
||||
[(val-transformer? hval) (xpand appos? (hval sexp env) env)]
|
||||
[(val-library? hval) (x-error "improper use of library" 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)]
|
||||
[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)
|
||||
(list 'quote (xform-sexp->datum (car tail)))
|
||||
(list 'quote (xpand-sexp->datum (car 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)))
|
||||
|
||||
(define (xform-set! tail env)
|
||||
(define (xpand-set! tail env)
|
||||
(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)
|
||||
(x-error "set! to macro or integrable identifier" (cons 'set! tail))
|
||||
(let ([val (location-val den)])
|
||||
|
@ -449,7 +448,7 @@
|
|||
(x-error "set! is not allowed" (cons 'set! tail))))))
|
||||
(x-error "improper set! form" (cons 'set! tail))))
|
||||
|
||||
(define (xform-set& tail env)
|
||||
(define (xpand-set& tail env)
|
||||
(if (list1? tail)
|
||||
(let ([den (xenv-lookup env (car tail) 'set!)])
|
||||
(if (location-special? den)
|
||||
|
@ -460,18 +459,18 @@
|
|||
(x-error "set& is not allowed" (cons 'set! tail))))))
|
||||
(x-error "improper set& form" (cons 'set& tail))))
|
||||
|
||||
(define (xform-if tail env)
|
||||
(define (xpand-if tail env)
|
||||
(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)
|
||||
[(2) (cons 'if (append xexps '((begin))))]
|
||||
[(3) (cons 'if xexps)]
|
||||
[else (x-error "malformed 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)
|
||||
(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)))
|
||||
(caddr xexp) ; ((let () x)) => x
|
||||
(pair* 'call xexp xexps)))
|
||||
|
@ -485,27 +484,27 @@
|
|||
[(#\#) (>= n 0)] [(#\@) #f]
|
||||
[else #f]))
|
||||
|
||||
(define (xform-integrable ig tail env)
|
||||
(define (xpand-integrable ig tail env)
|
||||
(if (integrable-argc-match? (integrable-type ig) (length tail))
|
||||
(cons 'integrable (cons ig (map (lambda (sexp) (xform #f sexp env)) tail)))
|
||||
(xform-call (list 'ref (integrable-global ig)) tail env)))
|
||||
(cons 'integrable (cons ig (map (lambda (sexp) (xpand #f sexp env)) tail)))
|
||||
(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)))
|
||||
(let loop ([vars (car tail)] [ienv env] [ipars '()])
|
||||
(cond [(pair? vars)
|
||||
(let* ([var (car vars)] [nvar (gensym (id->sym var))])
|
||||
(loop (cdr vars) (add-local-var var nvar ienv) (cons nvar ipars)))]
|
||||
[(null? vars)
|
||||
(list 'lambda (reverse ipars) (xform-body (cdr tail) ienv #f))]
|
||||
(list 'lambda (reverse ipars) (xpand-body (cdr tail) ienv #f))]
|
||||
[else ; improper
|
||||
(let* ([var vars] [nvar (gensym (id->sym var))]
|
||||
[ienv (add-local-var var nvar ienv)])
|
||||
(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))))
|
||||
|
||||
(define (xform-lambda* tail env)
|
||||
(define (xpand-lambda* tail env)
|
||||
(if (list? tail)
|
||||
(cons 'lambda*
|
||||
(map (lambda (aexp)
|
||||
|
@ -515,22 +514,22 @@
|
|||
(boolean? (cadar aexp)))
|
||||
(idslist? (car aexp))))
|
||||
(list (normalize-arity (car aexp))
|
||||
(xform #f (cadr aexp) env))
|
||||
(xpand #f (cadr aexp) env))
|
||||
(x-error "improper lambda* clause" aexp)))
|
||||
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)))
|
||||
(let* ([var (car tail)] [nvar (gensym (id->sym var))])
|
||||
(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))))
|
||||
|
||||
(define (xform-withcc tail env)
|
||||
(define (xpand-withcc tail env)
|
||||
(if (list2+? tail)
|
||||
(list 'withcc (xform #f (car tail) env)
|
||||
(xform-body (cdr tail) env) #f)
|
||||
(list 'withcc (xpand #f (car tail) env)
|
||||
(xpand-body (cdr tail) env) #f)
|
||||
(x-error "improper withcc form" (cons 'withcc tail))))
|
||||
|
||||
(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
|
||||
[else (x-error "improper define-syntax form" (cons head tail))]))
|
||||
|
||||
(define (xform-body tail env appos?)
|
||||
(define (xpand-body tail env appos?)
|
||||
(cond
|
||||
[(null? tail)
|
||||
(list 'begin)]
|
||||
[(list1? tail) ; can't have defines there
|
||||
(xform appos? (car tail) env)]
|
||||
(xpand appos? (car tail) env)]
|
||||
[(not (list? tail))
|
||||
(x-error "improper body form" (cons 'body tail))]
|
||||
[else
|
||||
(let loop ([env env] [ids '()] [inits '()] [nids '()] [body tail])
|
||||
(if (and (pair? body) (pair? (car 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
|
||||
[(begin) ; internal
|
||||
(if (list? tail)
|
||||
|
@ -582,16 +581,16 @@
|
|||
(if (and (list2+? tail) (listname? (car tail)))
|
||||
; note: library is fully expanded in incomplete env, to make it
|
||||
; 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>)
|
||||
[listname (cadr core)] [library (caddr core)]
|
||||
[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))]
|
||||
[(import) ; internal
|
||||
(if (list? tail)
|
||||
; 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)])
|
||||
(let scan ([eal eal] [env env])
|
||||
(if (null? eal) ; add init code as if it were idless define
|
||||
|
@ -605,76 +604,76 @@
|
|||
[else
|
||||
(if (val-transformer? hval)
|
||||
(loop env ids inits nids (cons (hval first env) rest))
|
||||
(xform-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?))])))
|
||||
(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))
|
||||
(let loop ([ids ids] [inits inits] [nids nids] [sets '()] [lids '()])
|
||||
(cond [(null? ids)
|
||||
(if (and no-defines? (list1? body))
|
||||
; special case: expand body using current appos?
|
||||
(xform appos? (car body) env)
|
||||
(xpand appos? (car body) env)
|
||||
; 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))])
|
||||
(if (null? lids) xexp
|
||||
(pair* 'call (list 'lambda (reverse lids) xexp)
|
||||
(map (lambda (lid) '(begin)) lids)))))]
|
||||
[(not (car ids)) ; idless define, nid is #f
|
||||
(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
|
||||
(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))]
|
||||
[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)])))
|
||||
|
||||
; 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 (list1? tail)
|
||||
(xform appos? (car tail) env) ; (begin x) == x
|
||||
(cons 'begin (map (lambda (sexp) (xform #f sexp env)) tail)))
|
||||
(xpand appos? (car tail) env) ; (begin x) == x
|
||||
(cons 'begin (map (lambda (sexp) (xpand #f sexp env)) tail)))
|
||||
(x-error "improper begin form" (cons 'begin tail))))
|
||||
|
||||
; 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)])
|
||||
(if (list1? tail) ; idless
|
||||
(xform #f (cadr tail) env)
|
||||
(xpand #f (cadr tail) env)
|
||||
(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!
|
||||
(define (xform-define-syntax tail env)
|
||||
(define (xpand-define-syntax tail env)
|
||||
(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)
|
||||
(car tail) ; must be <core>, todo: check?
|
||||
(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)))
|
||||
(let ([vars (car tail)] [macenv env] [forms (cdr tail)])
|
||||
; 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)
|
||||
(if (and (list1+? use) (fx=? (length vars) (length (cdr use))))
|
||||
(let loop ([vars vars] [exps (cdr use)] [env macenv])
|
||||
(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)
|
||||
(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 "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)))
|
||||
(syntax-rules* env (car tail) (cadr tail) (cddr tail))]
|
||||
[(and (list1+? tail) (andmap id? (car tail)))
|
||||
|
@ -682,13 +681,13 @@
|
|||
[else
|
||||
(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)))
|
||||
(list 'quote (length (car tail)))
|
||||
(x-error "improper syntax-length form" (cons 'syntax-length tail))))
|
||||
|
||||
(define (xform-syntax-error tail env)
|
||||
(let ([args (map xform-sexp->datum tail)])
|
||||
(define (xpand-syntax-error tail env)
|
||||
(let ([args (map xpand-sexp->datum tail)])
|
||||
(if (and (list1+? args) (string? (car args)))
|
||||
(apply x-error args)
|
||||
(x-error "improper syntax-error form" (cons 'syntax-error tail)))))
|
||||
|
@ -961,7 +960,7 @@
|
|||
(cond [(lit=? freq 'else) (con)]
|
||||
[(id? freq) (if (feature-available? (id->sym freq)) (con) (alt))]
|
||||
[(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))
|
||||
(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)])]
|
||||
|
@ -1053,7 +1052,7 @@
|
|||
(pp (cadr s) ;=>
|
||||
(lambda (code al)
|
||||
(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]
|
||||
[(assq (caar 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)))]
|
||||
[(and (list1+? s) (andmap libpart? s))
|
||||
; 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))
|
||||
(return (library-code val) (library-exports val)))]
|
||||
[else
|
||||
|
@ -1095,7 +1094,7 @@
|
|||
(toesps (cdr ee) (adjoin-esps (list (cons s s)) esps)))]
|
||||
[(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))]
|
||||
[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 '()])
|
||||
(if (null? decls)
|
||||
(list code eal esps forms)
|
||||
|
@ -1139,7 +1138,7 @@
|
|||
(check-syntax decl '(<id> <string> ...) "invalid include-ci library declaration syntax")
|
||||
(loop decls code eal esps `(,@forms (,include-ci-id . ,(cdr decl))))]
|
||||
[(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)
|
||||
; forms that need further processing (each one will become (set! gs core) form
|
||||
|
@ -1149,7 +1148,7 @@
|
|||
code*
|
||||
(let ([first (car body)] [rest (cdr body)])
|
||||
(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
|
||||
[(eq? hval 'begin)
|
||||
(unless (list? tail) (x-error "improper begin form" first))
|
||||
|
@ -1169,10 +1168,10 @@
|
|||
[loc (top-defined-id-lookup cenv (car tail) 'define-syntax)])
|
||||
(unless (location? loc)
|
||||
(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*))]
|
||||
[(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>)
|
||||
[loc (xenv-lookup env (cadr core) 'define-syntax)])
|
||||
(unless (location? loc)
|
||||
|
@ -1180,7 +1179,7 @@
|
|||
(location-set-val! loc (caddr core))
|
||||
(scan rest code*))]
|
||||
[(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>)
|
||||
[l (cadr core)] [code (library-code l)] [eal (library-exports l)])
|
||||
(unless (cenv eal 'import) ; adjoins eal to cenv's imports
|
||||
|
@ -1197,7 +1196,7 @@
|
|||
; scan returns underprocessed defines; this fn fixes that
|
||||
(define (preprocess-top-form-fix! code cenv) ;=> core
|
||||
(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)))
|
||||
code))
|
||||
|
||||
|
@ -1234,9 +1233,9 @@
|
|||
; it should become available in local env immediately, even at definition-scanning phase -- so we
|
||||
; 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)))
|
||||
(let* ([listname (xform-sexp->datum (car tail))]
|
||||
(let* ([listname (xpand-sexp->datum (car tail))]
|
||||
[prefix (and top? (listname->symbol listname))]
|
||||
; 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)))]
|
||||
|
@ -1248,7 +1247,7 @@
|
|||
; 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
|
||||
|
||||
(define (xform-import head tail env top?)
|
||||
(define (xpand-import head tail env top?)
|
||||
(if (list? tail)
|
||||
(let ([ic&ex (preprocess-import-sets (cons head tail) env)])
|
||||
; NB: this is part 3/4 of listname <-> library interaction
|
||||
|
@ -1904,8 +1903,8 @@
|
|||
(lambda ()
|
||||
(let ([sexps (read-file-sexps filepath #f)])
|
||||
(if (sexp-match? '((define-library * * ...)) sexps)
|
||||
; invoke xform-define-library in 'top' context (for lib:// globals)
|
||||
(let ([core (xform-define-library (caar sexps) (cdar sexps) sld-env #t)])
|
||||
; invoke xpand-define-library in 'top' context (for lib:// globals)
|
||||
(let ([core (xpand-define-library (caar sexps) (cdar sexps) sld-env #t)])
|
||||
(if (and (sexp-match? '(define-library * *) core)
|
||||
(equal? (cadr core) listname) (val-library? (caddr core)))
|
||||
(caddr core) ;=> <library>
|
||||
|
@ -2114,13 +2113,13 @@
|
|||
(write w v) (current-jiffy t) (current-second t) (jiffies-per-second t) (write-shared w)
|
||||
(write-simple w)
|
||||
; these are special forms in skint!
|
||||
(define-library) (import) (export) (program)
|
||||
(define-library) (import)
|
||||
; selected extracts from r7rs-large and srfis
|
||||
(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)
|
||||
; 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)
|
||||
(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/)
|
||||
(fxquotient) (fxremainder) (fxmodquo) (fxmodulo) (fxeucquo) (fxeucrem) (fxneg)
|
||||
(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)
|
||||
(fltan) (flasin) (flacos) (flatan) (fl<?) (fl<=?) (fl>?) (fl>=?) (fl=?) (fl!=?) (flmin)
|
||||
(flmax) (flremainder) (flmodulo) (flquotient) (flmodquo) (flonum->fixnum) (flonum->string)
|
||||
(string->flonum) (list-cat) (last-pair) (list-head) (meme) (asse) (reverse!) (circular?) (cons*)
|
||||
(list*) (char-cmp) (char-ci-cmp) (string-cat) (string-position) (string-cmp) (string-ci-cmp)
|
||||
(vector-cat) (bytevector=?) (bytevector->list) (list->bytevector) (subbytevector)
|
||||
(standard-input-port) (standard-output-port) (standard-error-port) (tty-port?)
|
||||
(string->flonum) (list-cat) (last-pair) (list-head) (meme) (asse) (memp) (assp) (reverse!)
|
||||
(circular?) (cons*) (list*) (char-cmp) (char-ci-cmp) (string-cat) (string-position)
|
||||
(string-cmp) (string-ci-cmp) (vector-cat) (bytevector=?) (bytevector->list) (list->bytevector)
|
||||
(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)
|
||||
(void) (void?)
|
||||
; (repl hidden) library entries below the auto-adder need to be added explicitly
|
||||
|
@ -2396,7 +2395,7 @@
|
|||
|
||||
(define (evaluate-top-form x env)
|
||||
(if (pair? x)
|
||||
(let ([hval (xform #t (car x) env)]) ; returns <core>
|
||||
(let ([hval (xpand #t (car x) env)]) ; returns <core>
|
||||
(cond
|
||||
[(eq? hval 'begin) ; splice
|
||||
(let loop ([x* (cdr x)])
|
||||
|
@ -2411,18 +2410,18 @@
|
|||
(let ([loc (top-defined-id-lookup env (car tail) 'define)])
|
||||
(unless (and (location? loc) (sexp-match? '(ref *) (location-val loc)))
|
||||
(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)))))]
|
||||
[(eq? hval 'define-syntax) ; use new protocol for top-level envs
|
||||
(let* ([tail (preprocess-define-syntax (car x) (cdr x))]
|
||||
[loc (top-defined-id-lookup env (car tail) 'define-syntax)])
|
||||
(unless (location? loc)
|
||||
(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))
|
||||
(void))]
|
||||
[(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>)
|
||||
[loc (xenv-lookup env (cadr core) 'define-syntax)])
|
||||
(unless (location? loc)
|
||||
|
@ -2430,7 +2429,7 @@
|
|||
(location-set-val! loc (caddr core))
|
||||
(when *verbose* (display "LIBRARY INSTALLED: ") (write (cadr core)) (newline)))]
|
||||
[(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>)
|
||||
[l (cadr core)] [code (library-code l)] [eal (library-exports l)])
|
||||
; note: try to use env's import protocol
|
||||
|
@ -2447,7 +2446,7 @@
|
|||
[(val-transformer? hval) ; apply transformer and loop
|
||||
; 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
|
||||
(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))
|
||||
(let* ([code* (preprocess-top-forms-scan (cdr x) env env)]
|
||||
[fix! (lambda (code) (preprocess-top-form-fix! code env))]
|
||||
|
@ -2455,13 +2454,13 @@
|
|||
(compile-and-run-core-expr code)) ; tail
|
||||
(evaluate-top-form x env)))] ; tail
|
||||
[(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
|
||||
(compile-and-run-core-expr (xform #f x env))]
|
||||
(compile-and-run-core-expr (xpand #f x env))]
|
||||
[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
|
||||
(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
|
||||
|
@ -2483,7 +2482,13 @@
|
|||
(eval x env)
|
||||
(loop (read-code-sexp port))))))
|
||||
; 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)
|
||||
(define (run-script filename args)
|
||||
|
@ -2685,7 +2690,7 @@
|
|||
[help "-h" "--help" #f "Display this help"]
|
||||
))
|
||||
|
||||
(define *skint-version* "0.3.9")
|
||||
(define *skint-version* "0.4.9")
|
||||
|
||||
(define (skint-main)
|
||||
; see if command line asks for special processing
|
||||
|
|
5
s.c
5
s.c
|
@ -1123,8 +1123,9 @@ char *s_code[] = {
|
|||
|
||||
"P", "format",
|
||||
"%!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"
|
||||
"-to-list)[22}.0,.2c,@(y7:fprintf),@(y13:apply-to-list)[22",
|
||||
"(y13:apply-to-list)[02}.1P90]4}t,.2q?{${.2,Poc,@(y7:fprintf),@(y13:app"
|
||||
"ly-to-list)[02}Y9]2}${.2,.4c,@(y7:fprintf),@(y13:apply-to-list)[02}Y9]"
|
||||
"2",
|
||||
|
||||
"P", "write-to-string",
|
||||
"%1P51,.0,.2W5.0P90,.1P61.0]3",
|
||||
|
|
338
t.c
338
t.c
|
@ -209,13 +209,13 @@ char *t_code[] = {
|
|||
"%3.2,.2,'(y3:ref),l2,.2,@(y17:extend-xenv-local)[33",
|
||||
|
||||
"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",
|
||||
|
||||
"P", "xenv-ref",
|
||||
"%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^"
|
||||
"[01},${.3a,:0^[01}c]1}.0V0?{${.2X0,:0^,@(y5:%25map1)[02}X1]1}.0]1}.!0."
|
||||
"0^_1[11",
|
||||
|
@ -248,65 +248,65 @@ char *t_code[] = {
|
|||
"e-registry?)[01}?{${.3,@(y14:name-registry?)[01}}{f}?{.1,.1q?{.4,.3q]6"
|
||||
"}f]6}.1,.1q]6}f]6}f]6",
|
||||
|
||||
"P", "xform",
|
||||
"%3${.3,@(y3:id?)[01}?{${.4,.4,@(y9:xform-ref)[02},.1?{.0]4}.0U0?{.0U7,"
|
||||
"'(y5:const),l2]4}.0K0?{.3,${.6,.6,.5[02},.3,@(y5:xform)[43}.0V0?{.2,.1"
|
||||
"P", "xpand",
|
||||
"%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:xpand)[43}.0V0?{.2,.1"
|
||||
",'(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"
|
||||
"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?"
|
||||
"{.6,.3,@(y11:xform-quote)[72}'(y4:set!),.1v?{.6,.3,@(y10:xform-set!)[7"
|
||||
"2}'(y4:set&),.1v?{.6,.3,@(y10:xform-set&)[72}'(y2:if),.1v?{.6,.3,@(y8:"
|
||||
"xform-if)[72}'(y6:lambda),.1v?{.6,.3,@(y12:xform-lambda)[72}'(y7:lambd"
|
||||
"a*),.1v?{.6,.3,@(y13:xform-lambda*)[72}'(y5:letcc),.1v?{.6,.3,@(y11:xf"
|
||||
"orm-letcc)[72}'(y6:withcc),.1v?{.6,.3,@(y12:xform-withcc)[72}'(y4:body"
|
||||
"),.1v?{.4,.7,.4,@(y10:xform-body)[73}'(y5:begin),.1v?{.4,.7,.4,@(y11:x"
|
||||
"form-begin)[73}'(y6:define),.1v?{.6,.3,@(y12:xform-define)[72}'(y13:de"
|
||||
"fine-syntax),.1v?{.6,.3,@(y19:xform-define-syntax)[72}'(y12:syntax-quo"
|
||||
"te),.1v?{.6,.3,@(y18:xform-syntax-quote)[72}'(y13:syntax-lambda),.1v?{"
|
||||
".4,.7,.4,@(y19:xform-syntax-lambda)[73}'(y12:syntax-rules),.1v?{.6,.3,"
|
||||
"@(y18:xform-syntax-rules)[72}'(y13:syntax-length),.1v?{.6,.3,@(y19:xfo"
|
||||
"rm-syntax-length)[72}'(y12:syntax-error),.1v?{.6,.3,@(y18:xform-syntax"
|
||||
"-error)[72}'(y14:define-library),.1v?{f,.7,.4,.6,@(y20:xform-define-li"
|
||||
"brary)[74}'(y6:import),.1v?{f,.7,.4,.6,@(y12:xform-import)[74}'(l2:y6:"
|
||||
":xpand-quote)[32}.1a,.2d,${.6,.4,t,@(y5:xpand)[03},.0,'(y5:quote),.1v?"
|
||||
"{.6,.3,@(y11:xpand-quote)[72}'(y4:set!),.1v?{.6,.3,@(y10:xpand-set!)[7"
|
||||
"2}'(y4:set&),.1v?{.6,.3,@(y10:xpand-set&)[72}'(y2:if),.1v?{.6,.3,@(y8:"
|
||||
"xpand-if)[72}'(y6:lambda),.1v?{.6,.3,@(y12:xpand-lambda)[72}'(y7:lambd"
|
||||
"a*),.1v?{.6,.3,@(y13:xpand-lambda*)[72}'(y5:letcc),.1v?{.6,.3,@(y11:xp"
|
||||
"and-letcc)[72}'(y6:withcc),.1v?{.6,.3,@(y12:xpand-withcc)[72}'(y4:body"
|
||||
"),.1v?{.4,.7,.4,@(y10:xpand-body)[73}'(y5:begin),.1v?{.4,.7,.4,@(y11:x"
|
||||
"pand-begin)[73}'(y6:define),.1v?{.6,.3,@(y12:xpand-define)[72}'(y13:de"
|
||||
"fine-syntax),.1v?{.6,.3,@(y19:xpand-define-syntax)[72}'(y12:syntax-quo"
|
||||
"te),.1v?{.6,.3,@(y18:xpand-syntax-quote)[72}'(y13:syntax-lambda),.1v?{"
|
||||
".4,.7,.4,@(y19:xpand-syntax-lambda)[73}'(y12:syntax-rules),.1v?{.6,.3,"
|
||||
"@(y18:xpand-syntax-rules)[72}'(y13:syntax-length),.1v?{.6,.3,@(y19:xpa"
|
||||
"nd-syntax-length)[72}'(y12:syntax-error),.1v?{.6,.3,@(y18:xpand-syntax"
|
||||
"-error)[72}'(y14:define-library),.1v?{f,.7,.4,.6,@(y20:xpand-define-li"
|
||||
"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"
|
||||
":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)["
|
||||
"73}.1K0?{.6,${.9,.9,.6[02},.6,@(y5:xform)[73}.1V0?{.5,.2,'(s23:imprope"
|
||||
"liary syntax),@(y7:x-error)[73}.1U0?{.6,.3,.3,@(y16:xpand-integrable)["
|
||||
"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"
|
||||
"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",
|
||||
"%2${.2,@(y6:list1?)[01}?{${.2a,@(y17:xform-sexp->datum)[01},'(y5:quote"
|
||||
"P", "xpand-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",
|
||||
|
||||
"P", "xform-ref",
|
||||
"P", "xpand-ref",
|
||||
"%2${.2,.4,@(y8:xenv-ref)[02}z]2",
|
||||
|
||||
"P", "xform-set!",
|
||||
"%2${.2,@(y6:list2?)[01}?{${.2a,@(y3:id?)[01}}{f}?{${.3,.3da,f,@(y5:xfo"
|
||||
"rm)[03},${'(y4:set!),.4a,.6,@(y11:xenv-lookup)[03},${.2,@(y17:location"
|
||||
"P", "xpand-set!",
|
||||
"%2${.2,@(y6:list2?)[01}?{${.2a,@(y3:id?)[01}}{f}?{${.3,.3da,f,@(y5:xpa"
|
||||
"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"
|
||||
"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!)"
|
||||
"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,@(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"
|
||||
":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",
|
||||
|
||||
"P", "xform-if",
|
||||
"%2.0L0?{${.2,.4,&1{%1:0,.1,f,@(y5:xform)[13},@(y5:%25map1)[02},.0g,'2,"
|
||||
"P", "xpand-if",
|
||||
"%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,'("
|
||||
"y2:if)c,'(s17:malformed if form),@(y7:x-error)[42}.0,'(y2:if)c,'(s16:i"
|
||||
"mproper if form),@(y7:x-error)[22",
|
||||
|
||||
"P", "xform-call",
|
||||
"%3.1L0?{${.3,.5,&1{%1:0,.1,f,@(y5:xform)[13},@(y5:%25map1)[02},.0u?{'("
|
||||
"P", "xpand-call",
|
||||
"%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"
|
||||
"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@),"
|
||||
".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,@"
|
||||
"(y5:xform)[13},@(y5:%25map1)[02},.1c,'(y10:integrable)c]3}.2,.2,.2U7,'"
|
||||
"(y3:ref),l2,@(y10:xform-call)[33",
|
||||
"(y5:xpand)[13},@(y5:%25map1)[02},.1c,'(y10:integrable)c]3}.2,.2,.2U7,'"
|
||||
"(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"
|
||||
",.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"
|
||||
"m-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"
|
||||
"6,.4,.6,@(y13:add-local-var)[03},.4d,:0^[53}.0u?{${f,.4,:1d,@(y10:xpan"
|
||||
"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:xpand-b"
|
||||
"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",
|
||||
|
||||
"P", "xform-lambda*",
|
||||
"P", "xpand-lambda*",
|
||||
"%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"
|
||||
"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"
|
||||
"*)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-"
|
||||
">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",
|
||||
|
||||
"P", "xform-withcc",
|
||||
"%2${.2,@(y7:list2+?)[01}?{f,${.4,.4d,@(y10:xform-body)[02},${.5,.5a,f,"
|
||||
"@(y5:xform)[03},'(y6:withcc),l4]2}.0,'(y6:withcc)c,'(s20:improper with"
|
||||
"P", "xpand-withcc",
|
||||
"%2${.2,@(y7:list2+?)[01}?{f,${.4,.4d,@(y10:xpand-body)[02},${.5,.5a,f,"
|
||||
"@(y5:xpand)[03},'(y6:withcc),l4]2}.0,'(y6:withcc)c,'(s20:improper with"
|
||||
"cc form),@(y7:x-error)[22",
|
||||
|
||||
"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"
|
||||
"proper define-syntax form),@(y7:x-error)[22",
|
||||
|
||||
"P", "xform-body",
|
||||
"%3.0u?{'(y5:begin),l1]3}${.2,@(y6:list1?)[01}?{.1,.1a,.4,@(y5:xform)[3"
|
||||
"P", "xpand-body",
|
||||
"%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,"
|
||||
"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"
|
||||
"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,${$"
|
||||
|
@ -373,71 +373,71 @@ char *t_code[] = {
|
|||
"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,@(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 "
|
||||
"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"
|
||||
"-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}"
|
||||
"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"
|
||||
"),.(i10),:0^[(i11)5}:1,.7,.(i12),.(i12)A8,.(i12)A8,.(i12)A8,@(y12:xfor"
|
||||
"m-labels)[(i11)6}:1,.1,.6,.6A8,.6A8,.6A8,@(y12:xform-labels)[56}.!0.0^"
|
||||
"),.(i10),:0^[(i11)5}:1,.7,.(i12),.(i12)A8,.(i12)A8,.(i12)A8,@(y12:xpan"
|
||||
"d-labels)[(i11)6}:1,.1,.6,.6A8,.6A8,.6A8,@(y12:xpand-labels)[56}.!0.0^"
|
||||
"_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),."
|
||||
"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"
|
||||
"'(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,:"
|
||||
"4^[55}.2aY0?{.4,.3ac,.4,${:3,.6a,.6a,l2,@(y10:xform-set!)[02}c,.4d,.4d"
|
||||
",.4d,:4^[55}${:3,.4a,t,@(y5:xform)[03},${'(y4:set!),.4a,:3,@(y11:xenv-"
|
||||
"),@(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:xpand-set!)[02}c,.4d,.4d"
|
||||
",.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",
|
||||
|
||||
"P", "xform-begin",
|
||||
"%3.0L0?{${.2,@(y6:list1?)[01}?{.1,.1a,.4,@(y5:xform)[33}${.2,.4,&1{%1:"
|
||||
"0,.1,f,@(y5:xform)[13},@(y5:%25map1)[02},'(y5:begin)c]3}.0,'(y5:begin)"
|
||||
"P", "xpand-begin",
|
||||
"%3.0L0?{${.2,@(y6:list1?)[01}?{.1,.1a,.4,@(y5:xpand)[33}${.2,.4,&1{%1:"
|
||||
"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",
|
||||
|
||||
"P", "xform-define",
|
||||
"P", "xpand-define",
|
||||
"%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",
|
||||
|
||||
"P", "xform-define-syntax",
|
||||
"P", "xpand-define-syntax",
|
||||
"%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",
|
||||
|
||||
"P", "xform-syntax-quote",
|
||||
"P", "xpand-syntax-quote",
|
||||
"%2${.2,@(y6:list1?)[01}?{.0a]2}.0,'(y12:syntax-quote)c,'(s26:improper "
|
||||
"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"
|
||||
",.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"
|
||||
"ax-quote-id),l2]3}${.4,${:3,.7a,t,@(y5:xform)[03},.4a,@(y17:extend-xen"
|
||||
"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:xpand)[03},.4a,@(y17:extend-xen"
|
||||
"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"
|
||||
"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"
|
||||
"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"
|
||||
"3:syntax-rules*)[24}.0,'(y12:syntax-rules)c,'(s26:improper syntax-rule"
|
||||
"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"
|
||||
"tax-length)c,'(s27:improper syntax-length form),@(y7:x-error)[22",
|
||||
|
||||
"P", "xform-syntax-error",
|
||||
"%2${.2,@(y17:xform-sexp->datum),@(y5:%25map1)[02},${.2,@(y7:list1+?)[0"
|
||||
"P", "xpand-syntax-error",
|
||||
"%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"
|
||||
"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}?{$"
|
||||
"{${.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:"
|
||||
"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,"
|
||||
".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?"
|
||||
|
@ -610,12 +610,12 @@ char *t_code[] = {
|
|||
"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^?{"
|
||||
":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["
|
||||
"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^,@("
|
||||
"y6:andmap)[02}}{f}?{${.3,@(y17:xform-sexp->datum)[01},${:8,.3,@(y9:xfo"
|
||||
"rm-ref)[02},.0V0~?{${.2,.4,'(s15:invalid library),@(y7:x-error)[03}}'1"
|
||||
"y6:andmap)[02}}{f}?{${.3,@(y17:xpand-sexp->datum)[01},${:8,.3,@(y9:xpa"
|
||||
"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"
|
||||
"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"
|
||||
|
@ -637,7 +637,7 @@ char *t_code[] = {
|
|||
"(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}?{: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,"
|
||||
"n,n,'(l1:y5:begin;),.(i19)d,,#0.(i19),.7,.(i20),.(i13),.(i17),.(i25),."
|
||||
"(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"
|
||||
"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,"
|
||||
".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",
|
||||
|
||||
"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"
|
||||
"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),."
|
||||
|
@ -679,11 +679,11 @@ char *t_code[] = {
|
|||
")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"
|
||||
"~?{${.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?"
|
||||
"{${f,:1,.5,.7,@(y20:xform-define-library)[04},${'(y13:define-syntax),."
|
||||
"{:2,.4da,t,@(y5:xpand)[03},.1sz.8,.7,:0^[92}'(y14:define-library),.1q?"
|
||||
"{${f,:1,.5,.7,@(y20:xpand-define-library)[04},${'(y13:define-syntax),."
|
||||
"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)"
|
||||
",.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"
|
||||
"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"
|
||||
|
@ -691,7 +691,7 @@ char *t_code[] = {
|
|||
|
||||
"P", "preprocess-top-form-fix!",
|
||||
"%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",
|
||||
"%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,"
|
||||
".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"
|
||||
"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,'("
|
||||
"y14:define-library),l3]8}.1,.1c,'(s28:improper define-library form),@("
|
||||
"y7:x-error)[42",
|
||||
|
||||
"P", "xform-import",
|
||||
"P", "xpand-import",
|
||||
"%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",
|
||||
|
||||
|
@ -1094,7 +1094,7 @@ char *t_code[] = {
|
|||
"%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-"
|
||||
"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,."
|
||||
"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"
|
||||
|
@ -1178,7 +1178,7 @@ char *t_code[] = {
|
|||
"0:*root-name-registry*),@(y11:name-lookup)[03}",
|
||||
|
||||
"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"
|
||||
"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"
|
||||
|
@ -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"
|
||||
"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"
|
||||
"ort;;l1:y6:export;;l1:y7:program;;l3:y4:box?;y1:x;i111;;l3:y3:box;y1:x"
|
||||
";i111;;l3:y5:unbox;y1:x;i111;;l3:y8:set-box!;y1:x;i111;;l3:y6:format;i"
|
||||
"28;i48;;l1:y7:fprintf;;l1:y19:format-pretty-print;;l1:y18:format-fixed"
|
||||
"-print;;l1:y17:format-fresh-line;;l1:y18:format-help-string;;l1:y4:set"
|
||||
"&;;l1:y7:lambda*;;l1:y4:body;;l1:y5:letcc;;l1:y6:withcc;;l1:y13:syntax"
|
||||
"-lambda;;l1:y13:syntax-length;;l1:y7:record?;;l1:y11:make-record;;l1:y"
|
||||
"13:record-length;;l1:y10:record-ref;;l1:y11:record-set!;;l1:y7:fixnum?"
|
||||
";;l1:y11:fxpositive?;;l1:y11:fxnegative?;;l1:y7:fxeven?;;l1:y6:fxodd?;"
|
||||
";l1:y7:fxzero?;;l1:y3:fx+;;l1:y3:fx*;;l1:y3:fx-;;l1:y3:fx/;;l1:y10:fxq"
|
||||
"uotient;;l1:y11:fxremainder;;l1:y8:fxmodquo;;l1:y8:fxmodulo;;l1:y8:fxe"
|
||||
"ucquo;;l1:y8:fxeucrem;;l1:y5:fxneg;;l1:y5:fxabs;;l1:y4:fx<?;;l1:y5:fx<"
|
||||
"=?;;l1:y4:fx>?;;l1:y5:fx>=?;;l1:y4:fx=?;;l1:y5:fx!=?;;l1:y5:fxmin;;l1:"
|
||||
"y5:fxmax;;l1:y5:fxneg;;l1:y5:fxabs;;l1:y5:fxgcd;;l1:y6:fxexpt;;l1:y6:f"
|
||||
"xsqrt;;l1:y5:fxnot;;l1:y5:fxand;;l1:y5:fxior;;l1:y5:fxxor;;l1:y5:fxsll"
|
||||
";;l1:y5:fxsrl;;l1:y14:fixnum->flonum;;l1:y14:fixnum->string;;l1:y14:st"
|
||||
"ring->fixnum;;l1:y7:flonum?;;l1:y7:flzero?;;l1:y11:flpositive?;;l1:y11"
|
||||
":flnegative?;;l1:y10:flinteger?;;l1:y6:flnan?;;l1:y11:flinfinite?;;l1:"
|
||||
"y9:flfinite?;;l1:y7:fleven?;;l1:y6:flodd?;;l1:y3:fl+;;l1:y3:fl*;;l1:y3"
|
||||
":fl-;;l1:y3:fl/;;l1:y5:flneg;;l1:y5:flabs;;l1:y5:flgcd;;l1:y6:flexpt;;"
|
||||
"l1:y6:flsqrt;;l1:y7:flfloor;;l1:y9:flceiling;;l1:y10:fltruncate;;l1:y7"
|
||||
":flround;;l1:y5:flexp;;l1:y5:fllog;;l1:y5:flsin;;l1:y5:flcos;;l1:y5:fl"
|
||||
"tan;;l1:y6:flasin;;l1:y6:flacos;;l1:y6:flatan;;l1:y4:fl<?;;l1:y5:fl<=?"
|
||||
";;l1:y4:fl>?;;l1:y5:fl>=?;;l1:y4:fl=?;;l1:y5:fl!=?;;l1:y5:flmin;;l1:y5"
|
||||
":flmax;;l1:y11:flremainder;;l1:y8:flmodulo;;l1:y10:flquotient;;l1:y8:f"
|
||||
"lmodquo;;l1:y14:flonum->fixnum;;l1:y14:flonum->string;;l1:y14:string->"
|
||||
"flonum;;l1:y8:list-cat;;l1:y9:last-pair;;l1:y9:list-head;;l1:y4:meme;;"
|
||||
"l1:y4:asse;;l1:y8:reverse!;;l1:y9:circular?;;l1:y5:cons*;;l1:y5:list*;"
|
||||
";l1:y8:char-cmp;;l1:y11:char-ci-cmp;;l1:y10:string-cat;;l1:y15:string-"
|
||||
"position;;l1:y10:string-cmp;;l1:y13:string-ci-cmp;;l1:y10:vector-cat;;"
|
||||
"l1:y12:bytevector=?;;l1:y16:bytevector->list;;l1:y16:list->bytevector;"
|
||||
";l1:y13:subbytevector;;l1:y19:standard-input-port;;l1:y20:standard-out"
|
||||
"put-port;;l1:y19:standard-error-port;;l1:y9:tty-port?;;l1:y15:port-fol"
|
||||
"d-case?;;l1:y19:set-port-fold-case!;;l1:y11:rename-file;;l1:y17:curren"
|
||||
"t-directory;;l1:y19:directory-separator;;l1:y4:void;;l1:y5:void?;;py20"
|
||||
":*user-name-registry*;y6:hidden;;py25:make-readonly-environment;y6:hid"
|
||||
"den;;py27:make-controlled-environment;y6:hidden;;py20:make-sld-environ"
|
||||
"ment;y6:hidden;;py21:make-repl-environment;y6:hidden;;py19:find-librar"
|
||||
"y-in-env;y6:hidden;;py16:root-environment;y6:hidden;;py16:repl-environ"
|
||||
"ment;y6:hidden;;py17:empty-environment;y6:hidden;;py32:make-historic-r"
|
||||
"eport-environment;y6:hidden;;py16:r5rs-environment;y6:hidden;;py21:r5r"
|
||||
"s-null-environment;y6:hidden;;py9:*verbose*;y6:hidden;;py7:*quiet*;y6:"
|
||||
"hidden;;py25:compile-and-run-core-expr;y6:hidden;;py17:evaluate-top-fo"
|
||||
"rm;y6:hidden;;py10:run-script;y6:hidden;;py11:run-program;y6:hidden;;p"
|
||||
"y22:repl-evaluate-top-form;y6:hidden;;py9:repl-read;y6:hidden;;py17:re"
|
||||
"pl-exec-command;y6:hidden;;py14:repl-from-port;y6:hidden;;py13:run-ben"
|
||||
"chmark;y6:hidden;;py4:repl;y6:hidden;;),&0{%1,,,,#0#1#2#3&0{%1.0,'(y1:"
|
||||
"w),.1v?{'(l2:y6:scheme;y5:write;)]2}'(y1:t),.1v?{'(l2:y6:scheme;y4:tim"
|
||||
"e;)]2}'(y1:p),.1v?{'(l2:y6:scheme;y4:repl;)]2}'(y1:r),.1v?{'(l2:y6:sch"
|
||||
"eme;y4:read;)]2}'(y1:v),.1v?{'(l2:y6:scheme;y4:r5rs;)]2}'(y1:u),.1v?{'"
|
||||
"(l2:y6:scheme;y9:r5rs-null;)]2}'(y1:d),.1v?{'(l2:y6:scheme;y4:load;)]2"
|
||||
"}'(y1:z),.1v?{'(l2:y6:scheme;y4:lazy;)]2}'(y1:s),.1v?{'(l2:y6:scheme;y"
|
||||
"15:process-context;)]2}'(y1:i),.1v?{'(l2:y6:scheme;y7:inexact;)]2}'(y1"
|
||||
":f),.1v?{'(l2:y6:scheme;y4:file;)]2}'(y1:e),.1v?{'(l2:y6:scheme;y4:eva"
|
||||
"l;)]2}'(y1:o),.1v?{'(l2:y6:scheme;y7:complex;)]2}'(y1:h),.1v?{'(l2:y6:"
|
||||
"scheme;y4:char;)]2}'(y1:l),.1v?{'(l2:y6:scheme;y11:case-lambda;)]2}'(y"
|
||||
"1:a),.1v?{'(l2:y6:scheme;y3:cxr;)]2}'(y1:b),.1v?{'(l2:y6:scheme;y4:bas"
|
||||
"e;)]2}'(y1:x),.1v?{'(l2:y6:scheme;y3:box;)]2}.1I0?{.1,'(y4:srfi),l2]2}"
|
||||
".1,l1]2}.!0&0{%1${&0{%1n,'(l1:y5:begin;),V12]1},.3,@(y20:*root-name-re"
|
||||
"gistry*),@(y11:name-lookup)[03}z]1}.!1&0{%3'1,.1V4,.0,.3A3,.0?{.4,.1sd"
|
||||
"]5}.1,.5,.5cc,'1,.4V5]5}.!2&0{%1&0{%1.0,'(y5:const),l2]1},.1,@(y20:*ro"
|
||||
"ot-name-registry*),@(y11:name-lookup)[13}.!3.4d,.5a,,#0.0,.6,.5,.7,.(i"
|
||||
"10),&5{%2.1u?{${.2,:0^[01},.1,${'(l1:y5:skint;),:1^[01},:3^[23}.1p~?{$"
|
||||
"{.2,:0^[01},.1,${n,.6c,'(y5:skint)c,:1^[01},:3^[23}${${.4,:0^[01},.3,$"
|
||||
"{${.9a,:2^[01},:1^[01},:3^[03}.1d,.1,:4^[22}.!0.0^_1[52},@(y10:%25for-"
|
||||
"each1)[02}",
|
||||
"ort;;l3:y4:box?;y1:x;i111;;l3:y3:box;y1:x;i111;;l3:y5:unbox;y1:x;i111;"
|
||||
";l3:y8:set-box!;y1:x;i111;;l3:y6:format;i28;i48;;l1:y7:fprintf;;l1:y19"
|
||||
":format-pretty-print;;l1:y18:format-fixed-print;;l1:y17:format-fresh-l"
|
||||
"ine;;l1:y18:format-help-string;;l1:y4:set&;;l1:y7:lambda*;;l1:y4:body;"
|
||||
";l1:y5:letcc;;l1:y6:withcc;;l1:y13:syntax-lambda;;l1:y13:syntax-length"
|
||||
";;l1:y7:record?;;l1:y11:make-record;;l1:y13:record-length;;l1:y10:reco"
|
||||
"rd-ref;;l1:y11:record-set!;;l1:y6:expand;;l1:y7:fixnum?;;l1:y11:fxposi"
|
||||
"tive?;;l1:y11:fxnegative?;;l1:y7:fxeven?;;l1:y6:fxodd?;;l1:y7:fxzero?;"
|
||||
";l1:y3:fx+;;l1:y3:fx*;;l1:y3:fx-;;l1:y3:fx/;;l1:y10:fxquotient;;l1:y11"
|
||||
":fxremainder;;l1:y8:fxmodquo;;l1:y8:fxmodulo;;l1:y8:fxeucquo;;l1:y8:fx"
|
||||
"eucrem;;l1:y5:fxneg;;l1:y5:fxabs;;l1:y4:fx<?;;l1:y5:fx<=?;;l1:y4:fx>?;"
|
||||
";l1:y5:fx>=?;;l1:y4:fx=?;;l1:y5:fx!=?;;l1:y5:fxmin;;l1:y5:fxmax;;l1:y5"
|
||||
":fxneg;;l1:y5:fxabs;;l1:y5:fxgcd;;l1:y6:fxexpt;;l1:y6:fxsqrt;;l1:y5:fx"
|
||||
"not;;l1:y5:fxand;;l1:y5:fxior;;l1:y5:fxxor;;l1:y5:fxsll;;l1:y5:fxsrl;;"
|
||||
"l1:y14:fixnum->flonum;;l1:y14:fixnum->string;;l1:y14:string->fixnum;;l"
|
||||
"1:y7:flonum?;;l1:y7:flzero?;;l1:y11:flpositive?;;l1:y11:flnegative?;;l"
|
||||
"1:y10:flinteger?;;l1:y6:flnan?;;l1:y11:flinfinite?;;l1:y9:flfinite?;;l"
|
||||
"1:y7:fleven?;;l1:y6:flodd?;;l1:y3:fl+;;l1:y3:fl*;;l1:y3:fl-;;l1:y3:fl/"
|
||||
";;l1:y5:flneg;;l1:y5:flabs;;l1:y5:flgcd;;l1:y6:flexpt;;l1:y6:flsqrt;;l"
|
||||
"1:y7:flfloor;;l1:y9:flceiling;;l1:y10:fltruncate;;l1:y7:flround;;l1:y5"
|
||||
":flexp;;l1:y5:fllog;;l1:y5:flsin;;l1:y5:flcos;;l1:y5:fltan;;l1:y6:flas"
|
||||
"in;;l1:y6:flacos;;l1:y6:flatan;;l1:y4:fl<?;;l1:y5:fl<=?;;l1:y4:fl>?;;l"
|
||||
"1:y5:fl>=?;;l1:y4:fl=?;;l1:y5:fl!=?;;l1:y5:flmin;;l1:y5:flmax;;l1:y11:"
|
||||
"flremainder;;l1:y8:flmodulo;;l1:y10:flquotient;;l1:y8:flmodquo;;l1:y14"
|
||||
":flonum->fixnum;;l1:y14:flonum->string;;l1:y14:string->flonum;;l1:y8:l"
|
||||
"ist-cat;;l1:y9:last-pair;;l1:y9:list-head;;l1:y4:meme;;l1:y4:asse;;l1:"
|
||||
"y4:memp;;l1:y4:assp;;l1:y8:reverse!;;l1:y9:circular?;;l1:y5:cons*;;l1:"
|
||||
"y5:list*;;l1:y8:char-cmp;;l1:y11:char-ci-cmp;;l1:y10:string-cat;;l1:y1"
|
||||
"5:string-position;;l1:y10:string-cmp;;l1:y13:string-ci-cmp;;l1:y10:vec"
|
||||
"tor-cat;;l1:y12:bytevector=?;;l1:y16:bytevector->list;;l1:y16:list->by"
|
||||
"tevector;;l1:y13:subbytevector;;l1:y19:standard-input-port;;l1:y20:sta"
|
||||
"ndard-output-port;;l1:y19:standard-error-port;;l1:y9:tty-port?;;l1:y15"
|
||||
":port-fold-case?;;l1:y19:set-port-fold-case!;;l1:y11:rename-file;;l1:y"
|
||||
"17:current-directory;;l1:y19:directory-separator;;l1:y4:void;;l1:y5:vo"
|
||||
"id?;;py20:*user-name-registry*;y6:hidden;;py25:make-readonly-environme"
|
||||
"nt;y6:hidden;;py27:make-controlled-environment;y6:hidden;;py20:make-sl"
|
||||
"d-environment;y6:hidden;;py21:make-repl-environment;y6:hidden;;py19:fi"
|
||||
"nd-library-in-env;y6:hidden;;py16:root-environment;y6:hidden;;py16:rep"
|
||||
"l-environment;y6:hidden;;py17:empty-environment;y6:hidden;;py32:make-h"
|
||||
"istoric-report-environment;y6:hidden;;py16:r5rs-environment;y6:hidden;"
|
||||
";py21:r5rs-null-environment;y6:hidden;;py9:*verbose*;y6:hidden;;py7:*q"
|
||||
"uiet*;y6:hidden;;py25:compile-and-run-core-expr;y6:hidden;;py17:evalua"
|
||||
"te-top-form;y6:hidden;;py10:run-script;y6:hidden;;py11:run-program;y6:"
|
||||
"hidden;;py22:repl-evaluate-top-form;y6:hidden;;py9:repl-read;y6:hidden"
|
||||
";;py17:repl-exec-command;y6:hidden;;py14:repl-from-port;y6:hidden;;py1"
|
||||
"3:run-benchmark;y6:hidden;;py4:repl;y6:hidden;;),&0{%1,,,,#0#1#2#3&0{%"
|
||||
"1.0,'(y1:w),.1v?{'(l2:y6:scheme;y5:write;)]2}'(y1:t),.1v?{'(l2:y6:sche"
|
||||
"me;y4:time;)]2}'(y1:p),.1v?{'(l2:y6:scheme;y4:repl;)]2}'(y1:r),.1v?{'("
|
||||
"l2:y6:scheme;y4:read;)]2}'(y1:v),.1v?{'(l2:y6:scheme;y4:r5rs;)]2}'(y1:"
|
||||
"u),.1v?{'(l2:y6:scheme;y9:r5rs-null;)]2}'(y1:d),.1v?{'(l2:y6:scheme;y4"
|
||||
":load;)]2}'(y1:z),.1v?{'(l2:y6:scheme;y4:lazy;)]2}'(y1:s),.1v?{'(l2:y6"
|
||||
":scheme;y15:process-context;)]2}'(y1:i),.1v?{'(l2:y6:scheme;y7:inexact"
|
||||
";)]2}'(y1:f),.1v?{'(l2:y6:scheme;y4:file;)]2}'(y1:e),.1v?{'(l2:y6:sche"
|
||||
"me;y4:eval;)]2}'(y1:o),.1v?{'(l2:y6:scheme;y7:complex;)]2}'(y1:h),.1v?"
|
||||
"{'(l2:y6:scheme;y4:char;)]2}'(y1:l),.1v?{'(l2:y6:scheme;y11:case-lambd"
|
||||
"a;)]2}'(y1:a),.1v?{'(l2:y6:scheme;y3:cxr;)]2}'(y1:b),.1v?{'(l2:y6:sche"
|
||||
"me;y4:base;)]2}'(y1:x),.1v?{'(l2:y6:scheme;y3:box;)]2}.1I0?{.1,'(y4:sr"
|
||||
"fi),l2]2}.1,l1]2}.!0&0{%1${&0{%1n,'(l1:y5:begin;),V12]1},.3,@(y20:*roo"
|
||||
"t-name-registry*),@(y11:name-lookup)[03}z]1}.!1&0{%3'1,.1V4,.0,.3A3,.0"
|
||||
"?{.4,.1sd]5}.1,.5,.5cc,'1,.4V5]5}.!2&0{%1&0{%1.0,'(y5:const),l2]1},.1,"
|
||||
"@(y20:*root-name-registry*),@(y11:name-lookup)[13}.!3.4d,.5a,,#0.0,.6,"
|
||||
".5,.7,.(i10),&5{%2.1u?{${.2,:0^[01},.1,${'(l1:y5:skint;),:1^[01},:3^[2"
|
||||
"3}.1p~?{${.2,:0^[01},.1,${n,.6c,'(y5:skint)c,:1^[01},:3^[23}${${.4,:0^"
|
||||
"[01},.3,${${.9a,:2^[01},:1^[01},:3^[03}.1d,.1,:4^[22}.!0.0^_1[52},@(y1"
|
||||
"0:%25for-each1)[02}",
|
||||
|
||||
"C", 0,
|
||||
"@(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",
|
||||
|
||||
"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,.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"
|
||||
|
@ -1523,32 +1523,32 @@ char *t_code[] = {
|
|||
"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"
|
||||
"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"
|
||||
"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),@"
|
||||
"(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?"
|
||||
"{${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"
|
||||
"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,."
|
||||
"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"
|
||||
"ot supported:),@(y7:x-error)[03}}@(y7:*quiet*)~,.0?{.0}{@(y9:*verbose*"
|
||||
")}_1?{${.2,'(l3:y8:<number>;y8:<number>;y8:<number>;),@(y11:sexp-match"
|
||||
"?)[02}}{f}?{@(y9:*verbose*)?{Po,'(s8:IMPORT: )W4}{Po,'(s10:; import: )"
|
||||
"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"
|
||||
"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"
|
||||
"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"
|
||||
"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,."
|
||||
"4,f,@(y5:xform)[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"
|
||||
":xform)[03},@(y25:compile-and-run-core-expr)[21",
|
||||
"xpand-integrable)[03},@(y25:compile-and-run-core-expr)[31}.0Y0?{${.4,."
|
||||
"4,f,@(y5:xpand)[03},@(y25:compile-and-run-core-expr)[31}${.4,.4d,.4,@("
|
||||
"y10:xpand-call)[03},@(y25:compile-and-run-core-expr)[31}${.3,.3,f,@(y5"
|
||||
":xpand)[03},@(y25:compile-and-run-core-expr)[21",
|
||||
|
||||
"P", "eval",
|
||||
"%!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}.!"
|
||||
"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",
|
||||
"%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,'("
|
||||
|
@ -1706,7 +1710,7 @@ char *t_code[] = {
|
|||
"-options*)",
|
||||
|
||||
"C", 0,
|
||||
"'(s5:0.3.9)@!(y15:*skint-version*)",
|
||||
"'(s5:0.4.9)@!(y15:*skint-version*)",
|
||||
|
||||
"P", "skint-main",
|
||||
"%0,,,,,#0#1#2#3#4&0{%2${.2,@(y16:read-from-string)[01},${@(y4:list),.3"
|
||||
|
|
Loading…
Reference in a new issue