mirror of
https://github.com/false-schemers/skint.git
synced 2024-12-25 21:58:54 +01:00
switched to new env/name registry model!
This commit is contained in:
parent
6caa364255
commit
1c509cf5ac
2 changed files with 497 additions and 471 deletions
402
src/t.scm
402
src/t.scm
|
@ -187,8 +187,8 @@
|
|||
; <core> -> (ref <id>)
|
||||
; <core> -> (set! <id> <core>)
|
||||
; <core> -> (set& <id>)
|
||||
; <core> -> (gref <global>)
|
||||
; <core> -> (gset! <global> <core>)
|
||||
; <core> -> (gref <gid>) where <gid> is a symbolic index in a global store
|
||||
; <core> -> (gset! <gid> <core>)
|
||||
; <core> -> (lambda <ids> <core>) where <ids> -> (<id> ...) | (<id> ... . <id>) | <id>
|
||||
; <core> -> (lambda* (<arity> <core>) ...) where <arity> -> (<cnt> <rest?>)
|
||||
; <core> -> (letcc <id> <core>)
|
||||
|
@ -198,14 +198,14 @@
|
|||
; <core> -> (call <core> <core> ...)
|
||||
; <core> -> (integrable <ig> <core> ...) where <ig> is an index in the integrables table
|
||||
; <core> -> (asm <igs>) where <igs> is ig string leaving result in ac, e.g. "'2,'1+"
|
||||
; <core> -> (once <gid> <core>) where gid is always resolved as global
|
||||
; <core> -> (once <gid> <core>)
|
||||
|
||||
; NB: (begin) is legit, returns unspecified value
|
||||
; on top level, these four extra core forms are legal:
|
||||
|
||||
; <core> -> (define <id> <core>)
|
||||
; <core> -> (define-syntax <id> <transformer>)
|
||||
; <core> -> (define-library <listname> <library>)
|
||||
; <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:
|
||||
|
@ -271,12 +271,13 @@
|
|||
; <integrable> -> <fixnum serving as index in internal integrables table>
|
||||
; <transformer> -> <procedure of exp and env returning exp>
|
||||
; <library> -> <vector of init-code and export-alist>
|
||||
; <library> -> <vector of init-code and export-alist>
|
||||
; <void> -> <void value used to initialize uninitialized locations>
|
||||
|
||||
(define-syntax location? box?)
|
||||
(define-syntax make-location box)
|
||||
(define-syntax location-val unbox)
|
||||
(define-syntax location-set-val! set-box!)
|
||||
(define-syntax val-void? void?)
|
||||
(define-syntax val-core? pair?)
|
||||
(define-syntax val-transformer? procedure?)
|
||||
(define-syntax val-integrable? integrable?)
|
||||
|
@ -287,15 +288,16 @@
|
|||
(define-syntax library-exports (syntax-rules () [(_ l) (vector-ref l 1)]))
|
||||
(define-syntax library-set-exports! (syntax-rules () [(_ l v) (vector-set! l 1 v)]))
|
||||
|
||||
(define (location-special? l) (not (pair? (unbox l))))
|
||||
(define (location-special? l) (not (val-core? (location-val l))))
|
||||
(define (new-id sym den getlits) (define p (list sym den getlits)) (lambda () p))
|
||||
(define-syntax new-id? procedure?)
|
||||
(define (old-sym id) (car (id)))
|
||||
(define (old-den id) (cadr (id)))
|
||||
(define (old-literals id) ((or (caddr (id)) (lambda () '()))))
|
||||
(define (id? x) (or (symbol? x) (procedure? x)))
|
||||
(define (id? x) (or (symbol? x) (new-id? x)))
|
||||
(define (id->sym id) (if (symbol? id) id (old-sym id)))
|
||||
|
||||
; take a possibly renamed target id, and find image for nid
|
||||
; take a possibly renamed target id, and find image for nid in the same context
|
||||
(define (id-rename-as id nid)
|
||||
(let loop ([id id])
|
||||
(if (symbol? id) nid
|
||||
|
@ -309,7 +311,8 @@
|
|||
; containing either a <special> or a <core> value. In normal case, <core> value is (ref <gid>),
|
||||
; where <gid> is a key in run-time store, aka *globals*. Environments should allocate new locations
|
||||
; as needed, so every identifier gets mapped to one. Expand-time environments are represented as
|
||||
; two-argument procedures, where the second argument is an access type symbol.
|
||||
; two-argument procedures, where the second argument (at) is an access type symbol, one of the
|
||||
; four possible values: ref, set!, define, define-syntax (defines are requests to allocate)
|
||||
|
||||
(define (extend-xenv-local id val env)
|
||||
(let ([loc (make-location val)])
|
||||
|
@ -340,28 +343,29 @@
|
|||
(define (check-syntax sexp pat msg)
|
||||
(unless (sexp-match? pat sexp) (x-error msg sexp)))
|
||||
|
||||
(define lambda-id (new-id 'lambda (make-location 'lambda) #f))
|
||||
(define begin-id (new-id 'begin (make-location 'begin) #f))
|
||||
(define define-id (new-id 'define (make-location 'define) #f))
|
||||
; popular context-independent ids retaining their original meaning (not for id=?)
|
||||
(define lambda-id (new-id 'lambda (make-location 'lambda) #f))
|
||||
(define begin-id (new-id 'begin (make-location 'begin) #f))
|
||||
(define define-id (new-id 'define (make-location 'define) #f))
|
||||
(define define-syntax-id (new-id 'define-syntax (make-location 'define-syntax) #f))
|
||||
(define syntax-quote-id (new-id 'syntax-quote (make-location 'syntax-quote) #f))
|
||||
(define syntax-quote-id (new-id 'syntax-quote (make-location 'syntax-quote) #f))
|
||||
|
||||
; xform receives Scheme s-expressions and returns either Core Scheme <core>
|
||||
; (always a pair) or special-form, which is either a builtin (a symbol) or
|
||||
; a transformer (a procedure). Appos? flag is true when the context can
|
||||
; allow xform to return a special; otherwise, only <core> is returned.
|
||||
; xform 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
|
||||
; be returned.
|
||||
|
||||
(define (xform appos? sexp env)
|
||||
(cond [(id? sexp)
|
||||
(let ([hval (xform-ref sexp env)])
|
||||
(cond [appos? hval]
|
||||
[(val-integrable? hval) ; integrable id-syntax
|
||||
(list 'ref (integrable-global hval))]
|
||||
[(val-transformer? hval) ; id-syntax
|
||||
(xform appos? (hval sexp env) env)]
|
||||
[(not (val-core? hval)) ; other special used out of context
|
||||
(x-error "improper use of syntax form" hval)]
|
||||
[else hval]))] ; core
|
||||
(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-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)]
|
||||
[else
|
||||
|
@ -384,11 +388,13 @@
|
|||
[(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 appos?)]
|
||||
[(import) (xform-import head tail env appos?)]
|
||||
[(define-library) (xform-define-library head tail env #f)]
|
||||
[(import) (xform-import head tail env #f)]
|
||||
[else (cond [(val-integrable? hval) (xform-integrable hval tail env)]
|
||||
[(val-transformer? hval) (xform 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)])]))]))
|
||||
|
||||
(define (xform-quote tail env)
|
||||
|
@ -530,7 +536,7 @@
|
|||
[(define-syntax) ; internal
|
||||
(if (and (list2? tail) (id? (car tail)))
|
||||
(let* ([id (car tail)] [init (cadr tail)]
|
||||
[env (extend-xenv-local id '(undefined) env)])
|
||||
[env (extend-xenv-local id '(begin) env)]) ; placeholder val
|
||||
(loop env (cons id ids) (cons init inits) (cons #t nids) rest))
|
||||
(x-error "improper define-syntax form" first))]
|
||||
[else
|
||||
|
@ -564,7 +570,7 @@
|
|||
(loop (cdr ids) (cdr inits) (cdr nids) sets lids)])))
|
||||
|
||||
(define (xform-begin tail env appos?) ; non-internal
|
||||
(if (list? tail)
|
||||
(if (list? tail) ; FIXME: make sure that (begin (begin) x (begin)) == x !! (for include)
|
||||
(if (list1? tail)
|
||||
(xform appos? (car tail) env) ; (begin x) == x
|
||||
(cons 'begin (map (lambda (sexp) (xform #f sexp env)) tail)))
|
||||
|
@ -684,11 +690,11 @@
|
|||
[sexp-tail (begin (if (negative? seq-len) (fail)) (list-tail sexp seq-len))]
|
||||
[seq (reverse (list-tail (reverse sexp) tail-len))]
|
||||
[vars (list-ids (car pat) #t not-pat-literal?)])
|
||||
(define (match1 sexp)
|
||||
(map cdr (match (car pat) sexp '())))
|
||||
(append
|
||||
(apply map (cons list (cons vars (map match1 seq))))
|
||||
(match (cddr pat) sexp-tail bindings)))]
|
||||
(define (match1 sexp)
|
||||
(map cdr (match (car pat) sexp '())))
|
||||
(append
|
||||
(apply map (cons list (cons vars (map match1 seq))))
|
||||
(match (cddr pat) sexp-tail bindings)))]
|
||||
[(pair? sexp)
|
||||
(match (car pat) (car sexp)
|
||||
(match (cdr pat) (cdr sexp) bindings))]
|
||||
|
@ -879,10 +885,8 @@
|
|||
(let ([ic&ex (preprocess-library s env)])
|
||||
(return (car ic&ex) (cdr ic&ex)))]
|
||||
[(and (list1+? s) (andmap libpart? s))
|
||||
; NB: this is 1/3 of listname->library interface
|
||||
; FIXME: should lookup in env using listname!
|
||||
(let* ([listname (xform-sexp->datum s)] [sym (listname->symbol listname)]
|
||||
[id (id-rename-as sid sym)] [val (xform-ref id env)]) ; or should id be just sym?
|
||||
; NB: this is part 1/4 of listname <-> library interaction
|
||||
(let* ([listname (xform-sexp->datum s)] [val (xform-ref listname env)])
|
||||
(unless (val-library? val) (x-error "invalid library" listname val))
|
||||
(return (library-code val) (library-exports val)))]
|
||||
[else
|
||||
|
@ -910,7 +914,8 @@
|
|||
[include-ci-id (new-id 'include-ci (make-location (make-include-transformer #t)) #f)])
|
||||
(define (toesps ee esps) ;=> ((<old-id> . <new-id>) ...)
|
||||
(cond [(null? ee) (reverse! esps)]
|
||||
[(id? (car ee)) (let ([s (id->sym (car ee))]) (toesps (cdr ee) (adjoin-esps (list (cons s s)) esps)))]
|
||||
[(id? (car ee)) (let ([s (id->sym (car ee))])
|
||||
(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)))]))
|
||||
|
@ -959,30 +964,6 @@
|
|||
[(eq? (car decl) ld-begin-id)
|
||||
(loop decls code eal esps (append forms (xform-sexp->datum (cdr decl))))]))))))
|
||||
|
||||
; make functional read-only environment from import al,
|
||||
; allowing fall-through to env for lib://foo/bar ids
|
||||
; FIXME: should be replaced with make-controlled-environment
|
||||
(define (ial->controlled-environment ial make-nid env)
|
||||
(let ([v (make-vector 1 '())]) ; new ids go here
|
||||
(lambda (id at)
|
||||
(cond [(procedure? id)
|
||||
(and (memq at '(ref const)) (old-den id))]
|
||||
[(assq id (vector-ref v 0)) =>
|
||||
cdr] ; full access to new locations
|
||||
[(assq id ial) => ; read-only access to imports, no shadowing?
|
||||
(lambda (b) (and (memq at '(ref const)) (cdr b)))]
|
||||
[(symbol-libname? id) ; read-only acess to libs
|
||||
(and (memq at '(ref const)) (env id at))]
|
||||
[(memq at '(ref const set! define))
|
||||
(let ([loc (make-location (list 'ref (make-nid id)))])
|
||||
(vector-set! v 0 (cons (cons id loc) (vector-ref v 0)))
|
||||
loc)]
|
||||
[(memq at '(define-syntax))
|
||||
(let ([loc (make-location '(undefined))])
|
||||
(vector-set! v 0 (cons (cons id loc) (vector-ref v 0)))
|
||||
loc)]
|
||||
[else #f]))))
|
||||
|
||||
(define (preprocess-library sexp env) ;=> (init-core . exports-eal)
|
||||
; generator of globals: use prefix or temporary if no prefix is given
|
||||
(define (make-nid id)
|
||||
|
@ -995,8 +976,8 @@
|
|||
[decls (if lid (cddr sexp) (cdr sexp))] ; NB: mac env is used below to resolve lib names!
|
||||
[icimesfs (preprocess-library-declarations (cons (car sexp) decls) env)])
|
||||
(let* ([code (car icimesfs)] [ial (cadr icimesfs)] [esps (caddr icimesfs)] [forms (cadddr icimesfs)]
|
||||
[cenv (ial->controlled-environment ial make-nid env)] [eal '()]) ; FIXME
|
||||
(define (scan body code*) ;=> extended with side-effect on cenv
|
||||
[cenv (make-controlled-environment ial make-nid env)] [eal '()]) ; m-c-e is defined below
|
||||
(define (scan body code*) ;=> code* extended, with side-effect on cenv
|
||||
(if (null? body)
|
||||
code*
|
||||
(let ([first (car body)] [rest (cdr body)])
|
||||
|
@ -1037,7 +1018,7 @@
|
|||
(let loop ([esps esps] [eal eal])
|
||||
(if (null? esps)
|
||||
(cons combined-code (reverse! eal))
|
||||
(let* ([lid (caar esps)] [eid (cdar esps)] [loc (cenv lid 'const)])
|
||||
(let* ([lid (caar esps)] [eid (cdar esps)] [loc (cenv lid 'ref)])
|
||||
(cond [(not loc) (x-error "cannot export id" lid)]
|
||||
[(location-special? loc) (loop (cdr esps) (cons (cons eid loc) eal))]
|
||||
[else (let ([val (location-val loc)])
|
||||
|
@ -1045,26 +1026,28 @@
|
|||
(loop (cdr esps) (cons (cons eid (make-location (list 'const (cadr val)))) eal))
|
||||
(x-error "cannot export code alias id" lid val)))]))))))))
|
||||
|
||||
; note: define-library semantics does not depend on lexical context, and, as a syntax definition,
|
||||
; Note: define-library semantics does not depend on lexical context, and, as a syntax definition,
|
||||
; 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 appos?) ; non-internal
|
||||
(if (and (list2+? tail) (list1+? (car tail)))
|
||||
(let* ([name (xform-sexp->datum (car tail))] [sym (if (symbol? name) name (listname->symbol name))]
|
||||
[libform (cons head (cons sym (cdr tail)))] ; head is used as seed id for renamings
|
||||
[ic&ex (preprocess-library libform env)] [lid (id-rename-as head sym)])
|
||||
; NB: this is 1/3 of listname->library interface FIXME: lid should be listname!
|
||||
(list 'define-library lid (make-library (car ic&ex) (cdr ic&ex))))
|
||||
(define (xform-define-library head tail env top?) ; non-internal
|
||||
(if (and (list2+? tail) (listname? (car tail)))
|
||||
(let* ([listname (xform-sexp->datum (car tail))]
|
||||
[prefix (and top? (listname->symbol listname))]
|
||||
; NB: head is used as seed id for renamingsl fixed prefix used on top only
|
||||
[libform (cons head (if prefix (cons prefix (cdr tail)) (cdr tail)))]
|
||||
[ic&ex (preprocess-library libform env)])
|
||||
; NB: this is part 2/4 of listname <-> library interaction
|
||||
(list 'define-library listname (make-library (car ic&ex) (cdr ic&ex))))
|
||||
(x-error "improper define-library form" (cons head tail))))
|
||||
|
||||
; 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 appos?) ; non-internal
|
||||
(define (xform-import head tail env top?)
|
||||
(if (list? tail)
|
||||
(let ([ic&ex (preprocess-import-sets (cons head tail) env)])
|
||||
; NB: this is 1/3 of listname->library interface FIXME
|
||||
; NB: this is part 3/4 of listname <-> library interaction
|
||||
(list 'import (make-library (car ic&ex) (cdr ic&ex))))
|
||||
(x-error "improper import form" (cons head tail))))
|
||||
|
||||
|
@ -1208,7 +1191,8 @@
|
|||
[once (gid exp)
|
||||
(find-free exp b)]
|
||||
[(define define-syntax define-library import) tail
|
||||
(c-error "misplaced definition form" x)])))
|
||||
(c-error "misplaced definition form" x)]
|
||||
[else (c-error "unexpected <core> form" x)])))
|
||||
|
||||
(define find-sets*
|
||||
(lambda (x* v)
|
||||
|
@ -1258,10 +1242,11 @@
|
|||
[once (gid exp)
|
||||
(find-sets exp v)]
|
||||
[(define define-syntax define-library import) tail
|
||||
(c-error "misplaced definition form" x)])))
|
||||
(c-error "misplaced definition form" x)]
|
||||
[else (c-error "unexpected <core> form" x)])))
|
||||
|
||||
(define codegen
|
||||
; x: Scheme Core expression to compile
|
||||
; x: <core> expression to compile
|
||||
; l: local var list (with #f placeholders for nonvar slots)
|
||||
; f: free var list
|
||||
; s: set! var set
|
||||
|
@ -1556,7 +1541,8 @@
|
|||
(begin (gset! ,gid (quote #t)) ,exp))
|
||||
l f s g k port)]
|
||||
[(define define-syntax define-library import) tail
|
||||
(c-error "misplaced definition form" x)])))
|
||||
(c-error "misplaced definition form" x)]
|
||||
[else (c-error "unexpected <core> form" x)])))
|
||||
|
||||
(define (compile-to-string x)
|
||||
(let ([p (open-output-string)])
|
||||
|
@ -1683,21 +1669,9 @@
|
|||
(cons (listname-segment->string (car l)) (cons sep r))))
|
||||
(file-resolve-relative-to-base-path (string-append* (reverse (cons ext r))) basepath))))
|
||||
|
||||
(define (symbol-libname? sym) ; FIXME: shouldn't exist!
|
||||
(let* ([str (symbol->string sym)] [sl (string-length str)])
|
||||
(and (< 6 sl)
|
||||
(char=? (string-ref str 0) #\l)
|
||||
(char=? (string-ref str 1) #\i)
|
||||
(char=? (string-ref str 2) #\b)
|
||||
(char=? (string-ref str 3) #\:)
|
||||
(char=? (string-ref str 4) #\/)
|
||||
(char=? (string-ref str 5) #\/)
|
||||
(substring str 6 sl))))
|
||||
|
||||
|
||||
; hacks for locating library files
|
||||
|
||||
(define *library-path-list* '("./"))
|
||||
(define *library-path-list* '("./")) ; will do for now
|
||||
|
||||
(define (add-library-path! path)
|
||||
(if (base-path-separator path)
|
||||
|
@ -1735,98 +1709,20 @@
|
|||
|
||||
|
||||
;---------------------------------------------------------------------------------------------
|
||||
; Environments FIXME
|
||||
;---------------------------------------------------------------------------------------------
|
||||
|
||||
; new lookup procedure for explicit macro environments
|
||||
|
||||
(define (env-lookup id env at) ;=> location (| #f)
|
||||
(if (procedure? id)
|
||||
; nonsymbolic ids can't be (re)defined
|
||||
(case at [(ref set!) (old-den id)] [else #f])
|
||||
(let loop ([env env])
|
||||
(cond [(pair? env) ; imported: ref-only
|
||||
(if (eq? (caar env) id)
|
||||
(case at [(ref) (cdar env)] [else #f])
|
||||
(loop (cdr env)))]
|
||||
[(vector? env) ; extendable, keeps imported? flags
|
||||
(let* ([n (vector-length env)] [i (immediate-hash id n)]
|
||||
[al (vector-ref env i)] [p (assq id al)])
|
||||
(if p ; p is (key loc imported?)
|
||||
(case at
|
||||
[(ref) (cadr p)]
|
||||
[else (if (caddr p) #f (cadr p))]) ; imported can be ref-d only
|
||||
; implicitly/on demand append integrables and "naked" globals
|
||||
(let ([loc (make-location (or (lookup-integrable id) (list 'ref id)))])
|
||||
(vector-set! env i (cons (list id loc #f) al)) ; not imported
|
||||
loc)))]
|
||||
[(string? env) ; module prefix = module internals: full access
|
||||
(and (memq at '(ref set! define define-syntax))
|
||||
(let ([gid (string->symbol (string-append env (symbol->string id)))])
|
||||
(env-lookup gid *root-environment* 'ref)))]
|
||||
[(procedure? env)
|
||||
(env id at)]
|
||||
[else ; finite env
|
||||
#f]))))
|
||||
|
||||
|
||||
; make explicit root environment (a vector) and fill it
|
||||
|
||||
(define *root-environment*
|
||||
(make-vector 101 '())) ; use prime number
|
||||
|
||||
(define (define-in-root-environment! name loc imported?)
|
||||
(let* ([env *root-environment*] [n (vector-length env)]
|
||||
[i (immediate-hash name n)] [al (vector-ref env i)]
|
||||
[p (assq name al)])
|
||||
(if p
|
||||
(begin (set-car! (cdr p) loc) (set-car! (cddr p) imported?))
|
||||
(vector-set! env i (cons (list name loc imported?) al)))))
|
||||
|
||||
; put handmade ones first!
|
||||
|
||||
(define-in-root-environment! 'include
|
||||
(make-location (make-include-transformer #f)) #t)
|
||||
|
||||
(define-in-root-environment! 'include-ci
|
||||
(make-location (make-include-transformer #t)) #t)
|
||||
|
||||
(define-in-root-environment! 'cond-expand
|
||||
(make-location (make-cond-expand-transformer)) #t)
|
||||
|
||||
; now put the builtins (lazily) and others
|
||||
|
||||
(let ([put! (lambda (k loc) (define-in-root-environment! k loc #t))])
|
||||
(let loop ([l (initial-transformers)])
|
||||
(if (null? l) 'ok
|
||||
(let ([p (car l)] [l (cdr l)])
|
||||
(let ([k (car p)] [v (cdr p)])
|
||||
(cond
|
||||
[(or (symbol? v) (number? v))
|
||||
(put! k (make-location v))
|
||||
(loop l)]
|
||||
[(and (pair? v) (eq? (car v) 'syntax-rules))
|
||||
(body
|
||||
(define (sr-env id at)
|
||||
(env-lookup id *root-environment* at))
|
||||
(define sr-v
|
||||
(if (id? (cadr v))
|
||||
(syntax-rules* sr-env (cadr v) (caddr v) (cdddr v))
|
||||
(syntax-rules* sr-env #f (cadr v) (cddr v))))
|
||||
(put! k (make-location sr-v))
|
||||
(loop l))]))))))
|
||||
|
||||
(define (root-environment id at)
|
||||
(env-lookup id *root-environment* at))
|
||||
|
||||
|
||||
;---------------------------------------------------------------------------------------------
|
||||
; Expand-time root name registry initialized with built-in and predefined values
|
||||
; Expand-time name registries
|
||||
;---------------------------------------------------------------------------------------------
|
||||
|
||||
; name registries are htables (vectors with one extra slot) of alists ((sym . <location>) ...)
|
||||
; last slot is used for list names (library names), the rest for regular symbolic names
|
||||
(define *root-name-registry* (make-vector 102 '())) ; vector of prime+1 length
|
||||
|
||||
(define (make-name-registry size) ; size is approx. count of buckets
|
||||
(define primes ; some nice-looking primes in 1 - 1000 range
|
||||
'(1 11 31 41 61 71 101 131 151 181 191 211 241 251 271 281 311 331 401 421 431
|
||||
461 491 521 541 571 601 631 641 661 691 701 751 761 811 821 881 911 941 971))
|
||||
(define prime (cond [(member size primes <=) => car] [else 991]))
|
||||
(make-vector (+ prime 1) '())) ; last bucket used for listnames
|
||||
|
||||
(define (eal->name-registry eal) (vector eal '()))
|
||||
|
||||
(define (name-lookup nr name mkdefval) ;=> loc | #f
|
||||
(let* ([n-1 (- (vector-length nr) 1)] [i (if (pair? name) n-1 (immediate-hash name n-1))]
|
||||
|
@ -1841,6 +1737,9 @@
|
|||
loc)]))]
|
||||
[else #f])))
|
||||
|
||||
; public registry for all non-hidden skint names
|
||||
(define *root-name-registry* (make-name-registry 300))
|
||||
|
||||
; register integrable procedures
|
||||
(let loop ([i 0])
|
||||
(let ([li (lookup-integrable i)]) ;=> #f, #<void>, or integrable (li == i)
|
||||
|
@ -1850,18 +1749,19 @@
|
|||
(when (symbol? name) (name-lookup *root-name-registry* name (lambda (name) i)))))
|
||||
(loop (+ i 1)))))
|
||||
|
||||
; register initial transformers
|
||||
; register initial define-syntax transformers coming from s.scm and this file
|
||||
(let loop ([l (initial-transformers)])
|
||||
(unless (null? l)
|
||||
(let* ([p (car l)] [l (cdr l)] [k (car p)] [v (cdr p)])
|
||||
(cond [(or (symbol? v) (integrable? v))
|
||||
(name-lookup *root-name-registry* k (lambda (name) v))
|
||||
(name-lookup *root-name-registry* k (lambda (n) v))
|
||||
(loop l)]
|
||||
[(and (pair? v) (eq? (car v) 'syntax-rules))
|
||||
(body
|
||||
(define (sr-env id at)
|
||||
; FIXME: for now, we have to keep using old root env
|
||||
(env-lookup id *root-environment* at))
|
||||
(if (new-id? id) (old-den id)
|
||||
(name-lookup *root-name-registry* id
|
||||
(lambda (n) (list 'ref n)))))
|
||||
(define sr-v
|
||||
(if (id? (cadr v))
|
||||
(syntax-rules* sr-env (cadr v) (caddr v) (cdddr v))
|
||||
|
@ -1870,9 +1770,9 @@
|
|||
(loop l))]))))
|
||||
|
||||
; register handcoded transformers
|
||||
(name-lookup *root-name-registry* 'include (lambda (name) (make-include-transformer #f)))
|
||||
(name-lookup *root-name-registry* 'include-ci (lambda (name) (make-include-transformer #t)))
|
||||
(name-lookup *root-name-registry* 'cond-expand (lambda (name) (make-cond-expand-transformer)))
|
||||
(name-lookup *root-name-registry* 'include (lambda (n) (make-include-transformer #f)))
|
||||
(name-lookup *root-name-registry* 'include-ci (lambda (n) (make-include-transformer #t)))
|
||||
(name-lookup *root-name-registry* 'cond-expand (lambda (n) (make-cond-expand-transformer)))
|
||||
|
||||
; register standard libraries as well as (repl) library for interactive environment
|
||||
; ... while doing that, bind missing standard names as refs to constant globals
|
||||
|
@ -1889,20 +1789,13 @@
|
|||
(define (get-library! listname) ;=> <library>
|
||||
(location-val
|
||||
(name-lookup *root-name-registry* listname
|
||||
(lambda (ln)
|
||||
(let ([l (make-library '(begin) '())])
|
||||
; for now, mirror libraries in old registry too... FIXME: just return l
|
||||
(define-in-root-environment! (listname->symbol listname) (make-location l) #t)
|
||||
l)))))
|
||||
(lambda (ln) (make-library '(begin) '())))))
|
||||
(define (put-loc! library k loc)
|
||||
(let* ([eal (library-exports library)] [p (assq k eal)])
|
||||
(cond [p (set-cdr! p loc)]
|
||||
[else (library-set-exports! library (cons (cons k loc) eal))])))
|
||||
(define (get-loc name)
|
||||
; FIXME: switch root-environment to *root-name-registry*, and use this:
|
||||
; (name-lookup *root-name-registry* name (lambda (name) (list 'const name)))
|
||||
; for now, for libraries to work, we have to share old root env locations:
|
||||
(root-environment name 'ref))
|
||||
(name-lookup *root-name-registry* name (lambda (name) (list 'const name))))
|
||||
(let loop ([name (car r)] [keys (cdr r)])
|
||||
(cond [(null? keys) ; all go to (repl)
|
||||
(put-loc! (get-library! '(repl)) name (get-loc name))]
|
||||
|
@ -1920,7 +1813,7 @@
|
|||
(close-port b) (complex? v b) (cond v u b) (cond-expand b) (cons v b) (current-error-port b)
|
||||
(current-input-port v b) (current-output-port v b) (define v u b) (define-record-type b)
|
||||
(define-syntax v u b) (define-values b) (denominator v b) (do v u b) (dynamic-wind v b) (else v u b)
|
||||
(eof-object b) (eof-object? v b) (eq? v b) (equal? v b) (eqv? v b) (error b)
|
||||
(eof-object b) (eof-object? v b) (eq? v b) (equal? v b) (eqv? v b) (error b) (library b)
|
||||
(error-object-irritants b) (error-object-message b) (error-object? b) (even? v b) (exact b)
|
||||
(exact-integer-sqrt b) (exact-integer? b) (exact? v b) (expt v b) (features b) (file-error? b)
|
||||
(floor v b) (floor-quotient b) (floor-remainder b) (floor/ b) (flush-output-port b) (for-each v b)
|
||||
|
@ -1969,14 +1862,105 @@
|
|||
(write w v) (current-jiffy t) (current-second t) (jiffies-per-second t) (write-shared w)
|
||||
(write-simple w)
|
||||
; skint extras go into (repl) only - not to be confused with (scheme repl)
|
||||
(box?) (box) (unbox) (set-box!)
|
||||
(set&) (lambda*) (body) (letcc) (withcc) (syntax-lambda) (syntax-length)
|
||||
(box?) (box) (unbox) (set-box!) (record?) (make-record) (record-length) (record-ref)
|
||||
(record-set!) (fixnum?) (fxpositive?) (fxnegative?) (fxeven?) (fxodd?) (fx+) (fx*) (fx-) (fx/)
|
||||
(fxquotient) (fxremainder) (fxmodquo) (fxmodulo) (fxeucquo) (fxeucrem) (fxneg)
|
||||
(fxabs) (fx<?) (fx<=?) (fx>?) (fx>=?) (fx=?) (fx!=? x y) (fxmin) (fxmax) (fxneg) (fxabs) (fxgcd)
|
||||
(fxexpt) (fxsqrt) (fxnot) (fxand) (fxior) (fxxor) (fxsll) (fxsrl) (fixnum->flonum) (fixnum->string)
|
||||
(string->fixnum) (flonum?) (flzero?) (flpositive?) (flnegative?) (flinteger?) (flnan?)
|
||||
(flinfinite?) (flfinite?) (fleven?) (flodd?) (fl+) (fl*) (fl-) (fl/) (flneg) (flabs) (flgcd)
|
||||
(flexpt) (flsqrt) (flfloor) (flceiling) (fltruncate) (flround) (flexp) (fllog) (flsin) (flcos)
|
||||
(fltan) (flasin) (flacos) (flatan (y)) (fl<?) (fl<=?) (fl>?) (fl>=?) (fl=?) (fl!=?) (flmin)
|
||||
(flmax) (flonum->fixnum) (flonum->string) (string->flonum) (list-cat) (meme) (asse) (reverse!)
|
||||
(circular?) (char-cmp) (char-ci-cmp) (string-cat) (string-position) (string-cmp) (string-ci-cmp)
|
||||
(vector-cat) (bytevector->list) (list->bytevector) (subbytevector) (standard-input-port)
|
||||
(standard-output-port) (standard-error-port) (rename-file)
|
||||
))
|
||||
|
||||
; private registry for names introduced in repl
|
||||
(define *user-name-registry* (make-name-registry 100))
|
||||
|
||||
|
||||
;---------------------------------------------------------------------------------------------
|
||||
; Evaluation
|
||||
; Environments
|
||||
;---------------------------------------------------------------------------------------------
|
||||
|
||||
; make read-only environment from a registry
|
||||
(define (make-readonly-environment rr)
|
||||
(lambda (name at)
|
||||
(cond [(new-id? name) ; nonsymbolic ids can't be (re)bound here
|
||||
(case at [(ref set!) (old-den name)] [else #f])]
|
||||
[(eq? at 'ref) ; for reference only: do not allow any allocation
|
||||
(name-lookup rr name #f)] ; no allocation callback
|
||||
[else #f])))
|
||||
|
||||
; controlled environments for libraries and programs using import al, global name generator, and env
|
||||
; allowing fall-through to env for list names (so libraries can still be fetched by list name)
|
||||
(define (make-controlled-environment ial global use-env)
|
||||
(define ir (eal->name-registry ial)) ; handmade import registry from ial
|
||||
(define lr (make-name-registry 100)) ; local registry for new names
|
||||
(lambda (name at)
|
||||
(cond [(new-id? name) ; nonsymbolic ids can't be (re)bound here
|
||||
(case at [(ref set!) (old-den name)] [else #f])]
|
||||
[(eq? at 'ref) ; for reference only: try not to alloc
|
||||
(name-lookup lr name ; return if in local registry
|
||||
(lambda (n) ; ok, not in lr: check ir
|
||||
(or (name-lookup ir name #f) ; if in ir, return it as-is
|
||||
(if (symbol? name)
|
||||
(list 'ref (global name)) ; alloc in repl store
|
||||
(use-env name 'ref)))))] ; listnames looked up in use-env
|
||||
[(memq at '(set! define)) ; same action for both operations
|
||||
; works only for symbolic names; auto-allocates but does not shadow
|
||||
(and (symbol? name) ; no set!/define to list names
|
||||
(name-lookup lr name ; return if in local registry
|
||||
(lambda (n) ; ok, not in lr: check ir and fail if it's there
|
||||
(and (not (name-lookup ir name #f)) ; not imported? alloc:
|
||||
(list 'ref (global name))))))]
|
||||
[(eq? at 'define-syntax) ; for introducing new syntax definition
|
||||
; works for all names; auto-allocates but does not shadow
|
||||
(name-lookup lr name ; return if in local registry
|
||||
(lambda (n) ; not in lr: check ir and fail if it's there
|
||||
(and (not (name-lookup ir name #f)) ; not imported? alloc:
|
||||
(void))))]
|
||||
[else #f])))
|
||||
|
||||
; mutable environment from two registries; new bindings go to user registry
|
||||
(define (make-repl-environment rr ur prefix) ; prefix for allocated globals
|
||||
(define (global name) (fully-qualified-library-prefixed-name prefix name))
|
||||
(lambda (name at)
|
||||
(cond [(new-id? name) ; nonsymbolic ids can't be (re)bound here
|
||||
(case at [(ref set!) (old-den name)] [else #f])]
|
||||
[(eq? at 'ref) ; for reference only: try not to alloc
|
||||
(name-lookup ur name ; return if in user registry
|
||||
(lambda (n) ; ok, not in ur: check rr
|
||||
(or (name-lookup rr name #f) ; if in rr, return it as-is
|
||||
(and (symbol? name) (list 'ref (global name))))))] ; alloc in repl store
|
||||
[(eq? at 'set!) ; for assigning new values to variables
|
||||
; works only for symbolic names; auto-allocates but does not shadow
|
||||
(and (symbol? name) ; no set! to list names
|
||||
(name-lookup ur name ; return if in user registry
|
||||
(lambda (n) ; ok, not in ur: check rr and fail if it's there
|
||||
(and (not (name-lookup rr name #f)) ; not there? alloc:
|
||||
(list 'ref (global name))))))]
|
||||
[(eq? at 'define) ; for introducing new definition
|
||||
; works only for symbolic names; auto-allocates and shadows
|
||||
(and (symbol? name) ; no define for list names
|
||||
(name-lookup ur name ; return if in user registry
|
||||
(lambda (n) ; ok, not in ur: alloc
|
||||
(list 'ref (global name)))))]
|
||||
[(eq? at 'define-syntax) ; for introducing new syntax definition
|
||||
; works for all names; auto-allocates and shadows
|
||||
(name-lookup ur name ; return if in user registry
|
||||
(lambda (n) ; ok, not in ur: alloc
|
||||
(void)))]
|
||||
[else #f])))
|
||||
|
||||
(define root-environment
|
||||
(make-readonly-environment *root-name-registry*))
|
||||
|
||||
(define repl-environment
|
||||
(make-repl-environment *root-name-registry* *user-name-registry* 'repl://))
|
||||
|
||||
;---------------------------------------------------------------------------------------------
|
||||
; REPL
|
||||
|
@ -1984,9 +1968,6 @@
|
|||
|
||||
(define *verbose* #f)
|
||||
|
||||
(define (repl-environment id at) ; FIXME: need to happen in a "repl." namespace
|
||||
(env-lookup id *root-environment* at))
|
||||
|
||||
(define (repl-compile-and-run-core-expr core)
|
||||
(when *verbose* (display "TRANSFORM =>") (newline) (write core) (newline))
|
||||
(unless (val-core? core) (x-error "unexpected transformed output" core))
|
||||
|
@ -2029,7 +2010,7 @@
|
|||
(cadr core) env))
|
||||
(when *verbose* (display "SYNTAX INSTALLED: ") (write (cadr core)) (newline)))]
|
||||
[(eq? hval 'define-library) ; use new protocol for top-level envs
|
||||
(let* ([core (xform-define-library (car x) (cdr x) env #f)]
|
||||
(let* ([core (xform-define-library (car x) (cdr x) env #t)]
|
||||
[loc (xenv-lookup env (cadr core) 'define-syntax)])
|
||||
(if loc ; location or #f
|
||||
(let ([l (caddr core)]) (location-set-val! loc l))
|
||||
|
@ -2037,7 +2018,7 @@
|
|||
(cadr core) env))
|
||||
(when *verbose* (display "LIBRARY INSTALLED: ") (write (cadr core)) (newline)))]
|
||||
[(eq? hval 'import) ; splice as definitions
|
||||
(let* ([core (xform-import (car x) (cdr x) env #f)] ; core is (import <library>)
|
||||
(let* ([core (xform-import (car x) (cdr x) env #t)] ; core is (import <library>)
|
||||
[l (cadr core)] [code (library-code l)] [eal (library-exports l)])
|
||||
(define (define-alias p)
|
||||
(repl-eval-top-form ; FIXME: this is not optimal -- too much fuss
|
||||
|
@ -2068,6 +2049,10 @@
|
|||
[(say hello) (display "Well, hello!\n" op)]
|
||||
[(ref <symbol>) (write (repl-environment (car args) 'ref) op) (newline op)]
|
||||
[(ref (* * ...)) (write (repl-environment (car args) 'ref) op) (newline op)]
|
||||
[(rnr) (write *root-name-registry* op) (newline op)]
|
||||
[(rnr *) (write (name-lookup *root-name-registry* (car args) #f) op) (newline op)]
|
||||
[(unr) (write *user-name-registry* op) (newline op)]
|
||||
[(unr *) (write (name-lookup *user-name-registry* (car args) #f) op) (newline op)]
|
||||
[(peek *)
|
||||
(cond [(string? (car args))
|
||||
(display (if (file-exists? (car args))
|
||||
|
@ -2085,6 +2070,10 @@
|
|||
(display " ,verbose on -- turn verbosity on\n" op)
|
||||
(display " ,verbose off -- turn verbosity off\n" op)
|
||||
(display " ,ref <name> -- show current denotation for <name>\n" op)
|
||||
(display " ,rnr -- show root name registry\n" op)
|
||||
(display " ,rnr <name> -- lookup name in root registry\n" op)
|
||||
(display " ,unr -- show user name registry\n" op)
|
||||
(display " ,unr <name> -- lookup name in user registry\n" op)
|
||||
(display " ,help -- this help\n" op)]
|
||||
[else
|
||||
(display "syntax error in repl command\n" op)
|
||||
|
@ -2126,11 +2115,12 @@
|
|||
(repl-eval-top-form '(main #f) repl-environment)
|
||||
(close-input-port iport))
|
||||
|
||||
(define (run-repl)
|
||||
(define (repl)
|
||||
(set-current-file-stack! '())
|
||||
(repl-from-port
|
||||
(current-input-port)
|
||||
repl-environment
|
||||
"skint]"))
|
||||
|
||||
(define run-repl repl)
|
||||
|
||||
|
|
566
t.c
566
t.c
|
@ -136,6 +136,8 @@ char *t_code[] = {
|
|||
|
||||
"A", "location-set-val!", "set-box!",
|
||||
|
||||
"A", "val-void?", "void?",
|
||||
|
||||
"A", "val-core?", "pair?",
|
||||
|
||||
"A", "val-transformer?", "procedure?",
|
||||
|
@ -164,6 +166,8 @@ char *t_code[] = {
|
|||
"P", "new-id",
|
||||
"%3,#0.3,.3,.3,l3.!0.0,&1{%0:0^]0}]4",
|
||||
|
||||
"A", "new-id?", "procedure?",
|
||||
|
||||
"P", "old-sym",
|
||||
"%1${.2[00}a]1",
|
||||
|
||||
|
@ -229,26 +233,30 @@ char *t_code[] = {
|
|||
|
||||
"P", "xform",
|
||||
"%3${.3,@(y3:id?)[01}?{${.4,.4,@(y9:xform-ref)[02},.1?{.0]4}.0U0?{.0U7,"
|
||||
"'(y3:ref),l2]4}.0K0?{.3,${.6,.6,.5[02},.3,@(y5:xform)[43}.0p~?{.0,'(s2"
|
||||
"7:improper 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!"
|
||||
")[72}'(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:la"
|
||||
"mbda*),.1v?{.6,.3,@(y13:xform-lambda*)[72}'(y5:letcc),.1v?{.6,.3,@(y11"
|
||||
":xform-letcc)[72}'(y6:withcc),.1v?{.6,.3,@(y12:xform-withcc)[72}'(y4:b"
|
||||
"ody),.1v?{.4,.7,.4,@(y10:xform-body)[73}'(y5:begin),.1v?{.4,.7,.4,@(y1"
|
||||
"1:xform-begin)[73}'(y6:define),.1v?{.6,.3,@(y12:xform-define)[72}'(y13"
|
||||
":define-syntax),.1v?{.6,.3,@(y19:xform-define-syntax)[72}'(y12:syntax-"
|
||||
"quote),.1v?{.6,.3,@(y18:xform-syntax-quote)[72}'(y13:syntax-lambda),.1"
|
||||
"v?{.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:"
|
||||
"xform-syntax-length)[72}'(y12:syntax-error),.1v?{.6,.3,@(y18:xform-syn"
|
||||
"tax-error)[72}'(y14:define-library),.1v?{.4,.7,.4,.6,@(y20:xform-defin"
|
||||
"e-library)[74}'(y6:import),.1v?{.4,.7,.4,.6,@(y12:xform-import)[74}.1U"
|
||||
"0?{.6,.3,.3,@(y16:xform-integrable)[73}.1K0?{.6,${.9,.9,.6[02},.6,@(y5"
|
||||
":xform)[73}.1V0?{.5,.2,'(s23:improper use of library),@(y7:x-error)[73"
|
||||
"}.6,.3,.3,@(y10:xform-call)[73",
|
||||
"'(y5:const),l2]4}.0K0?{.3,${.6,.6,.5[02},.3,@(y5:xform)[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}.1U0?{.6"
|
||||
",.3,.3,@(y16:xform-integrable)[73}.1K0?{.6,${.9,.9,.6[02},.6,@(y5:xfor"
|
||||
"m)[73}.1V0?{.5,.2,'(s23:improper use of library),@(y7:x-error)[73}.1Y8"
|
||||
"?{.5,.2,'(s24:use of uninitialized val),@(y7:x-error)[73}.1p~?{.1,'(s2"
|
||||
"7:improper use of syntax form),@(y7:x-error)[72}.6,.3,.3,@(y10:xform-c"
|
||||
"all)[73",
|
||||
|
||||
"P", "xform-quote",
|
||||
"%2${.2,@(y6:list1?)[01}?{${.2a,@(y17:xform-sexp->datum)[01},'(y5:quote"
|
||||
|
@ -338,12 +346,12 @@ char *t_code[] = {
|
|||
",@(y7:id->sym)[01},@(y6:gensym)[01},${.(i11),.3,.6,@(y13:add-local-var"
|
||||
")[03},.9,.(i14),.3c,.(i14),.5c,.(i14),.7c,.4,:0^[(i15)5}.4,'(s20:impro"
|
||||
"per define form),@(y7:x-error)[(i11)2}'(y13:define-syntax),.1v?{${.4,@"
|
||||
"(y6:list2?)[01}?{${.4a,@(y3:id?)[01}}{f}?{.2a,.3da,${.(i10),'(l1:y9:un"
|
||||
"defined;),.5,@(y17:extend-xenv-local)[03},.8,.(i13),tc,.(i13),.4c,.(i1"
|
||||
"3),.6c,.4,:0^[(i14)5}.4,'(s27:improper define-syntax form),@(y7:x-erro"
|
||||
"r)[(i11)2}.1K0?{.5,${.9,.8,.6[02}c,.(i10),.(i10),.(i10),.(i10),:0^[(i1"
|
||||
"1)5}:1,.7,.(i12),.(i12)A8,.(i12)A8,.(i12)A8,@(y12:xform-labels)[(i11)6"
|
||||
"}:1,.1,.6,.6A8,.6A8,.6A8,@(y12:xform-labels)[56}.!0.0^_1[35",
|
||||
"(y6:list2?)[01}?{${.4a,@(y3:id?)[01}}{f}?{.2a,.3da,${.(i10),'(l1:y5:be"
|
||||
"gin;),.5,@(y17:extend-xenv-local)[03},.8,.(i13),tc,.(i13),.4c,.(i13),."
|
||||
"6c,.4,:0^[(i14)5}.4,'(s27:improper define-syntax form),@(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:xform-labels)[(i11)6}:1,"
|
||||
".1,.6,.6A8,.6A8,.6A8,@(y12:xform-labels)[56}.!0.0^_1[35",
|
||||
|
||||
"P", "xform-labels",
|
||||
"%6,#0${.5,&0{%1t,.1q]1},@(y6:andmap)[02}.!0n,n,.5,.5,.5,,#0.0,.(i12),."
|
||||
|
@ -494,29 +502,28 @@ char *t_code[] = {
|
|||
"03}.2a,${'(y4:only),.3,@(y12:id-rename-as)[02},${'(y6:except),.4,@(y12"
|
||||
":id-rename-as)[02},${'(y6:rename),.5,@(y12:id-rename-as)[02},${'(y6:pr"
|
||||
"efix),.6,@(y12:id-rename-as)[02},${'(y7:library),.7,@(y12:id-rename-as"
|
||||
")[02},,#0.(i10),.7,.(i10),.4,.4,.(i12),.9,.9,.(i12),.(i14),&(i10){%2,#"
|
||||
"0${.3,@(y7:list2+?)[01}?{.1dap}{f}.!0.0^?{:0,.2aq?{${.3dd,@(y3:id?),@("
|
||||
"y6:andmap)[02}}{f}}{f}?{.1,.3,&2{%2${${:1dd,@(y7:id->sym),@(y5:%25map1"
|
||||
")[02},.4,,#0.0,&1{%2.0u?{.0]2}.1,.1aaA0?{${.3,.3d,:0^[02},.1ac]2}.1,.1"
|
||||
"d,:0^[22}.!0.0^_1[02},.1,:0[22},.2da,:5^[32}.0^?{:1,.2aq?{${.3dd,@(y3:"
|
||||
"id?),@(y6:andmap)[02}}{f}}{f}?{.1,.3,&2{%2${${:1dd,@(y7:id->sym),@(y5:"
|
||||
"%25map1)[02},.4,,#0.0,&1{%2.0u?{.0]2}.1,.1aaA0?{.1,.1d,:0^[22}${.3,.3d"
|
||||
",:0^[02},.1ac]2}.!0.0^_1[02},.1,:0[22},.2da,:5^[32}.0^?{:2,.2aq?{${.3d"
|
||||
",@(y6:list2?)[01}?{${.3dda,@(y3:id?)[01}}{f}}{f}}{f}?{.1,.3,&2{%2${${:"
|
||||
"1dda,@(y7:id->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,@(y17:xform-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}?{${:9,."
|
||||
"4,@(y18:preprocess-library)[02},.0d,.1a,.5[42}${.3,@(y7:list1+?)[01}?{"
|
||||
"${.3,:7^,@(y6:andmap)[02}}{f}?{${.3,@(y17:xform-sexp->datum)[01},${.2,"
|
||||
"@(y16:listname->symbol)[01},${.2,:8,@(y12:id-rename-as)[02},${:9,.3,@("
|
||||
"y9:xform-ref)[02},.0V0~?{${.2,.6,'(s15:invalid library),@(y7:x-error)["
|
||||
"03}}'1,.1V4,'0,.2V4,.8[72}.1,'(s28:invalid import set in import),@(y7:"
|
||||
"x-error)[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-co"
|
||||
"de)[02},:1d,:0^[23},.1a,:0^[32}.!0.0^_1[(i11)3",
|
||||
")[02},,#0.(i10),.9,.3,.3,.(i11),.8,.8,.(i11),.(i13),&9{%2,#0${.3,@(y7:"
|
||||
"list2+?)[01}?{.1dap}{f}.!0.0^?{:0,.2aq?{${.3dd,@(y3:id?),@(y6:andmap)["
|
||||
"02}}{f}}{f}?{.1,.3,&2{%2${${:1dd,@(y7:id->sym),@(y5:%25map1)[02},.4,,#"
|
||||
"0.0,&1{%2.0u?{.0]2}.1,.1aaA0?{${.3,.3d,:0^[02},.1ac]2}.1,.1d,:0^[22}.!"
|
||||
"0.0^_1[02},.1,:0[22},.2da,:5^[32}.0^?{:1,.2aq?{${.3dd,@(y3:id?),@(y6:a"
|
||||
"ndmap)[02}}{f}}{f}?{.1,.3,&2{%2${${:1dd,@(y7:id->sym),@(y5:%25map1)[02"
|
||||
"},.4,,#0.0,&1{%2.0u?{.0]2}.1,.1aaA0?{.1,.1d,:0^[22}${.3,.3d,:0^[02},.1"
|
||||
"ac]2}.!0.0^_1[02},.1,:0[22},.2da,:5^[32}.0^?{:2,.2aq?{${.3d,@(y6:list2"
|
||||
"?)[01}?{${.3dda,@(y3:id?)[01}}{f}}{f}}{f}?{.1,.3,&2{%2${${:1dda,@(y7:i"
|
||||
"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"
|
||||
",.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"
|
||||
",.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"
|
||||
"},:1d,:0^[23},.1a,:0^[32}.!0.0^_1[(i11)3",
|
||||
|
||||
"P", "preprocess-library-declarations",
|
||||
"%2${'(s35:invalid library declarations syntax),'(l3:y4:<id>;l3:y4:<id>"
|
||||
|
@ -565,15 +572,6 @@ char *t_code[] = {
|
|||
"[75}:1,.1aq?{${.2d,@(y17:xform-sexp->datum)[01},.7L6,.6,.6,.6,.5,:0^[7"
|
||||
"5}f]7}.!0.0^_1[(i17)5",
|
||||
|
||||
"P", "ial->controlled-environment",
|
||||
"%3n,'1V2,.0,.3,.5,.4,&4{%2.0K0?{'(l2:y3:ref;y5:const;),.2A0?{.0,@(y7:o"
|
||||
"ld-den)[21}f]2}'0,:3V4,.1A3,.0?{.0d]3}:0,.2A3,.0?{.0,'(l2:y3:ref;y5:co"
|
||||
"nst;),.5A0?{.0d]5}f]5}${.4,@(y15:symbol-libname?)[01}?{'(l2:y3:ref;y5:"
|
||||
"const;),.4A0?{.3,.3,:1[42}f]4}'(l4:y3:ref;y5:const;y4:set!;y6:define;)"
|
||||
",.4A0?{${.4,:2[01},'(y3:ref),l2b,'0,:3V4,.1,.5cc,'0,:3V5.0]5}'(l1:y13:"
|
||||
"define-syntax;),.4A0?{'(l1:y9:undefined;)b,'0,:3V4,.1,.5cc,'0,:3V5.0]5"
|
||||
"}f]4}]4",
|
||||
|
||||
"P", "preprocess-library",
|
||||
"%2,#0.1,&1{%1${:0,@(y7:list2+?)[01}?{${:0da,@(y3:id?)[01}}{f}?{${.2,@("
|
||||
"y7:id->sym)[01},${:0da,@(y7:id->sym)[01},@(y37:fully-qualified-library"
|
||||
|
@ -581,7 +579,7 @@ char *t_code[] = {
|
|||
"nvalid library syntax),'(l3:y1:*;y1:*;y3:...;),.5,@(y12:check-syntax)["
|
||||
"03}${.3,@(y7:list2+?)[01}?{${.3da,@(y3:id?)[01}}{f}?{${.3da,@(y7:id->s"
|
||||
"ym)[01}}{f},.0?{.2dd}{.2d},${.6,.3,.7ac,@(y31:preprocess-library-decla"
|
||||
"rations)[02},.0a,.1da,.2dda,.3ddda,${.(i11),.(i10)^,.6,@(y27:ial->cont"
|
||||
"rations)[02},.0a,.1da,.2dda,.3ddda,${.(i11),.(i10)^,.6,@(y27:make-cont"
|
||||
"rolled-environment)[03},n,,#0.0,.3,&2{%2.0u?{.1]2}.0d,.1a,.0p?{.0a,.1d"
|
||||
",${:0,.4,t,@(y5:xform)[03},'(y5:begin),.1q?{.1L0~?{${.5,'(s19:improper"
|
||||
" begin form),@(y7:x-error)[02}}.6,.5,.3L6,:1^[72}'(y6:define),.1q?{${."
|
||||
|
@ -598,18 +596,18 @@ char *t_code[] = {
|
|||
"(y16:xform-integrable)[03}c,.5,:1^[72}.6,${:0,.7,f,@(y5:xform)[03}c,.5"
|
||||
",:1^[72}.3,${:0,.4,f,@(y5:xform)[03}c,.2,:1^[42}.!0${n,.6,.4^[02},.0A9"
|
||||
",'(y5:begin)c,${.(i13)?{.2,.(i14),'(y4:once),l3}{.2},.(i11),@(y11:adjo"
|
||||
"in-code)[02},.4,.8,,#0.8,.1,.5,&3{%2.0u?{.1A9,:0c]2}.0aa,.1ad,${'(y5:c"
|
||||
"onst),.4,:2[02},.0~?{.2,'(s16:cannot export id),@(y7:x-error)[52}${.2,"
|
||||
"@(y17:location-special?)[01}?{.4,.1,.3cc,.4d,:1^[52}.0z,'(l2:y3:ref;y5"
|
||||
":const;),.1aA0?{.5,.1da,'(y5:const),l2b,.4cc,.5d,:1^[62}.0,.4,'(s27:ca"
|
||||
"nnot export code alias id),@(y7:x-error)[63}.!0.0^_1[(i16)2",
|
||||
"in-code)[02},.4,.8,,#0.8,.1,.5,&3{%2.0u?{.1A9,:0c]2}.0aa,.1ad,${'(y3:r"
|
||||
"ef),.4,:2[02},.0~?{.2,'(s16:cannot export id),@(y7:x-error)[52}${.2,@("
|
||||
"y17:location-special?)[01}?{.4,.1,.3cc,.4d,:1^[52}.0z,'(l2:y3:ref;y5:c"
|
||||
"onst;),.1aA0?{.5,.1da,'(y5:const),l2b,.4cc,.5d,:1^[62}.0,.4,'(s27:cann"
|
||||
"ot export code alias id),@(y7:x-error)[63}.!0.0^_1[(i16)2",
|
||||
|
||||
"P", "xform-define-library",
|
||||
"%4${.3,@(y7:list2+?)[01}?{${.3a,@(y7:list1+?)[01}}{f}?{${.3a,@(y17:xfo"
|
||||
"rm-sexp->datum)[01},.0Y0?{.0}{${.2,@(y16:listname->symbol)[01}},.3d,.1"
|
||||
"c,.3c,${.7,.3,@(y18:preprocess-library)[02},${.4,.7,@(y12:id-rename-as"
|
||||
")[02},.1d,.2a,V12,.1,'(y14:define-library),l3]9}.1,.1c,'(s28:improper "
|
||||
"define-library form),@(y7:x-error)[42",
|
||||
"%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"
|
||||
",.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",
|
||||
"%4.1L0?{${.4,.4,.4c,@(y22:preprocess-import-sets)[02},.0d,.1a,V12,'(y6"
|
||||
|
@ -689,8 +687,8 @@ char *t_code[] = {
|
|||
"1n]1},@(y13:apply-to-list)[22}'(y4:once),.1aq?{.0d,.2,&1{%2:0,.2,@(y9:"
|
||||
"find-free)[22},@(y13:apply-to-list)[22}'(l4:y6:define;y13:define-synta"
|
||||
"x;y14:define-library;y6:import;),.1aA0?{.0d,.1,&1{%!0:0,'(s25:misplace"
|
||||
"d definition form),@(y7:c-error)[12},@(y13:apply-to-list)[22}'(y16:rec"
|
||||
"ord-case-miss)]2",
|
||||
"d definition form),@(y7:c-error)[12},@(y13:apply-to-list)[22}.0,'(s22:"
|
||||
"unexpected <core> form),@(y7:c-error)[22",
|
||||
|
||||
"P", "find-sets*",
|
||||
"%2.0u?{n]2}${.3,.3d,@(y10:find-sets*)[02},${.4,.4a,@(y9:find-sets)[02}"
|
||||
|
@ -722,7 +720,7 @@ char *t_code[] = {
|
|||
"aq?{.0d,.2,&1{%2:0,.2,@(y9:find-sets)[22},@(y13:apply-to-list)[22}'(l4"
|
||||
":y6:define;y13:define-syntax;y14:define-library;y6:import;),.1aA0?{.0d"
|
||||
",.1,&1{%!0:0,'(s25:misplaced definition form),@(y7:c-error)[12},@(y13:"
|
||||
"apply-to-list)[22}'(y16:record-case-miss)]2",
|
||||
"apply-to-list)[22}.0,'(s22:unexpected <core> form),@(y7:c-error)[22",
|
||||
|
||||
"P", "codegen",
|
||||
"%7'(y5:quote),.1aq?{.0d,.6,.8,&2{%1.0,t,.1v?{:0,'(ct)W0}{f,.1v?{:0,'(c"
|
||||
|
@ -851,7 +849,7 @@ char *t_code[] = {
|
|||
"c,'(y2:if)c,@(y7:codegen)[27},@(y13:apply-to-list)[72}'(l4:y6:define;y"
|
||||
"13:define-syntax;y14:define-library;y6:import;),.1aA0?{.0d,.1,&1{%!0:0"
|
||||
",'(s25:misplaced definition form),@(y7:c-error)[12},@(y13:apply-to-lis"
|
||||
"t)[72}'(y16:record-case-miss)]7",
|
||||
"t)[72}.0,'(s22:unexpected <core> form),@(y7:c-error)[72",
|
||||
|
||||
"P", "compile-to-string",
|
||||
"%1P51,${.2,f,${n,.8,@(y9:find-free)[02},n,n,n,.9,@(y7:codegen)[07}.0P9"
|
||||
|
@ -938,11 +936,6 @@ char *t_code[] = {
|
|||
":2cA8,@(y14:string-append*)[01},@(y34:file-resolve-relative-to-base-pa"
|
||||
"th)[22}.!0.0^_1[42",
|
||||
|
||||
"P", "symbol-libname?",
|
||||
"%1.0X4,.0S3,.0,'6<?{'(cl),'0,.3S4C=?{'(ci),'1,.3S4C=?{'(cb),'2,.3S4C=?"
|
||||
"{'(c:),'3,.3S4C=?{'(c/),'4,.3S4C=?{'(c/),'5,.3S4C=?{.0,'6,.3S7]3}f]3}f"
|
||||
"]3}f]3}f]3}f]3}f]3}f]3",
|
||||
|
||||
"C", 0,
|
||||
"'(l1:s2:./;)@!(y19:*library-path-list*)",
|
||||
|
||||
|
@ -972,52 +965,23 @@ char *t_code[] = {
|
|||
"%2.1,'(y1:?),.2Y0?{.2}{${.4,@(y16:listname->symbol)[01}},@(y13:symbol-"
|
||||
"append)[23",
|
||||
|
||||
"P", "env-lookup",
|
||||
"%3.0K0?{.2,'(l2:y3:ref;y4:set!;),.1A1?{.1,@(y7:old-den)[41}f]4}.1,,#0."
|
||||
"2,.5,.2,&3{%1.0p?{:2,.1aaq?{:1,'(y3:ref),.1v?{.1ad]2}f]2}.0d,:0^[11}.0"
|
||||
"V0?{.0V3,.0,:2H2,.0,.3V4,.0,:2A3,.0?{:1,'(y3:ref),.1v?{.1da]6}.1dda?{f"
|
||||
"]6}.1da]6}:2U5,.0?{.0}{:2,'(y3:ref),l2}_1b,.2,f,.2,:2,l3c,.4,.7V5.0]6}"
|
||||
".0S0?{'(l4:y3:ref;y4:set!;y6:define;y13:define-syntax;),:1A0?{:2X4,.1S"
|
||||
"6X5,'(y3:ref),@(y18:*root-environment*),.2,@(y10:env-lookup)[23}f]1}.0"
|
||||
"K0?{:1,:2,.2[12}f]1}.!0.0^_1[31",
|
||||
"P", "make-name-registry",
|
||||
"%1,,#0#1'(l40:i1;i11;i31;i41;i61;i71;i101;i131;i151;i181;i191;i211;i24"
|
||||
"1;i251;i271;i281;i311;i331;i401;i421;i431;i461;i491;i521;i541;i571;i60"
|
||||
"1;i631;i641;i661;i691;i701;i751;i761;i811;i821;i881;i911;i941;i971;).!"
|
||||
"0${@(y2:<=),.3^,.6,@(y7:%25member)[03},.0?{.0a}{'(i991)}_1.!1n,'1,.3^+"
|
||||
"V2]3",
|
||||
|
||||
"C", 0,
|
||||
"n,'(i101)V2@!(y18:*root-environment*)",
|
||||
|
||||
"P", "define-in-root-environment!",
|
||||
"%3@(y18:*root-environment*),.0V3,.0,.3H2,.0,.3V4,.0,.5A3,.0?{.6,.1dsa."
|
||||
"7,.1ddsa]8}.1,.8,.8,.8,l3c,.3,.6V5]8",
|
||||
|
||||
"C", 0,
|
||||
"${t,${f,@(y24:make-include-transformer)[01}b,'(y7:include),@(y27:defin"
|
||||
"e-in-root-environment!)[03}",
|
||||
|
||||
"C", 0,
|
||||
"${t,${t,@(y24:make-include-transformer)[01}b,'(y10:include-ci),@(y27:d"
|
||||
"efine-in-root-environment!)[03}",
|
||||
|
||||
"C", 0,
|
||||
"${t,${@(y28:make-cond-expand-transformer)[00}b,'(y11:cond-expand),@(y2"
|
||||
"7:define-in-root-environment!)[03}",
|
||||
|
||||
"C", 0,
|
||||
"&0{%2t,.2,.2,@(y27:define-in-root-environment!)[23},${U1,,#0.0,.5,&2{%"
|
||||
"1.0u?{'(y2:ok)]1}.0d,.1a,.0d,.1a,.1Y0,.0?{.0}{.2N0}_1?{${.3b,.3,:0[02}"
|
||||
".3,:1^[51}.1p?{'(y12:syntax-rules),.2aq}{f}?{,,#0#1&0{%2.1,@(y18:*root"
|
||||
"-environment*),.2,@(y10:env-lookup)[23}.!0${.5da,@(y3:id?)[01}?{${.5dd"
|
||||
"d,.6dda,.7da,.5^,@(y13:syntax-rules*)[04}}{${.5dd,.6da,f,.5^,@(y13:syn"
|
||||
"tax-rules*)[04}}.!1${.3^b,.5,:0[02}.5,:1^[71}f]5}.!0.0^_1[01}_1",
|
||||
|
||||
"P", "root-environment",
|
||||
"%2.1,@(y18:*root-environment*),.2,@(y10:env-lookup)[23",
|
||||
|
||||
"C", 0,
|
||||
"n,'(i102)V2@!(y20:*root-name-registry*)",
|
||||
"P", "eal->name-registry",
|
||||
"%1n,.1,V12]1",
|
||||
|
||||
"P", "name-lookup",
|
||||
"%3'1,.1V3-,.2p?{.0}{.0,.3H2},.0,.3V4,.4p?{.0,.5A5}{.0,.5A3},.0?{.0d]7}"
|
||||
".6?{${.7,.9[01},.0~?{f]8}.0Y2?{.0]8}.0b,.3,.1,.9cc,.5,.8V5.0]9}f]7",
|
||||
|
||||
"C", 0,
|
||||
"${'(i300),@(y18:make-name-registry)[01}@!(y20:*root-name-registry*)",
|
||||
|
||||
"C", 0,
|
||||
"${'0,,#0.0,&1{%1.0U5,.0?{.1U0?{.1U7,.0Y0?{${.4,&1{%1:0]1},.3,@(y20:*ro"
|
||||
"ot-name-registry*),@(y11:name-lookup)[03}}_1}'1,.2+,:0^[21}]2}.!0.0^_1"
|
||||
|
@ -1026,11 +990,12 @@ char *t_code[] = {
|
|||
"C", 0,
|
||||
"${U1,,#0.0,&1{%1.0u~?{.0a,.1d,.1a,.2d,.0Y0,.0?{.0}{.1U0}_1?{${.2,&1{%1"
|
||||
":0]1},.4,@(y20:*root-name-registry*),@(y11:name-lookup)[03}.2,:0^[51}."
|
||||
"0p?{'(y12:syntax-rules),.1aq}{f}?{,,#0#1&0{%2.1,@(y18:*root-environmen"
|
||||
"t*),.2,@(y10:env-lookup)[23}.!0${.4da,@(y3:id?)[01}?{${.4ddd,.5dda,.6d"
|
||||
"a,.5^,@(y13:syntax-rules*)[04}}{${.4dd,.5da,f,.5^,@(y13:syntax-rules*)"
|
||||
"[04}}.!1${.3,&1{%1:0^]1},.6,@(y20:*root-name-registry*),@(y11:name-loo"
|
||||
"kup)[03}.4,:0^[71}f]5}]1}.!0.0^_1[01}",
|
||||
"0p?{'(y12:syntax-rules),.1aq}{f}?{,,#0#1&0{%2.0K0?{.0,@(y7:old-den)[21"
|
||||
"}&0{%1.0,'(y3:ref),l2]1},.1,@(y20:*root-name-registry*),@(y11:name-loo"
|
||||
"kup)[23}.!0${.4da,@(y3:id?)[01}?{${.4ddd,.5dda,.6da,.5^,@(y13:syntax-r"
|
||||
"ules*)[04}}{${.4dd,.5da,f,.5^,@(y13:syntax-rules*)[04}}.!1${.3,&1{%1:0"
|
||||
"^]1},.6,@(y20:*root-name-registry*),@(y11:name-lookup)[03}.4,:0^[71}f]"
|
||||
"5}]1}.!0.0^_1[01}",
|
||||
|
||||
"C", 0,
|
||||
"${&0{%1f,@(y24:make-include-transformer)[11},'(y7:include),@(y20:*root"
|
||||
|
@ -1045,7 +1010,7 @@ char *t_code[] = {
|
|||
"0:*root-name-registry*),@(y11:name-lookup)[03}",
|
||||
|
||||
"C", 0,
|
||||
"${'(l343:l3:y1:*;y1:v;y1:b;;l3:y1:+;y1:v;y1:b;;l3:y1:-;y1:v;y1:b;;l4:y"
|
||||
"${'(l456: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"
|
||||
|
@ -1072,134 +1037,193 @@ char *t_code[] = {
|
|||
"y1:b;;l3:y11:denominator;y1:v;y1:b;;l4:y2:do;y1:v;y1:u;y1:b;;l3:y12:dy"
|
||||
"namic-wind;y1:v;y1:b;;l4:y4:else;y1:v;y1:u;y1:b;;l2:y10:eof-object;y1:"
|
||||
"b;;l3:y11:eof-object?;y1:v;y1:b;;l3:y3:eq?;y1:v;y1:b;;l3:y6:equal?;y1:"
|
||||
"v;y1:b;;l3:y4:eqv?;y1:v;y1:b;;l2:y5:error;y1:b;;l2:y22:error-object-ir"
|
||||
"ritants;y1:b;;l2:y20:error-object-message;y1:b;;l2:y13:error-object?;y"
|
||||
"1:b;;l3:y5:even?;y1:v;y1:b;;l2:y5:exact;y1:b;;l2:y18:exact-integer-sqr"
|
||||
"t;y1:b;;l2:y14:exact-integer?;y1:b;;l3:y6:exact?;y1:v;y1:b;;l3:y4:expt"
|
||||
";y1:v;y1:b;;l2:y8:features;y1:b;;l2:y11:file-error?;y1:b;;l3:y5:floor;"
|
||||
"y1:v;y1:b;;l2:y14:floor-quotient;y1:b;;l2:y15:floor-remainder;y1:b;;l2"
|
||||
":y6:floor/;y1:b;;l2:y17:flush-output-port;y1:b;;l3:y8:for-each;y1:v;y1"
|
||||
":b;;l3:y3:gcd;y1:v;y1:b;;l2:y21:get-output-bytevector;y1:b;;l2:y17:get"
|
||||
"-output-string;y1:b;;l2:y5:guard;y1:b;;l4:y2:if;y1:v;y1:u;y1:b;;l2:y7:"
|
||||
"include;y1:b;;l2:y10:include-ci;y1:b;;l2:y7:inexact;y1:b;;l3:y8:inexac"
|
||||
"t?;y1:v;y1:b;;l2:y16:input-port-open?;y1:b;;l3:y11:input-port?;y1:v;y1"
|
||||
":b;;l3:y13:integer->char;y1:v;y1:b;;l3:y8:integer?;y1:v;y1:b;;l4:y6:la"
|
||||
"mbda;y1:v;y1:u;y1:b;;l3:y3:lcm;y1:v;y1:b;;l3:y6:length;y1:v;y1:b;;l4:y"
|
||||
"3:let;y1:v;y1:u;y1:b;;l4:y4:let*;y1:v;y1:u;y1:b;;l2:y11:let*-values;y1"
|
||||
":b;;l4:y10:let-syntax;y1:v;y1:u;y1:b;;l2:y10:let-values;y1:b;;l4:y6:le"
|
||||
"trec;y1:v;y1:u;y1:b;;l2:y7:letrec*;y1:b;;l4:y13:letrec-syntax;y1:v;y1:"
|
||||
"u;y1:b;;l3:y4:list;y1:v;y1:b;;l3:y12:list->string;y1:v;y1:b;;l3:y12:li"
|
||||
"st->vector;y1:v;y1:b;;l2:y9:list-copy;y1:b;;l3:y8:list-ref;y1:v;y1:b;;"
|
||||
"l2:y9:list-set!;y1:b;;l3:y9:list-tail;y1:v;y1:b;;l3:y5:list?;y1:v;y1:b"
|
||||
";;l2:y15:make-bytevector;y1:b;;l2:y9:make-list;y1:b;;l2:y14:make-param"
|
||||
"eter;y1:b;;l3:y11:make-string;y1:v;y1:b;;l3:y11:make-vector;y1:v;y1:b;"
|
||||
";l3:y3:map;y1:v;y1:b;;l3:y3:max;y1:v;y1:b;;l3:y6:member;y1:v;y1:b;;l3:"
|
||||
"y4:memq;y1:v;y1:b;;l3:y4:memv;y1:v;y1:b;;l3:y3:min;y1:v;y1:b;;l3:y6:mo"
|
||||
"dulo;y1:v;y1:b;;l3:y9:negative?;y1:v;y1:b;;l3:y7:newline;y1:v;y1:b;;l3"
|
||||
":y3:not;y1:v;y1:b;;l3:y5:null?;y1:v;y1:b;;l3:y14:number->string;y1:v;y"
|
||||
"1:b;;l3:y7:number?;y1:v;y1:b;;l3:y9:numerator;y1:v;y1:b;;l3:y4:odd?;y1"
|
||||
":v;y1:b;;l2:y21:open-input-bytevector;y1:b;;l2:y17:open-input-string;y"
|
||||
"1:b;;l2:y22:open-output-bytevector;y1:b;;l2:y18:open-output-string;y1:"
|
||||
"b;;l4:y2:or;y1:v;y1:u;y1:b;;l2:y17:output-port-open?;y1:b;;l3:y12:outp"
|
||||
"ut-port?;y1:v;y1:b;;l3:y5:pair?;y1:v;y1:b;;l2:y12:parameterize;y1:b;;l"
|
||||
"3:y9:peek-char;y1:v;y1:b;;l2:y7:peek-u8;y1:b;;l2:y5:port?;y1:b;;l3:y9:"
|
||||
"positive?;y1:v;y1:b;;l3:y10:procedure?;y1:v;y1:b;;l4:y10:quasiquote;y1"
|
||||
":v;y1:u;y1:b;;l4:y5:quote;y1:v;y1:u;y1:b;;l3:y8:quotient;y1:v;y1:b;;l2"
|
||||
":y5:raise;y1:b;;l2:y17:raise-continuable;y1:b;;l3:y9:rational?;y1:v;y1"
|
||||
":b;;l3:y11:rationalize;y1:v;y1:b;;l2:y15:read-bytevector;y1:b;;l2:y16:"
|
||||
"read-bytevector!;y1:b;;l3:y9:read-char;y1:v;y1:b;;l2:y11:read-error?;y"
|
||||
"1:b;;l2:y9:read-line;y1:b;;l2:y11:read-string;y1:b;;l2:y7:read-u8;y1:b"
|
||||
";;l3:y5:real?;y1:v;y1:b;;l3:y9:remainder;y1:v;y1:b;;l3:y7:reverse;y1:v"
|
||||
";y1:b;;l3:y5:round;y1:v;y1:b;;l3:y4:set!;y1:v;y1:b;;l3:y8:set-car!;y1:"
|
||||
"v;y1:b;;l3:y8:set-cdr!;y1:v;y1:b;;l2:y6:square;y1:b;;l3:y6:string;y1:v"
|
||||
";y1:b;;l3:y12:string->list;y1:v;y1:b;;l3:y14:string->number;y1:v;y1:b;"
|
||||
";l3:y14:string->symbol;y1:v;y1:b;;l2:y12:string->utf8;y1:b;;l2:y14:str"
|
||||
"ing->vector;y1:b;;l3:y13:string-append;y1:v;y1:b;;l3:y11:string-copy;y"
|
||||
"1:v;y1:b;;l2:y12:string-copy!;y1:b;;l3:y12:string-fill!;y1:v;y1:b;;l2:"
|
||||
"y15:string-for-each;y1:b;;l3:y13:string-length;y1:v;y1:b;;l2:y10:strin"
|
||||
"g-map;y1:b;;l3:y10:string-ref;y1:v;y1:b;;l3:y11:string-set!;y1:v;y1:b;"
|
||||
";l3:y9:string<=?;y1:v;y1:b;;l3:y8:string<?;y1:v;y1:b;;l3:y8:string=?;y"
|
||||
"1:v;y1:b;;l3:y9:string>=?;y1:v;y1:b;;l3:y8:string>?;y1:v;y1:b;;l3:y7:s"
|
||||
"tring?;y1:v;y1:b;;l3:y9:substring;y1:v;y1:b;;l3:y14:symbol->string;y1:"
|
||||
"v;y1:b;;l2:y8:symbol=?;y1:b;;l3:y7:symbol?;y1:v;y1:b;;l2:y12:syntax-er"
|
||||
"ror;y1:b;;l4:y12:syntax-rules;y1:v;y1:u;y1:b;;l2:y13:textual-port?;y1:"
|
||||
"b;;l3:y8:truncate;y1:v;y1:b;;l2:y17:truncate-quotient;y1:b;;l2:y18:tru"
|
||||
"ncate-remainder;y1:b;;l2:y9:truncate/;y1:b;;l2:y9:u8-ready?;y1:b;;l2:y"
|
||||
"6:unless;y1:b;;l4:y7:unquote;y1:v;y1:u;y1:b;;l4:y16:unquote-splicing;y"
|
||||
"1:v;y1:u;y1:b;;l2:y12:utf8->string;y1:b;;l3:y6:values;y1:v;y1:b;;l3:y6"
|
||||
":vector;y1:v;y1:b;;l3:y12:vector->list;y1:v;y1:b;;l2:y14:vector->strin"
|
||||
"g;y1:b;;l2:y13:vector-append;y1:b;;l2:y11:vector-copy;y1:b;;l2:y12:vec"
|
||||
"tor-copy!;y1:b;;l3:y12:vector-fill!;y1:v;y1:b;;l2:y15:vector-for-each;"
|
||||
"y1:b;;l3:y13:vector-length;y1:v;y1:b;;l2:y10:vector-map;y1:b;;l3:y10:v"
|
||||
"ector-ref;y1:v;y1:b;;l3:y11:vector-set!;y1:v;y1:b;;l3:y7:vector?;y1:v;"
|
||||
"y1:b;;l2:y4:when;y1:b;;l2:y22:with-exception-handler;y1:b;;l2:y16:writ"
|
||||
"e-bytevector;y1:b;;l3:y10:write-char;y1:v;y1:b;;l2:y12:write-string;y1"
|
||||
":b;;l2:y8:write-u8;y1:b;;l3:y5:zero?;y1:v;y1:b;;l2:y11:case-lambda;y1:"
|
||||
"l;;l3:y16:char-alphabetic?;y1:v;y1:h;;l3:y10:char-ci<=?;y1:v;y1:h;;l3:"
|
||||
"y9:char-ci<?;y1:v;y1:h;;l3:y9:char-ci=?;y1:v;y1:h;;l3:y10:char-ci>=?;y"
|
||||
"1:v;y1:h;;l3:y9:char-ci>?;y1:v;y1:h;;l3:y13:char-downcase;y1:v;y1:h;;l"
|
||||
"2:y13:char-foldcase;y1:h;;l3:y16:char-lower-case?;y1:v;y1:h;;l3:y13:ch"
|
||||
"ar-numeric?;y1:v;y1:h;;l3:y11:char-upcase;y1:v;y1:h;;l3:y16:char-upper"
|
||||
"-case?;y1:v;y1:h;;l3:y16:char-whitespace?;y1:v;y1:h;;l2:y11:digit-valu"
|
||||
"e;y1:h;;l3:y12:string-ci<=?;y1:v;y1:h;;l3:y11:string-ci<?;y1:v;y1:h;;l"
|
||||
"3:y11:string-ci=?;y1:v;y1:h;;l3:y12:string-ci>=?;y1:v;y1:h;;l3:y11:str"
|
||||
"ing-ci>?;y1:v;y1:h;;l2:y15:string-downcase;y1:h;;l2:y15:string-foldcas"
|
||||
"e;y1:h;;l2:y13:string-upcase;y1:h;;l3:y5:angle;y1:v;y1:o;;l3:y9:imag-p"
|
||||
"art;y1:v;y1:o;;l3:y9:magnitude;y1:v;y1:o;;l3:y10:make-polar;y1:v;y1:o;"
|
||||
";l3:y16:make-rectangular;y1:v;y1:o;;l3:y9:real-part;y1:v;y1:o;;l3:y5:c"
|
||||
"aaar;y1:v;y1:x;;l3:y5:caadr;y1:v;y1:x;;l3:y5:cadar;y1:v;y1:x;;l3:y5:ca"
|
||||
"ddr;y1:v;y1:x;;l3:y5:cdaar;y1:v;y1:x;;l3:y5:cdadr;y1:v;y1:x;;l3:y5:cdd"
|
||||
"ar;y1:v;y1:x;;l3:y5:cdddr;y1:v;y1:x;;l3:y6:caaaar;y1:v;y1:x;;l3:y6:caa"
|
||||
"adr;y1:v;y1:x;;l3:y6:caadar;y1:v;y1:x;;l3:y6:caaddr;y1:v;y1:x;;l3:y6:c"
|
||||
"adaar;y1:v;y1:x;;l3:y6:cadadr;y1:v;y1:x;;l3:y6:caddar;y1:v;y1:x;;l3:y6"
|
||||
":cadddr;y1:v;y1:x;;l3:y6:cdaaar;y1:v;y1:x;;l3:y6:cdaadr;y1:v;y1:x;;l3:"
|
||||
"y6:cdadar;y1:v;y1:x;;l3:y6:cdaddr;y1:v;y1:x;;l3:y6:cddaar;y1:v;y1:x;;l"
|
||||
"3:y6:cddadr;y1:v;y1:x;;l3:y6:cdddar;y1:v;y1:x;;l3:y6:cddddr;y1:v;y1:x;"
|
||||
";l2:y11:environment;y1:e;;l3:y4:eval;y1:v;y1:e;;l3:y20:call-with-input"
|
||||
"-file;y1:v;y1:f;;l3:y21:call-with-output-file;y1:v;y1:f;;l2:y11:delete"
|
||||
"-file;y1:f;;l2:y12:file-exists?;y1:f;;l2:y22:open-binary-input-file;y1"
|
||||
":f;;l2:y23:open-binary-output-file;y1:f;;l3:y15:open-input-file;y1:v;y"
|
||||
"1:f;;l3:y16:open-output-file;y1:v;y1:f;;l3:y20:with-input-from-file;y1"
|
||||
":v;y1:f;;l3:y19:with-output-to-file;y1:v;y1:f;;l4:y4:acos;y1:v;y1:z;y1"
|
||||
":i;;l4:y4:asin;y1:v;y1:z;y1:i;;l4:y4:atan;y1:v;y1:z;y1:i;;l4:y3:cos;y1"
|
||||
":v;y1:z;y1:i;;l4:y3:exp;y1:v;y1:z;y1:i;;l3:y7:finite?;y1:z;y1:i;;l2:y9"
|
||||
":infinite?;y1:i;;l3:y3:log;y1:v;y1:i;;l2:y4:nan?;y1:i;;l3:y3:sin;y1:v;"
|
||||
"y1:i;;l3:y4:sqrt;y1:v;y1:i;;l3:y3:tan;y1:v;y1:i;;l4:y5:delay;y1:v;y1:u"
|
||||
";y1:z;;l2:y11:delay-force;y1:z;;l3:y5:force;y1:v;y1:z;;l2:y12:make-pro"
|
||||
"mise;y1:z;;l2:y8:promise?;y1:z;;l3:y4:load;y1:v;y1:d;;l2:y12:command-l"
|
||||
"ine;y1:s;;l2:y14:emergency-exit;y1:s;;l2:y4:exit;y1:s;;l2:y24:get-envi"
|
||||
"ronment-variable;y1:s;;l2:y25:get-environment-variables;y1:s;;l3:y7:di"
|
||||
"splay;y1:w;y1:v;;l2:y14:exact->inexact;y1:v;;l2:y14:inexact->exact;y1:"
|
||||
"v;;l3:y23:interaction-environment;y1:p;y1:v;;l2:y16:null-environment;y"
|
||||
"1:v;;l3:y4:read;y1:r;y1:v;;l2:y25:scheme-report-environment;y1:v;;l3:y"
|
||||
"5:write;y1:w;y1:v;;l2:y13:current-jiffy;y1:t;;l2:y14:current-second;y1"
|
||||
":t;;l2:y18:jiffies-per-second;y1:t;;l2:y12:write-shared;y1:w;;l2:y12:w"
|
||||
"rite-simple;y1:w;;l1:y4:box?;;l1:y3:box;;l1:y5:unbox;;l1:y8:set-box!;;"
|
||||
"),&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:time;)]2}'(y1:p),.1v?{'(l2:y6:scheme;y4:r"
|
||||
"epl;)]2}'(y1:r),.1v?{'(l2:y6:scheme;y4:read;)]2}'(y1:v),.1v?{'(l2:y6:s"
|
||||
"cheme;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:scheme;y4:eval;)]2}'(y1:o),.1v?{'(l2:y6:scheme;y7:c"
|
||||
"omplex;)]2}'(y1:h),.1v?{'(l2:y6:scheme;y4:char;)]2}'(y1:l),.1v?{'(l2:y"
|
||||
"6:scheme;y11:case-lambda;)]2}'(y1:x),.1v?{'(l2:y6:scheme;y3:cxr;)]2}'("
|
||||
"y1:b),.1v?{'(l2:y6:scheme;y4:base;)]2}]2}.!0&0{%1${.2,&1{%1n,'(l1:y5:b"
|
||||
"egin;),V12,${t,.3b,${:0,@(y16:listname->symbol)[01},@(y27:define-in-ro"
|
||||
"ot-environment!)[03}.0]2},.3,@(y20:*root-name-registry*),@(y11:name-lo"
|
||||
"okup)[03}z]1}.!1&0{%3'1,.1V4,.0,.3A3,.0?{.4,.1sd]5}.1,.5,.5cc,'1,.4V5]"
|
||||
"5}.!2&0{%1'(y3:ref),.1,@(y16:root-environment)[12}.!3.4d,.5a,,#0.0,.6,"
|
||||
".5,.7,.(i10),&5{%2.1u?{${.2,:0^[01},.1,${'(l1:y4:repl;),: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}",
|
||||
"v;y1:b;;l3:y4:eqv?;y1:v;y1:b;;l2:y5:error;y1:b;;l2:y7:library;y1:b;;l2"
|
||||
":y22:error-object-irritants;y1:b;;l2:y20:error-object-message;y1:b;;l2"
|
||||
":y13:error-object?;y1:b;;l3:y5:even?;y1:v;y1:b;;l2:y5:exact;y1:b;;l2:y"
|
||||
"18:exact-integer-sqrt;y1:b;;l2:y14:exact-integer?;y1:b;;l3:y6:exact?;y"
|
||||
"1:v;y1:b;;l3:y4:expt;y1:v;y1:b;;l2:y8:features;y1:b;;l2:y11:file-error"
|
||||
"?;y1:b;;l3:y5:floor;y1:v;y1:b;;l2:y14:floor-quotient;y1:b;;l2:y15:floo"
|
||||
"r-remainder;y1:b;;l2:y6:floor/;y1:b;;l2:y17:flush-output-port;y1:b;;l3"
|
||||
":y8:for-each;y1:v;y1:b;;l3:y3:gcd;y1:v;y1:b;;l2:y21:get-output-bytevec"
|
||||
"tor;y1:b;;l2:y17:get-output-string;y1:b;;l2:y5:guard;y1:b;;l4:y2:if;y1"
|
||||
":v;y1:u;y1:b;;l2:y7:include;y1:b;;l2:y10:include-ci;y1:b;;l2:y7:inexac"
|
||||
"t;y1:b;;l3:y8:inexact?;y1:v;y1:b;;l2:y16:input-port-open?;y1:b;;l3:y11"
|
||||
":input-port?;y1:v;y1:b;;l3:y13:integer->char;y1:v;y1:b;;l3:y8:integer?"
|
||||
";y1:v;y1:b;;l4:y6:lambda;y1:v;y1:u;y1:b;;l3:y3:lcm;y1:v;y1:b;;l3:y6:le"
|
||||
"ngth;y1:v;y1:b;;l4:y3:let;y1:v;y1:u;y1:b;;l4:y4:let*;y1:v;y1:u;y1:b;;l"
|
||||
"2:y11:let*-values;y1:b;;l4:y10:let-syntax;y1:v;y1:u;y1:b;;l2:y10:let-v"
|
||||
"alues;y1:b;;l4:y6:letrec;y1:v;y1:u;y1:b;;l2:y7:letrec*;y1:b;;l4:y13:le"
|
||||
"trec-syntax;y1:v;y1:u;y1:b;;l3:y4:list;y1:v;y1:b;;l3:y12:list->string;"
|
||||
"y1:v;y1:b;;l3:y12:list->vector;y1:v;y1:b;;l2:y9:list-copy;y1:b;;l3:y8:"
|
||||
"list-ref;y1:v;y1:b;;l2:y9:list-set!;y1:b;;l3:y9:list-tail;y1:v;y1:b;;l"
|
||||
"3:y5:list?;y1:v;y1:b;;l2:y15:make-bytevector;y1:b;;l2:y9:make-list;y1:"
|
||||
"b;;l2:y14:make-parameter;y1:b;;l3:y11:make-string;y1:v;y1:b;;l3:y11:ma"
|
||||
"ke-vector;y1:v;y1:b;;l3:y3:map;y1:v;y1:b;;l3:y3:max;y1:v;y1:b;;l3:y6:m"
|
||||
"ember;y1:v;y1:b;;l3:y4:memq;y1:v;y1:b;;l3:y4:memv;y1:v;y1:b;;l3:y3:min"
|
||||
";y1:v;y1:b;;l3:y6:modulo;y1:v;y1:b;;l3:y9:negative?;y1:v;y1:b;;l3:y7:n"
|
||||
"ewline;y1:v;y1:b;;l3:y3:not;y1:v;y1:b;;l3:y5:null?;y1:v;y1:b;;l3:y14:n"
|
||||
"umber->string;y1:v;y1:b;;l3:y7:number?;y1:v;y1:b;;l3:y9:numerator;y1:v"
|
||||
";y1:b;;l3:y4:odd?;y1:v;y1:b;;l2:y21:open-input-bytevector;y1:b;;l2:y17"
|
||||
":open-input-string;y1:b;;l2:y22:open-output-bytevector;y1:b;;l2:y18:op"
|
||||
"en-output-string;y1:b;;l4:y2:or;y1:v;y1:u;y1:b;;l2:y17:output-port-ope"
|
||||
"n?;y1:b;;l3:y12:output-port?;y1:v;y1:b;;l3:y5:pair?;y1:v;y1:b;;l2:y12:"
|
||||
"parameterize;y1:b;;l3:y9:peek-char;y1:v;y1:b;;l2:y7:peek-u8;y1:b;;l2:y"
|
||||
"5:port?;y1:b;;l3:y9:positive?;y1:v;y1:b;;l3:y10:procedure?;y1:v;y1:b;;"
|
||||
"l4:y10:quasiquote;y1:v;y1:u;y1:b;;l4:y5:quote;y1:v;y1:u;y1:b;;l3:y8:qu"
|
||||
"otient;y1:v;y1:b;;l2:y5:raise;y1:b;;l2:y17:raise-continuable;y1:b;;l3:"
|
||||
"y9:rational?;y1:v;y1:b;;l3:y11:rationalize;y1:v;y1:b;;l2:y15:read-byte"
|
||||
"vector;y1:b;;l2:y16:read-bytevector!;y1:b;;l3:y9:read-char;y1:v;y1:b;;"
|
||||
"l2:y11:read-error?;y1:b;;l2:y9:read-line;y1:b;;l2:y11:read-string;y1:b"
|
||||
";;l2:y7:read-u8;y1:b;;l3:y5:real?;y1:v;y1:b;;l3:y9:remainder;y1:v;y1:b"
|
||||
";;l3:y7:reverse;y1:v;y1:b;;l3:y5:round;y1:v;y1:b;;l3:y4:set!;y1:v;y1:b"
|
||||
";;l3:y8:set-car!;y1:v;y1:b;;l3:y8:set-cdr!;y1:v;y1:b;;l2:y6:square;y1:"
|
||||
"b;;l3:y6:string;y1:v;y1:b;;l3:y12:string->list;y1:v;y1:b;;l3:y14:strin"
|
||||
"g->number;y1:v;y1:b;;l3:y14:string->symbol;y1:v;y1:b;;l2:y12:string->u"
|
||||
"tf8;y1:b;;l2:y14:string->vector;y1:b;;l3:y13:string-append;y1:v;y1:b;;"
|
||||
"l3:y11:string-copy;y1:v;y1:b;;l2:y12:string-copy!;y1:b;;l3:y12:string-"
|
||||
"fill!;y1:v;y1:b;;l2:y15:string-for-each;y1:b;;l3:y13:string-length;y1:"
|
||||
"v;y1:b;;l2:y10:string-map;y1:b;;l3:y10:string-ref;y1:v;y1:b;;l3:y11:st"
|
||||
"ring-set!;y1:v;y1:b;;l3:y9:string<=?;y1:v;y1:b;;l3:y8:string<?;y1:v;y1"
|
||||
":b;;l3:y8:string=?;y1:v;y1:b;;l3:y9:string>=?;y1:v;y1:b;;l3:y8:string>"
|
||||
"?;y1:v;y1:b;;l3:y7:string?;y1:v;y1:b;;l3:y9:substring;y1:v;y1:b;;l3:y1"
|
||||
"4:symbol->string;y1:v;y1:b;;l2:y8:symbol=?;y1:b;;l3:y7:symbol?;y1:v;y1"
|
||||
":b;;l2:y12:syntax-error;y1:b;;l4:y12:syntax-rules;y1:v;y1:u;y1:b;;l2:y"
|
||||
"13:textual-port?;y1:b;;l3:y8:truncate;y1:v;y1:b;;l2:y17:truncate-quoti"
|
||||
"ent;y1:b;;l2:y18:truncate-remainder;y1:b;;l2:y9:truncate/;y1:b;;l2:y9:"
|
||||
"u8-ready?;y1:b;;l2:y6:unless;y1:b;;l4:y7:unquote;y1:v;y1:u;y1:b;;l4:y1"
|
||||
"6:unquote-splicing;y1:v;y1:u;y1:b;;l2:y12:utf8->string;y1:b;;l3:y6:val"
|
||||
"ues;y1:v;y1:b;;l3:y6:vector;y1:v;y1:b;;l3:y12:vector->list;y1:v;y1:b;;"
|
||||
"l2:y14:vector->string;y1:b;;l2:y13:vector-append;y1:b;;l2:y11:vector-c"
|
||||
"opy;y1:b;;l2:y12:vector-copy!;y1:b;;l3:y12:vector-fill!;y1:v;y1:b;;l2:"
|
||||
"y15:vector-for-each;y1:b;;l3:y13:vector-length;y1:v;y1:b;;l2:y10:vecto"
|
||||
"r-map;y1:b;;l3:y10:vector-ref;y1:v;y1:b;;l3:y11:vector-set!;y1:v;y1:b;"
|
||||
";l3:y7:vector?;y1:v;y1:b;;l2:y4:when;y1:b;;l2:y22:with-exception-handl"
|
||||
"er;y1:b;;l2:y16:write-bytevector;y1:b;;l3:y10:write-char;y1:v;y1:b;;l2"
|
||||
":y12:write-string;y1:b;;l2:y8:write-u8;y1:b;;l3:y5:zero?;y1:v;y1:b;;l2"
|
||||
":y11:case-lambda;y1:l;;l3:y16:char-alphabetic?;y1:v;y1:h;;l3:y10:char-"
|
||||
"ci<=?;y1:v;y1:h;;l3:y9:char-ci<?;y1:v;y1:h;;l3:y9:char-ci=?;y1:v;y1:h;"
|
||||
";l3:y10:char-ci>=?;y1:v;y1:h;;l3:y9:char-ci>?;y1:v;y1:h;;l3:y13:char-d"
|
||||
"owncase;y1:v;y1:h;;l2:y13:char-foldcase;y1:h;;l3:y16:char-lower-case?;"
|
||||
"y1:v;y1:h;;l3:y13:char-numeric?;y1:v;y1:h;;l3:y11:char-upcase;y1:v;y1:"
|
||||
"h;;l3:y16:char-upper-case?;y1:v;y1:h;;l3:y16:char-whitespace?;y1:v;y1:"
|
||||
"h;;l2:y11:digit-value;y1:h;;l3:y12:string-ci<=?;y1:v;y1:h;;l3:y11:stri"
|
||||
"ng-ci<?;y1:v;y1:h;;l3:y11:string-ci=?;y1:v;y1:h;;l3:y12:string-ci>=?;y"
|
||||
"1:v;y1:h;;l3:y11:string-ci>?;y1:v;y1:h;;l2:y15:string-downcase;y1:h;;l"
|
||||
"2:y15:string-foldcase;y1:h;;l2:y13:string-upcase;y1:h;;l3:y5:angle;y1:"
|
||||
"v;y1:o;;l3:y9:imag-part;y1:v;y1:o;;l3:y9:magnitude;y1:v;y1:o;;l3:y10:m"
|
||||
"ake-polar;y1:v;y1:o;;l3:y16:make-rectangular;y1:v;y1:o;;l3:y9:real-par"
|
||||
"t;y1:v;y1:o;;l3:y5:caaar;y1:v;y1:x;;l3:y5:caadr;y1:v;y1:x;;l3:y5:cadar"
|
||||
";y1:v;y1:x;;l3:y5:caddr;y1:v;y1:x;;l3:y5:cdaar;y1:v;y1:x;;l3:y5:cdadr;"
|
||||
"y1:v;y1:x;;l3:y5:cddar;y1:v;y1:x;;l3:y5:cdddr;y1:v;y1:x;;l3:y6:caaaar;"
|
||||
"y1:v;y1:x;;l3:y6:caaadr;y1:v;y1:x;;l3:y6:caadar;y1:v;y1:x;;l3:y6:caadd"
|
||||
"r;y1:v;y1:x;;l3:y6:cadaar;y1:v;y1:x;;l3:y6:cadadr;y1:v;y1:x;;l3:y6:cad"
|
||||
"dar;y1:v;y1:x;;l3:y6:cadddr;y1:v;y1:x;;l3:y6:cdaaar;y1:v;y1:x;;l3:y6:c"
|
||||
"daadr;y1:v;y1:x;;l3:y6:cdadar;y1:v;y1:x;;l3:y6:cdaddr;y1:v;y1:x;;l3:y6"
|
||||
":cddaar;y1:v;y1:x;;l3:y6:cddadr;y1:v;y1:x;;l3:y6:cdddar;y1:v;y1:x;;l3:"
|
||||
"y6:cddddr;y1:v;y1:x;;l2:y11:environment;y1:e;;l3:y4:eval;y1:v;y1:e;;l3"
|
||||
":y20:call-with-input-file;y1:v;y1:f;;l3:y21:call-with-output-file;y1:v"
|
||||
";y1:f;;l2:y11:delete-file;y1:f;;l2:y12:file-exists?;y1:f;;l2:y22:open-"
|
||||
"binary-input-file;y1:f;;l2:y23:open-binary-output-file;y1:f;;l3:y15:op"
|
||||
"en-input-file;y1:v;y1:f;;l3:y16:open-output-file;y1:v;y1:f;;l3:y20:wit"
|
||||
"h-input-from-file;y1:v;y1:f;;l3:y19:with-output-to-file;y1:v;y1:f;;l4:"
|
||||
"y4:acos;y1:v;y1:z;y1:i;;l4:y4:asin;y1:v;y1:z;y1:i;;l4:y4:atan;y1:v;y1:"
|
||||
"z;y1:i;;l4:y3:cos;y1:v;y1:z;y1:i;;l4:y3:exp;y1:v;y1:z;y1:i;;l3:y7:fini"
|
||||
"te?;y1:z;y1:i;;l2:y9:infinite?;y1:i;;l3:y3:log;y1:v;y1:i;;l2:y4:nan?;y"
|
||||
"1:i;;l3:y3:sin;y1:v;y1:i;;l3:y4:sqrt;y1:v;y1:i;;l3:y3:tan;y1:v;y1:i;;l"
|
||||
"4:y5:delay;y1:v;y1:u;y1:z;;l2:y11:delay-force;y1:z;;l3:y5:force;y1:v;y"
|
||||
"1:z;;l2:y12:make-promise;y1:z;;l2:y8:promise?;y1:z;;l3:y4:load;y1:v;y1"
|
||||
":d;;l2:y12:command-line;y1:s;;l2:y14:emergency-exit;y1:s;;l2:y4:exit;y"
|
||||
"1:s;;l2:y24:get-environment-variable;y1:s;;l2:y25:get-environment-vari"
|
||||
"ables;y1:s;;l3:y7:display;y1:w;y1:v;;l2:y14:exact->inexact;y1:v;;l2:y1"
|
||||
"4:inexact->exact;y1:v;;l3:y23:interaction-environment;y1:p;y1:v;;l2:y1"
|
||||
"6:null-environment;y1:v;;l3:y4:read;y1:r;y1:v;;l2:y25:scheme-report-en"
|
||||
"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:y4:set&;;l1:y7:lambda*;;l1:y4"
|
||||
":body;;l1:y5:letcc;;l1:y6:withcc;;l1:y13:syntax-lambda;;l1:y13:syntax-"
|
||||
"length;;l1:y4:box?;;l1:y3:box;;l1:y5:unbox;;l1:y8:set-box!;;l1:y7:reco"
|
||||
"rd?;;l1:y11:make-record;;l1:y13:record-length;;l1:y10:record-ref;;l1:y"
|
||||
"11:record-set!;;l1:y7:fixnum?;;l1:y11:fxpositive?;;l1:y11:fxnegative?;"
|
||||
";l1:y7:fxeven?;;l1:y6:fxodd?;;l1:y3:fx+;;l1:y3:fx*;;l1:y3:fx-;;l1:y3:f"
|
||||
"x/;;l1:y10:fxquotient;;l1:y11:fxremainder;;l1:y8:fxmodquo;;l1:y8:fxmod"
|
||||
"ulo;;l1:y8:fxeucquo;;l1:y8:fxeucrem;;l1:y5:fxneg;;l1:y5:fxabs;;l1:y4:f"
|
||||
"x<?;;l1:y5:fx<=?;;l1:y4:fx>?;;l1:y5:fx>=?;;l1:y4:fx=?;;l3:y5:fx!=?;y1:"
|
||||
"x;y1:y;;l1:y5:fxmin;;l1:y5:fxmax;;l1:y5:fxneg;;l1:y5:fxabs;;l1:y5:fxgc"
|
||||
"d;;l1:y6:fxexpt;;l1:y6:fxsqrt;;l1:y5:fxnot;;l1:y5:fxand;;l1:y5:fxior;;"
|
||||
"l1:y5:fxxor;;l1:y5:fxsll;;l1:y5:fxsrl;;l1:y14:fixnum->flonum;;l1:y14:f"
|
||||
"ixnum->string;;l1:y14:string->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:flsi"
|
||||
"n;;l1:y5:flcos;;l1:y5:fltan;;l1:y6:flasin;;l1:y6:flacos;;l2:y6:flatan;"
|
||||
"l1:y1:y;;;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:y14:flonum->fixnum;;l1:y14"
|
||||
":flonum->string;;l1:y14:string->flonum;;l1:y8:list-cat;;l1:y4:meme;;l1"
|
||||
":y4:asse;;l1:y8:reverse!;;l1:y9:circular?;;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:y16:bytevector->list;;l1:"
|
||||
"y16:list->bytevector;;l1:y13:subbytevector;;l1:y19:standard-input-port"
|
||||
";;l1:y20:standard-output-port;;l1:y19:standard-error-port;;l1:y11:rena"
|
||||
"me-file;;),&0{%1,,,,#0#1#2#3&0{%1.0,'(y1:w),.1v?{'(l2:y6:scheme;y5:wri"
|
||||
"te;)]2}'(y1:t),.1v?{'(l2:y6:scheme;y4:time;)]2}'(y1:p),.1v?{'(l2:y6:sc"
|
||||
"heme;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:fi"
|
||||
"le;)]2}'(y1:e),.1v?{'(l2:y6:scheme;y4:eval;)]2}'(y1:o),.1v?{'(l2:y6:sc"
|
||||
"heme;y7:complex;)]2}'(y1:h),.1v?{'(l2:y6:scheme;y4:char;)]2}'(y1:l),.1"
|
||||
"v?{'(l2:y6:scheme;y11:case-lambda;)]2}'(y1:x),.1v?{'(l2:y6:scheme;y3:c"
|
||||
"xr;)]2}'(y1:b),.1v?{'(l2:y6:scheme;y4:base;)]2}]2}.!0&0{%1${&0{%1n,'(l"
|
||||
"1:y5:begin;),V12]1},.3,@(y20:*root-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:nam"
|
||||
"e-lookup)[13}.!3.4d,.5a,,#0.0,.6,.5,.7,.(i10),&5{%2.1u?{${.2,:0^[01},."
|
||||
"1,${'(l1:y4:repl;),: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}",
|
||||
|
||||
"C", 0,
|
||||
"${'(i100),@(y18:make-name-registry)[01}@!(y20:*user-name-registry*)",
|
||||
|
||||
"P", "make-readonly-environment",
|
||||
"%1.0,&1{%2.0K0?{.1,'(l2:y3:ref;y4:set!;),.1A1?{.1,@(y7:old-den)[31}f]3"
|
||||
"}'(y3:ref),.2q?{f,.1,:0,@(y11:name-lookup)[23}f]2}]1",
|
||||
|
||||
"P", "make-controlled-environment",
|
||||
"%3,,#0#1${.4,@(y18:eal->name-registry)[01}.!0${'(i100),@(y18:make-name"
|
||||
"-registry)[01}.!1.1,.1,.5,.7,&4{%2.0K0?{.1,'(l2:y3:ref;y4:set!;),.1A1?"
|
||||
"{.1,@(y7:old-den)[31}f]3}'(y3:ref),.2q?{:2,.1,:1,:0,&4{%1${f,:2,:3^,@("
|
||||
"y11:name-lookup)[03},.0?{.0]2}:2Y0?{${:2,:1[01},'(y3:ref),l2]2}'(y3:re"
|
||||
"f),:2,:0[22},.1,:3^,@(y11:name-lookup)[23}'(l2:y4:set!;y6:define;),.2A"
|
||||
"0?{.0Y0?{.0,:1,:2,&3{%1${f,:2,:0^,@(y11:name-lookup)[03}~?{${:2,:1[01}"
|
||||
",'(y3:ref),l2]1}f]1},.1,:3^,@(y11:name-lookup)[23}f]2}'(y13:define-syn"
|
||||
"tax),.2q?{.0,:2,&2{%1${f,:1,:0^,@(y11:name-lookup)[03}~?{Y9]1}f]1},.1,"
|
||||
":3^,@(y11:name-lookup)[23}f]2}]5",
|
||||
|
||||
"P", "make-repl-environment",
|
||||
"%3,#0.3,&1{%1.0,:0,@(y37:fully-qualified-library-prefixed-name)[12}.!0"
|
||||
".2,.1,.3,&3{%2.0K0?{.1,'(l2:y3:ref;y4:set!;),.1A1?{.1,@(y7:old-den)[31"
|
||||
"}f]3}'(y3:ref),.2q?{:0,.1,:1,&3{%1${f,:1,:2,@(y11:name-lookup)[03},.0?"
|
||||
"{.0]2}:1Y0?{${:1,:0^[01},'(y3:ref),l2]2}f]2},.1,:2,@(y11:name-lookup)["
|
||||
"23}'(y4:set!),.2q?{.0Y0?{.0,:1,:0,&3{%1${f,:2,:0,@(y11:name-lookup)[03"
|
||||
"}~?{${:2,:1^[01},'(y3:ref),l2]1}f]1},.1,:2,@(y11:name-lookup)[23}f]2}'"
|
||||
"(y6:define),.2q?{.0Y0?{:1,.1,&2{%1${:0,:1^[01},'(y3:ref),l2]1},.1,:2,@"
|
||||
"(y11:name-lookup)[23}f]2}'(y13:define-syntax),.2q?{&0{%1Y9]1},.1,:2,@("
|
||||
"y11:name-lookup)[23}f]2}]4",
|
||||
|
||||
"C", 0,
|
||||
"${@(y20:*root-name-registry*),@(y25:make-readonly-environment)[01}@!(y"
|
||||
"16:root-environment)",
|
||||
|
||||
"C", 0,
|
||||
"${'(y7:repl://),@(y20:*user-name-registry*),@(y20:*root-name-registry*"
|
||||
"),@(y21:make-repl-environment)[03}@!(y16:repl-environment)",
|
||||
|
||||
"C", 0,
|
||||
"f@!(y9:*verbose*)",
|
||||
|
||||
"P", "repl-environment",
|
||||
"%2.1,@(y18:*root-environment*),.2,@(y10:env-lookup)[23",
|
||||
|
||||
"P", "repl-compile-and-run-core-expr",
|
||||
"%1@(y9:*verbose*)?{Po,'(s12:TRANSFORM =>)W4PoW6Po,.1W5PoW6}.0p~?{${.2,"
|
||||
"'(s29:unexpected transformed output),@(y7:x-error)[02}}f,${.3,@(y21:co"
|
||||
|
@ -1220,12 +1244,12 @@ char *t_code[] = {
|
|||
"fine-syntax)[02},${'(y13:define-syntax),.3da,.7,@(y11:xenv-lookup)[03}"
|
||||
",.0?{.1dda,.1sz}{${.6,.4da,'(s50:identifier cannot be (re)defined as s"
|
||||
"yntax in env:),@(y7:x-error)[03}}@(y9:*verbose*)?{Po,'(s18:SYNTAX INST"
|
||||
"ALLED: )W4Po,.2daW5PoW6]5}]5}'(y14:define-library),.1q?{${f,.5,.5d,.6a"
|
||||
"ALLED: )W4Po,.2daW5PoW6]5}]5}'(y14:define-library),.1q?{${t,.5,.5d,.6a"
|
||||
",@(y20:xform-define-library)[04},${'(y13:define-syntax),.3da,.7,@(y11:"
|
||||
"xenv-lookup)[03},.0?{.1dda,.0,.2sz_1}{${.6,.4da,'(s50:identifier canno"
|
||||
"t be (re)defined as syntax in env:),@(y7:x-error)[03}}@(y9:*verbose*)?"
|
||||
"{Po,'(s19:LIBRARY INSTALLED: )W4Po,.2daW5PoW6]5}]5}'(y6:import),.1q?{$"
|
||||
"{f,.5,.5d,.6a,@(y12:xform-import)[04},.0da,'0,.1V4,'1,.2V4,,#0.7,&1{%1"
|
||||
"{t,.5,.5d,.6a,@(y12:xform-import)[04},.0da,'0,.1V4,'1,.2V4,,#0.7,&1{%1"
|
||||
":0,.1dz,@(y15:syntax-quote-id),l2,.2a,@(y16:define-syntax-id),l3,@(y18"
|
||||
":repl-eval-top-form)[12}.!0${.4,@(y30:repl-compile-and-run-core-expr)["
|
||||
"01}.1,.1^,@(y10:%25for-each1)[82}.0K0?{.2,${.5,.5,.5[02},@(y18:repl-ev"
|
||||
|
@ -1247,20 +1271,29 @@ char *t_code[] = {
|
|||
"0a)W4]5}${.3^,'(l2:y3:ref;y8:<symbol>;),@(y11:sexp-match?)[02}?{.4,${'"
|
||||
"(y3:ref),.4^a,@(y16:repl-environment)[02}W5.4W6]5}${.3^,'(l2:y3:ref;l3"
|
||||
":y1:*;y1:*;y3:...;;),@(y11:sexp-match?)[02}?{.4,${'(y3:ref),.4^a,@(y16"
|
||||
":repl-environment)[02}W5.4W6]5}${.3^,'(l2:y4:peek;y1:*;),@(y11:sexp-ma"
|
||||
"tch?)[02}?{.0^aS0?{.4,.1^aF0?{'(s12:file exists%0a)}{'(s20:file does n"
|
||||
"ot exist%0a)}W4]5}.0^aY0?{.4,.1^aX4F0?{'(s12:file exists%0a)}{'(s20:fi"
|
||||
"le does not exist%0a)}W4]5}.4,'(s37:invalid file name; use double quot"
|
||||
"es%0a)W4]5}${.3^,'(l2:y7:verbose;y2:on;),@(y11:sexp-match?)[02}?{t@!(y"
|
||||
"9:*verbose*)]5}${.3^,'(l2:y7:verbose;y3:off;),@(y11:sexp-match?)[02}?{"
|
||||
"f@!(y9:*verbose*)]5}${.3^,'(l1:y4:help;),@(y11:sexp-match?)[02}?{.4,'("
|
||||
"s20:Available commands:%0a)W4.4,'(s42: ,say hello -- displays nice"
|
||||
" greeting%0a)W4.4,'(s40: ,peek <fname> -- check if file exists%0a)W4."
|
||||
"4,'(s37: ,verbose on -- turn verbosity on%0a)W4.4,'(s38: ,verbose o"
|
||||
"ff -- turn verbosity off%0a)W4.4,'(s54: ,ref <name> -- show curre"
|
||||
"nt denotation for <name>%0a)W4.4,'(s29: ,help -- this help%0a"
|
||||
")W4]5}.4,'(s29:syntax error in repl command%0a)W4.4,'(s37:type ,help t"
|
||||
"o see available commands%0a)W4]5",
|
||||
":repl-environment)[02}W5.4W6]5}${.3^,'(l1:y3:rnr;),@(y11:sexp-match?)["
|
||||
"02}?{.4,@(y20:*root-name-registry*)W5.4W6]5}${.3^,'(l2:y3:rnr;y1:*;),@"
|
||||
"(y11:sexp-match?)[02}?{.4,${f,.4^a,@(y20:*root-name-registry*),@(y11:n"
|
||||
"ame-lookup)[03}W5.4W6]5}${.3^,'(l1:y3:unr;),@(y11:sexp-match?)[02}?{.4"
|
||||
",@(y20:*user-name-registry*)W5.4W6]5}${.3^,'(l2:y3:unr;y1:*;),@(y11:se"
|
||||
"xp-match?)[02}?{.4,${f,.4^a,@(y20:*user-name-registry*),@(y11:name-loo"
|
||||
"kup)[03}W5.4W6]5}${.3^,'(l2:y4:peek;y1:*;),@(y11:sexp-match?)[02}?{.0^"
|
||||
"aS0?{.4,.1^aF0?{'(s12:file exists%0a)}{'(s20:file does not exist%0a)}W"
|
||||
"4]5}.0^aY0?{.4,.1^aX4F0?{'(s12:file exists%0a)}{'(s20:file does not ex"
|
||||
"ist%0a)}W4]5}.4,'(s37:invalid file name; use double quotes%0a)W4]5}${."
|
||||
"3^,'(l2:y7:verbose;y2:on;),@(y11:sexp-match?)[02}?{t@!(y9:*verbose*)]5"
|
||||
"}${.3^,'(l2:y7:verbose;y3:off;),@(y11:sexp-match?)[02}?{f@!(y9:*verbos"
|
||||
"e*)]5}${.3^,'(l1:y4:help;),@(y11:sexp-match?)[02}?{.4,'(s20:Available "
|
||||
"commands:%0a)W4.4,'(s42: ,say hello -- displays nice greeting%0a)W"
|
||||
"4.4,'(s40: ,peek <fname> -- check if file exists%0a)W4.4,'(s37: ,verb"
|
||||
"ose on -- turn verbosity on%0a)W4.4,'(s38: ,verbose off -- turn v"
|
||||
"erbosity off%0a)W4.4,'(s54: ,ref <name> -- show current denotation "
|
||||
"for <name>%0a)W4.4,'(s43: ,rnr -- show root name registry%0a"
|
||||
")W4.4,'(s48: ,rnr <name> -- lookup name in root registry%0a)W4.4,'("
|
||||
"s43: ,unr -- show user name registry%0a)W4.4,'(s48: ,unr <na"
|
||||
"me> -- lookup name in user registry%0a)W4.4,'(s29: ,help -"
|
||||
"- this help%0a)W4]5}.4,'(s29:syntax error in repl command%0a)W4.4,'(s3"
|
||||
"7:type ,help to see available commands%0a)W4]5",
|
||||
|
||||
"P", "repl-from-port",
|
||||
"%3,#0${@(y18:current-file-stack)[00}.!0${k0,.0,${.2,.9,.(i11),.(i10),&"
|
||||
|
@ -1289,9 +1322,12 @@ char *t_code[] = {
|
|||
"t),.4^,@(y14:repl-from-port)[03}${@(y16:repl-environment),'(l2:y4:main"
|
||||
";f;),@(y18:repl-eval-top-form)[02}.0^P60]2",
|
||||
|
||||
"P", "run-repl",
|
||||
"P", "repl",
|
||||
"%0${n,@(y23:set-current-file-stack!)[01}'(s6:skint]),@(y16:repl-enviro"
|
||||
"nment),Pi,@(y14:repl-from-port)[03",
|
||||
|
||||
"C", 0,
|
||||
"@(y4:repl)@!(y8:run-repl)",
|
||||
|
||||
0, 0, 0
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue