790 lines
63 KiB
C
790 lines
63 KiB
C
#include "picrin.h"
|
|
#include "picrin/extra.h"
|
|
|
|
#if PIC_USE_EVAL
|
|
static const char boot_compile_rom[][80] = {
|
|
"(core#begin (core#begin (core#define make-identifier #undefined) (core#begin (co",
|
|
"re#define identifier? #undefined) (core#begin (core#define identifier=? #undefin",
|
|
"ed) (core#begin (core#define identifier-name #undefined) (core#begin (core#defin",
|
|
"e identifier-environment #undefined) (core#begin (core#define make-environment #",
|
|
"undefined) (core#begin (core#define default-environment #undefined) (core#begin ",
|
|
"(core#define environment? #undefined) (core#begin (core#define find-identifier #",
|
|
"undefined) (core#begin (core#define add-identifier! #undefined) (core#begin (cor",
|
|
"e#define set-identifier! #undefined) (core#begin (core#define macro-objects #und",
|
|
"efined) (core#begin (core#define expand #undefined) (call-with-values (core#lamb",
|
|
"da () ((core#lambda () (core#begin (core#begin (core#define .make-identifier.214",
|
|
"9 (core#lambda (.name.2173 .env.2174) (make-record (core#quote identifier) (vect",
|
|
"or .name.2173 .env.2174)))) (core#begin (core#define .%identifier?.2150 (core#la",
|
|
"mbda (.obj.2175) (core#if (record? .obj.2175) (eq? (record-type .obj.2175) (core",
|
|
"#quote identifier)) #f))) (core#begin (core#define .identifier-environment.2151 ",
|
|
"(core#lambda (.obj.2176) (core#if (.%identifier?.2150 .obj.2176) (vector-ref (re",
|
|
"cord-datum .obj.2176) 1) (error \"record type mismatch\" .obj.2176 (core#quote ide",
|
|
"ntifier))))) (core#define .identifier-name.2152 (core#lambda (.obj.2177) (core#i",
|
|
"f (.%identifier?.2150 .obj.2177) (vector-ref (record-datum .obj.2177) 0) (error ",
|
|
"\"record type mismatch\" .obj.2177 (core#quote identifier)))))))) (core#begin (cor",
|
|
"e#define .identifier?.2153 (core#lambda (.obj.2178) ((core#lambda (.it.2179) (co",
|
|
"re#if .it.2179 .it.2179 ((core#lambda (.it.2180) (core#if .it.2180 .it.2180 #f))",
|
|
" (.%identifier?.2150 .obj.2178)))) (symbol? .obj.2178)))) (core#begin (core#defi",
|
|
"ne .identifier=?.2154 (core#lambda (.id1.2181 .id2.2182) (core#if (core#if (symb",
|
|
"ol? .id1.2181) (symbol? .id2.2182) #f) (eq? .id1.2181 .id2.2182) (core#if (core#",
|
|
"if (.%identifier?.2150 .id1.2181) (.%identifier?.2150 .id2.2182) #f) (eq? (.find",
|
|
"-identifier.2161 (.identifier-name.2152 .id1.2181) (.identifier-environment.2151",
|
|
" .id1.2181)) (.find-identifier.2161 (.identifier-name.2152 .id2.2182) (.identifi",
|
|
"er-environment.2151 .id2.2182))) #f)))) (core#begin (core#set! equal? ((core#lam",
|
|
"bda (.e?.2183) (core#lambda (.x.2184 .y.2185) (core#if (.%identifier?.2150 .x.21",
|
|
"84) (.identifier=?.2154 .x.2184 .y.2185) (.e?.2183 .x.2184 .y.2185)))) equal?)) ",
|
|
"(core#begin (core#begin (core#define .%make-environment.2155 (core#lambda (.pare",
|
|
"nt.2186 .prefix.2187 .binding.2188) (make-record (core#quote environment) (vecto",
|
|
"r .parent.2186 .prefix.2187 .binding.2188)))) (core#begin (core#define .environm",
|
|
"ent?.2156 (core#lambda (.obj.2189) (core#if (record? .obj.2189) (eq? (record-typ",
|
|
"e .obj.2189) (core#quote environment)) #f))) (core#begin (core#define .environme",
|
|
"nt-binding.2157 (core#lambda (.obj.2190) (core#if (.environment?.2156 .obj.2190)",
|
|
" (vector-ref (record-datum .obj.2190) 2) (error \"record type mismatch\" .obj.2190",
|
|
" (core#quote environment))))) (core#begin (core#define .environment-prefix.2158 ",
|
|
"(core#lambda (.obj.2191) (core#if (.environment?.2156 .obj.2191) (vector-ref (re",
|
|
"cord-datum .obj.2191) 1) (error \"record type mismatch\" .obj.2191 (core#quote env",
|
|
"ironment))))) (core#define .environment-parent.2159 (core#lambda (.obj.2192) (co",
|
|
"re#if (.environment?.2156 .obj.2192) (vector-ref (record-datum .obj.2192) 0) (er",
|
|
"ror \"record type mismatch\" .obj.2192 (core#quote environment))))))))) (core#begi",
|
|
"n (core#define .search-scope.2160 (core#lambda (.id.2193 .env.2194) ((.environme",
|
|
"nt-binding.2157 .env.2194) .id.2193))) (core#begin (core#define .find-identifier",
|
|
".2161 (core#lambda (.id.2195 .env.2196) ((core#lambda (.it.2197) (core#if .it.21",
|
|
"97 .it.2197 ((core#lambda (.it.2198) (core#if .it.2198 .it.2198 #f)) ((core#lamb",
|
|
"da (.parent.2199) (core#if .parent.2199 (.find-identifier.2161 .id.2195 .parent.",
|
|
"2199) (core#if (symbol? .id.2195) (.add-identifier!.2162 .id.2195 .env.2196) (.f",
|
|
"ind-identifier.2161 (.identifier-name.2152 .id.2195) (.identifier-environment.21",
|
|
"51 .id.2195))))) (.environment-parent.2159 .env.2196))))) (.search-scope.2160 .i",
|
|
"d.2195 .env.2196)))) (core#begin (core#define .add-identifier!.2162 ((core#lambd",
|
|
"a (.uniq.2200) (core#lambda (.id.2201 .env.2202) ((core#lambda (.it.2203) (core#",
|
|
"if .it.2203 .it.2203 ((core#lambda (.it.2204) (core#if .it.2204 .it.2204 #f)) (c",
|
|
"ore#if (core#if (not (.environment-parent.2159 .env.2202)) (symbol? .id.2201) #f",
|
|
") (string->symbol (string-append (.environment-prefix.2158 .env.2202) (symbol->s",
|
|
"tring .id.2201))) ((core#lambda (.uid.2205) (core#begin (.set-identifier!.2163 .",
|
|
"id.2201 .uid.2205 .env.2202) .uid.2205)) (.uniq.2200 .id.2201)))))) (.search-sco",
|
|
"pe.2160 .id.2201 .env.2202)))) ((core#lambda (.n.2206) (core#lambda (.id.2207) (",
|
|
"(core#lambda (.m.2208) (core#begin (core#set! .n.2206 (+ .n.2206 1)) (string->sy",
|
|
"mbol (string-append \".\" (symbol->string ((core#lambda () (core#begin (core#defin",
|
|
"e .loop.2209 (core#lambda (.id.2210) (core#if (symbol? .id.2210) .id.2210 (.loop",
|
|
".2209 (.identifier-name.2152 .id.2210))))) (.loop.2209 .id.2207))))) \".\" (number",
|
|
"->string .m.2208))))) .n.2206))) 0))) (core#begin (core#define .set-identifier!.",
|
|
"2163 (core#lambda (.id.2211 .uid.2212 .env.2213) ((.environment-binding.2157 .en",
|
|
"v.2213) .id.2211 .uid.2212))) (core#begin (core#define .make-environment.2164 (c",
|
|
"ore#lambda (.prefix.2214) (.%make-environment.2155 #f (symbol->string .prefix.22",
|
|
"14) (make-ephemeron-table)))) (core#begin (core#define .default-environment.2165",
|
|
" ((core#lambda (.env.2215) (core#begin (for-each (core#lambda (.x.2216) (.set-id",
|
|
"entifier!.2163 .x.2216 .x.2216 .env.2215)) (core#quote (core#define core#set! co",
|
|
"re#quote core#lambda core#if core#begin core#define-macro))) .env.2215)) (.make-",
|
|
"environment.2164 (string->symbol \"\")))) (core#begin (core#define .extend-environ",
|
|
"ment.2166 (core#lambda (.parent.2217) (.%make-environment.2155 .parent.2217 #f (",
|
|
"make-ephemeron-table)))) (core#begin (core#define .global-macro-table.2167 (make",
|
|
"-dictionary)) (core#begin (core#define .find-macro.2168 (core#lambda (.uid.2218)",
|
|
" (core#if (dictionary-has? .global-macro-table.2167 .uid.2218) (dictionary-ref .",
|
|
"global-macro-table.2167 .uid.2218) #f))) (core#begin (core#define .add-macro!.21",
|
|
"69 (core#lambda (.uid.2219 .expander.2220) (dictionary-set! .global-macro-table.",
|
|
"2167 .uid.2219 .expander.2220))) (core#begin (core#define .shadow-macro!.2170 (c",
|
|
"ore#lambda (.uid.2221) (core#if (dictionary-has? .global-macro-table.2167 .uid.2",
|
|
"221) (dictionary-delete! .global-macro-table.2167 .uid.2221) #undefined))) (core",
|
|
"#begin (core#define .macro-objects.2171 (core#lambda () .global-macro-table.2167",
|
|
")) (core#begin (core#define .expand.2172 ((core#lambda (.task-queue.2222) (core#",
|
|
"begin (core#define .queue.2223 (core#lambda (.task.2236) ((core#lambda (.tmp.223",
|
|
"7) (core#begin (.task-queue.2222 (cons (cons .tmp.2237 .task.2236) (.task-queue.",
|
|
"2222))) .tmp.2237)) (cons #f #f)))) (core#begin (core#define .run-all.2224 (core",
|
|
"#lambda () (for-each (core#lambda (.x.2238) ((core#lambda (.task.2239 .skelton.2",
|
|
"240) ((core#lambda (.x.2241) (core#begin (set-car! .skelton.2240 (car .x.2241)) ",
|
|
"(set-cdr! .skelton.2240 (cdr .x.2241)))) (.task.2239))) (cdr .x.2238) (car .x.22",
|
|
"38))) (reverse (.task-queue.2222))))) (core#begin (core#define .caddr.2225 (core",
|
|
"#lambda (.x.2242) (car (cddr .x.2242)))) (core#begin (core#define .map*.2226 (co",
|
|
"re#lambda (.proc.2243 .list*.2244) (core#if (null? .list*.2244) .list*.2244 (cor",
|
|
"e#if (pair? .list*.2244) (cons (.proc.2243 (car .list*.2244)) (.map*.2226 .proc.",
|
|
"2243 (cdr .list*.2244))) (.proc.2243 .list*.2244))))) (core#begin (core#define .",
|
|
"literal?.2227 (core#lambda (.x.2245) (not ((core#lambda (.it.2246) (core#if .it.",
|
|
"2246 .it.2246 ((core#lambda (.it.2247) (core#if .it.2247 .it.2247 #f)) (pair? .x",
|
|
".2245)))) (.identifier?.2153 .x.2245))))) (core#begin (core#define .call?.2228 (",
|
|
"core#lambda (.x.2248) (core#if (list? .x.2248) (core#if (not (null? .x.2248)) (.",
|
|
"identifier?.2153 (car .x.2248)) #f) #f))) (core#begin (core#define .expand-varia",
|
|
"ble.2229 (core#lambda (.var.2249 .env.2250) ((core#lambda (.x.2251) ((core#lambd",
|
|
"a (.m.2252) (core#if .m.2252 (.expand-node.2234 (.m.2252 .var.2249 .env.2250) .e",
|
|
"nv.2250) .x.2251)) (.find-macro.2168 .x.2251))) (.find-identifier.2161 .var.2249",
|
|
" .env.2250)))) (core#begin (core#define .expand-quote.2230 (core#lambda (.obj.22",
|
|
"53) (cons (core#quote core#quote) (cons .obj.2253 (core#quote ()))))) (core#begi",
|
|
"n (core#define .expand-define.2231 (core#lambda (.var.2254 .form.2255 .env.2256)",
|
|
" ((core#lambda (.uid.2257) (core#begin (.shadow-macro!.2170 .uid.2257) (cons (co",
|
|
"re#quote core#define) (cons .uid.2257 (cons (.expand-node.2234 .form.2255 .env.2",
|
|
"256) (core#quote ())))))) (.add-identifier!.2162 .var.2254 .env.2256)))) (core#b",
|
|
"egin (core#define .expand-lambda.2232 (core#lambda (.args.2258 .body.2259 .env.2",
|
|
"260) ((core#lambda (.env.2261) ((core#lambda (.args.2262) (with-dynamic-environm",
|
|
"ent (list (cons .task-queue.2222 (core#quote ()))) (core#lambda () ((core#lambda",
|
|
" (.body.2263) (core#begin (.run-all.2224) (cons (core#quote core#lambda) (cons .",
|
|
"args.2262 (cons .body.2263 (core#quote ())))))) (.expand-node.2234 .body.2259 .e",
|
|
"nv.2261))))) (.map*.2226 (core#lambda (.var.2264) (.add-identifier!.2162 .var.22",
|
|
"64 .env.2261)) .args.2258))) (.extend-environment.2166 .env.2260)))) (core#begin",
|
|
" (core#define .expand-define-macro.2233 (core#lambda (.var.2265 .transformer.226",
|
|
"6 .env.2267) ((core#lambda (.uid.2268) ((core#lambda (.expander.2269) (core#begi",
|
|
"n (.add-macro!.2169 .uid.2268 .expander.2269) #undefined)) (load (.expand.2235 .",
|
|
"transformer.2266 .env.2267)))) (.add-identifier!.2162 .var.2265 .env.2267)))) (c",
|
|
"ore#begin (core#define .expand-node.2234 (core#lambda (.expr.2270 .env.2271) (co",
|
|
"re#if (.literal?.2227 .expr.2270) .expr.2270 (core#if (.identifier?.2153 .expr.2",
|
|
"270) (.expand-variable.2229 .expr.2270 .env.2271) (core#if (.call?.2228 .expr.22",
|
|
"70) ((core#lambda (.functor.2272) ((core#lambda (.key.2273) (core#if ((core#lamb",
|
|
"da (.it.2274) (core#if .it.2274 .it.2274 #f)) (eqv? .key.2273 (core#quote core#q",
|
|
"uote))) (.expand-quote.2230 (cadr .expr.2270)) (core#if ((core#lambda (.it.2275)",
|
|
" (core#if .it.2275 .it.2275 #f)) (eqv? .key.2273 (core#quote core#define))) (.ex",
|
|
"pand-define.2231 (cadr .expr.2270) (.caddr.2225 .expr.2270) .env.2271) (core#if ",
|
|
"((core#lambda (.it.2276) (core#if .it.2276 .it.2276 #f)) (eqv? .key.2273 (core#q",
|
|
"uote core#lambda))) (.queue.2223 (core#lambda () (.expand-lambda.2232 (cadr .exp",
|
|
"r.2270) (.caddr.2225 .expr.2270) .env.2271))) (core#if ((core#lambda (.it.2277) ",
|
|
"(core#if .it.2277 .it.2277 #f)) (eqv? .key.2273 (core#quote core#define-macro)))",
|
|
" (.expand-define-macro.2233 (cadr .expr.2270) (.caddr.2225 .expr.2270) .env.2271",
|
|
") (core#if #t ((core#lambda (.m.2278) (core#if .m.2278 (.expand-node.2234 (.m.22",
|
|
"78 .expr.2270 .env.2271) .env.2271) (map (core#lambda (.x.2279) (.expand-node.22",
|
|
"34 .x.2279 .env.2271)) .expr.2270))) (.find-macro.2168 .functor.2272)) #undefine",
|
|
"d)))))) .functor.2272)) (.find-identifier.2161 (car .expr.2270) .env.2271)) (cor",
|
|
"e#if (list? .expr.2270) (map (core#lambda (.x.2280) (.expand-node.2234 .x.2280 .",
|
|
"env.2271)) .expr.2270) (error \"invalid expression\" .expr.2270))))))) (core#begin",
|
|
" (core#define .expand.2235 (core#lambda (.expr.2281 .env.2282) ((core#lambda (.x",
|
|
".2283) (core#begin (.run-all.2224) .x.2283)) (.expand-node.2234 .expr.2281 .env.",
|
|
"2282)))) .expand.2235)))))))))))))) (make-parameter (core#quote ())))) (values .",
|
|
"make-identifier.2149 .identifier?.2153 .identifier=?.2154 .identifier-name.2152 ",
|
|
".identifier-environment.2151 .make-environment.2164 .default-environment.2165 .e",
|
|
"nvironment?.2156 .find-identifier.2161 .add-identifier!.2162 .set-identifier!.21",
|
|
"63 .macro-objects.2171 .expand.2172)))))))))))))))))))))) (core#lambda (.make-id",
|
|
"entifier.2284 .identifier?.2285 .identifier=?.2286 .identifier-name.2287 .identi",
|
|
"fier-environment.2288 .make-environment.2289 .default-environment.2290 .environm",
|
|
"ent?.2291 .find-identifier.2292 .add-identifier!.2293 .set-identifier!.2294 .mac",
|
|
"ro-objects.2295 .expand.2296) (core#begin (core#set! make-identifier .make-ident",
|
|
"ifier.2284) (core#begin (core#set! identifier? .identifier?.2285) (core#begin (c",
|
|
"ore#set! identifier=? .identifier=?.2286) (core#begin (core#set! identifier-name",
|
|
" .identifier-name.2287) (core#begin (core#set! identifier-environment .identifie",
|
|
"r-environment.2288) (core#begin (core#set! make-environment .make-environment.22",
|
|
"89) (core#begin (core#set! default-environment .default-environment.2290) (core#",
|
|
"begin (core#set! environment? .environment?.2291) (core#begin (core#set! find-id",
|
|
"entifier .find-identifier.2292) (core#begin (core#set! add-identifier! .add-iden",
|
|
"tifier!.2293) (core#begin (core#set! set-identifier! .set-identifier!.2294) (cor",
|
|
"e#begin (core#set! macro-objects .macro-objects.2295) (core#set! expand .expand.",
|
|
"2296)))))))))))))))))))))))))))) (core#begin ((core#lambda () (core#begin (core#",
|
|
"define .define-transformer.2297 (core#lambda (.name.2299 .transformer.2300) (dic",
|
|
"tionary-set! (macro-objects) .name.2299 .transformer.2300))) (core#begin (core#d",
|
|
"efine .the.2298 (core#lambda (.var.2301) (make-identifier .var.2301 default-envi",
|
|
"ronment))) ((core#lambda (.the-core-define.2302 .the-core-lambda.2303 .the-core-",
|
|
"begin.2304 .the-core-quote.2305 .the-core-set!.2306 .the-core-if.2307 .the-core-",
|
|
"define-macro.2308 .the-define.2309 .the-lambda.2310 .the-begin.2311 .the-quote.2",
|
|
"312 .the-set!.2313 .the-if.2314 .the-define-macro.2315) (core#begin (.define-tra",
|
|
"nsformer.2297 (core#quote quote) (core#lambda (.form.2320 .env.2321) (core#if (=",
|
|
" (length .form.2320) 2) ((core#lambda (.obj.2322) (core#if (pair? .obj.2322) (co",
|
|
"ns (.the.2298 (core#quote cons)) (cons (cons .the-quote.2312 (cons (car .obj.232",
|
|
"2) (core#quote ()))) (cons (cons .the-quote.2312 (cons (cdr .obj.2322) (core#quo",
|
|
"te ()))) (core#quote ())))) (core#if (vector? .obj.2322) (cons (.the.2298 (core#",
|
|
"quote vector)) (vector->list (vector-map (core#lambda (.obj.2323) (cons .the-quo",
|
|
"te.2312 (cons .obj.2323 (core#quote ())))) .obj.2322))) (cons .the-core-quote.23",
|
|
"05 (cons .obj.2322 (core#quote ())))))) (cadr .form.2320)) (error \"malformed quo",
|
|
"te\" .form.2320)))) (core#begin (.define-transformer.2297 (core#quote if) (core#l",
|
|
"ambda (.form.2324 .env.2325) ((core#lambda (.len.2326) (core#if (= .len.2326 3) ",
|
|
"(append .form.2324 (cons (core#quote #undefined) (core#quote ()))) (core#if (= .",
|
|
"len.2326 4) (cons .the-core-if.2307 (cdr .form.2324)) (error \"malformed if\" .for",
|
|
"m.2324)))) (length .form.2324)))) (core#begin (.define-transformer.2297 (core#qu",
|
|
"ote begin) (core#lambda (.form.2327 .env.2328) ((core#lambda (.len.2329) (core#i",
|
|
"f (= .len.2329 1) #undefined (core#if (= .len.2329 2) (cadr .form.2327) (core#if",
|
|
" (= .len.2329 3) (cons .the-core-begin.2304 (cdr .form.2327)) (cons .the-core-be",
|
|
"gin.2304 (cons (cadr .form.2327) (cons (cons .the-begin.2311 (cddr .form.2327)) ",
|
|
"(core#quote ())))))))) (length .form.2327)))) (core#begin (.define-transformer.2",
|
|
"297 (core#quote set!) (core#lambda (.form.2330 .env.2331) (core#if (core#if (= (",
|
|
"length .form.2330) 3) (identifier? (cadr .form.2330)) #f) (cons .the-core-set!.2",
|
|
"306 (cdr .form.2330)) (error \"malformed set!\" .form.2330)))) (core#begin (core#d",
|
|
"efine .check-formal.2316 (core#lambda (.formal.2332) ((core#lambda (.it.2333) (c",
|
|
"ore#if .it.2333 .it.2333 ((core#lambda (.it.2334) (core#if .it.2334 .it.2334 ((c",
|
|
"ore#lambda (.it.2335) (core#if .it.2335 .it.2335 #f)) (core#if (pair? .formal.23",
|
|
"32) (core#if (identifier? (car .formal.2332)) (.check-formal.2316 (cdr .formal.2",
|
|
"332)) #f) #f)))) (identifier? .formal.2332)))) (null? .formal.2332)))) (core#beg",
|
|
"in (.define-transformer.2297 (core#quote lambda) (core#lambda (.form.2336 .env.2",
|
|
"337) (core#if (= (length .form.2336) 1) (error \"malformed lambda\" .form.2336) (c",
|
|
"ore#if (.check-formal.2316 (cadr .form.2336)) (cons .the-core-lambda.2303 (cons ",
|
|
"(cadr .form.2336) (cons (cons .the-begin.2311 (cddr .form.2336)) (core#quote ())",
|
|
"))) (error \"malformed lambda\" .form.2336))))) (core#begin (.define-transformer.2",
|
|
"297 (core#quote define) (core#lambda (.form.2338 .env.2339) ((core#lambda (.len.",
|
|
"2340) (core#if (= .len.2340 1) (error \"malformed define\" .form.2338) ((core#lamb",
|
|
"da (.formal.2341) (core#if (identifier? .formal.2341) (core#if (= .len.2340 3) (",
|
|
"cons .the-core-define.2302 (cdr .form.2338)) (error \"malformed define\" .form.233",
|
|
"8)) (core#if (pair? .formal.2341) (cons .the-define.2309 (cons (car .formal.2341",
|
|
") (cons (cons .the-lambda.2310 (cons (cdr .formal.2341) (cddr .form.2338))) (cor",
|
|
"e#quote ())))) (error \"define: binding to non-varaible object\" .form.2338)))) (c",
|
|
"adr .form.2338)))) (length .form.2338)))) (core#begin (.define-transformer.2297 ",
|
|
"(core#quote define-macro) (core#lambda (.form.2342 .env.2343) (core#if (= (lengt",
|
|
"h .form.2342) 3) (core#if (identifier? (cadr .form.2342)) (cons .the-core-define",
|
|
"-macro.2308 (cdr .form.2342)) (error \"define-macro: binding to non-variable obje",
|
|
"ct\" .form.2342)) (error \"malformed define-macro\" .form.2342)))) (core#begin #und",
|
|
"efined (core#begin (.define-transformer.2297 (core#quote else) (core#lambda ._.2",
|
|
"344 (error \"invalid use of auxiliary syntax\" (core#quote else)))) (core#begin (.",
|
|
"define-transformer.2297 (core#quote =>) (core#lambda ._.2345 (error \"invalid use",
|
|
" of auxiliary syntax\" (core#quote =>)))) (core#begin (.define-transformer.2297 (",
|
|
"core#quote unquote) (core#lambda ._.2346 (error \"invalid use of auxiliary syntax",
|
|
"\" (core#quote unquote)))) (core#begin (.define-transformer.2297 (core#quote unqu",
|
|
"ote-splicing) (core#lambda ._.2347 (error \"invalid use of auxiliary syntax\" (cor",
|
|
"e#quote unquote-splicing)))) (core#begin (.define-transformer.2297 (core#quote l",
|
|
"et) (core#lambda (.form.2348 .env.2349) (core#if (identifier? (cadr .form.2348))",
|
|
" ((core#lambda (.name.2350 .formal.2351 .body.2352) (cons (cons .the-lambda.2310",
|
|
" (cons (core#quote ()) (cons (cons .the-define.2309 (cons (cons .name.2350 (map ",
|
|
"car .formal.2351)) .body.2352)) (cons (cons .name.2350 (map cadr .formal.2351)) ",
|
|
"(core#quote ()))))) (core#quote ()))) (car (cdr .form.2348)) (car (cdr (cdr .for",
|
|
"m.2348))) (cdr (cdr (cdr .form.2348)))) ((core#lambda (.formal.2353 .body.2354) ",
|
|
"(cons (cons .the-lambda.2310 (cons (map car .formal.2353) .body.2354)) (map cadr",
|
|
" .formal.2353))) (car (cdr .form.2348)) (cdr (cdr .form.2348)))))) (core#begin (",
|
|
".define-transformer.2297 (core#quote and) (core#lambda (.form.2355 .env.2356) (c",
|
|
"ore#if (null? (cdr .form.2355)) #t (core#if (null? (cddr .form.2355)) (cadr .for",
|
|
"m.2355) (cons .the-if.2314 (cons (cadr .form.2355) (cons (cons (.the.2298 (core#",
|
|
"quote and)) (cddr .form.2355)) (cons (core#quote #f) (core#quote ()))))))))) (co",
|
|
"re#begin (.define-transformer.2297 (core#quote or) (core#lambda (.form.2357 .env",
|
|
".2358) (core#if (null? (cdr .form.2357)) #f ((core#lambda (.tmp.2359) (cons (.th",
|
|
"e.2298 (core#quote let)) (cons (cons (cons .tmp.2359 (cons (cadr .form.2357) (co",
|
|
"re#quote ()))) (core#quote ())) (cons (cons .the-if.2314 (cons .tmp.2359 (cons .",
|
|
"tmp.2359 (cons (cons (.the.2298 (core#quote or)) (cddr .form.2357)) (core#quote ",
|
|
"()))))) (core#quote ()))))) (make-identifier (core#quote it) .env.2358))))) (cor",
|
|
"e#begin (.define-transformer.2297 (core#quote cond) (core#lambda (.form.2360 .en",
|
|
"v.2361) ((core#lambda (.clauses.2362) (core#if (null? .clauses.2362) #undefined ",
|
|
"((core#lambda (.clause.2363) (core#if (core#if (identifier? (car .clause.2363)) ",
|
|
"(identifier=? (.the.2298 (core#quote else)) (make-identifier (car .clause.2363) ",
|
|
".env.2361)) #f) (cons .the-begin.2311 (cdr .clause.2363)) (core#if (null? (cdr .",
|
|
"clause.2363)) (cons (.the.2298 (core#quote or)) (cons (car .clause.2363) (cons (",
|
|
"cons (.the.2298 (core#quote cond)) (cdr .clauses.2362)) (core#quote ())))) (core",
|
|
"#if (core#if (identifier? (cadr .clause.2363)) (identifier=? (.the.2298 (core#qu",
|
|
"ote =>)) (make-identifier (cadr .clause.2363) .env.2361)) #f) ((core#lambda (.tm",
|
|
"p.2364) (cons (.the.2298 (core#quote let)) (cons (cons (cons .tmp.2364 (cons (ca",
|
|
"r .clause.2363) (core#quote ()))) (core#quote ())) (cons (cons .the-if.2314 (con",
|
|
"s .tmp.2364 (cons (cons (cadr (cdr .clause.2363)) (cons .tmp.2364 (core#quote ()",
|
|
"))) (cons (cons (.the.2298 (core#quote cond)) (cddr .form.2360)) (core#quote ())",
|
|
")))) (core#quote ()))))) (make-identifier (core#quote tmp) .env.2361)) (cons .th",
|
|
"e-if.2314 (cons (car .clause.2363) (cons (cons .the-begin.2311 (cdr .clause.2363",
|
|
")) (cons (cons (.the.2298 (core#quote cond)) (cdr .clauses.2362)) (core#quote ()",
|
|
"))))))))) (car .clauses.2362)))) (cdr .form.2360)))) (core#begin (.define-transf",
|
|
"ormer.2297 (core#quote quasiquote) (core#lambda (.form.2365 .env.2366) (core#beg",
|
|
"in (core#define .quasiquote?.2367 (core#lambda (.form.2371) (core#if (pair? .for",
|
|
"m.2371) (core#if (identifier? (car .form.2371)) (identifier=? (.the.2298 (core#q",
|
|
"uote quasiquote)) (make-identifier (car .form.2371) .env.2366)) #f) #f))) (core#",
|
|
"begin (core#define .unquote?.2368 (core#lambda (.form.2372) (core#if (pair? .for",
|
|
"m.2372) (core#if (identifier? (car .form.2372)) (identifier=? (.the.2298 (core#q",
|
|
"uote unquote)) (make-identifier (car .form.2372) .env.2366)) #f) #f))) (core#beg",
|
|
"in (core#define .unquote-splicing?.2369 (core#lambda (.form.2373) (core#if (pair",
|
|
"? .form.2373) (core#if (pair? (car .form.2373)) (core#if (identifier? (caar .for",
|
|
"m.2373)) (identifier=? (.the.2298 (core#quote unquote-splicing)) (make-identifie",
|
|
"r (caar .form.2373) .env.2366)) #f) #f) #f))) (core#begin (core#define .qq.2370 ",
|
|
"(core#lambda (.depth.2374 .expr.2375) (core#if (.unquote?.2368 .expr.2375) (core",
|
|
"#if (= .depth.2374 1) (cadr .expr.2375) (list (.the.2298 (core#quote list)) (lis",
|
|
"t (.the.2298 (core#quote quote)) (.the.2298 (core#quote unquote))) (.qq.2370 (- ",
|
|
".depth.2374 1) (car (cdr .expr.2375))))) (core#if (.unquote-splicing?.2369 .expr",
|
|
".2375) (core#if (= .depth.2374 1) (list (.the.2298 (core#quote append)) (car (cd",
|
|
"r (car .expr.2375))) (.qq.2370 .depth.2374 (cdr .expr.2375))) (list (.the.2298 (",
|
|
"core#quote cons)) (list (.the.2298 (core#quote list)) (list (.the.2298 (core#quo",
|
|
"te quote)) (.the.2298 (core#quote unquote-splicing))) (.qq.2370 (- .depth.2374 1",
|
|
") (car (cdr (car .expr.2375))))) (.qq.2370 .depth.2374 (cdr .expr.2375)))) (core",
|
|
"#if (.quasiquote?.2367 .expr.2375) (list (.the.2298 (core#quote list)) (list (.t",
|
|
"he.2298 (core#quote quote)) (.the.2298 (core#quote quasiquote))) (.qq.2370 (+ .d",
|
|
"epth.2374 1) (car (cdr .expr.2375)))) (core#if (pair? .expr.2375) (list (.the.22",
|
|
"98 (core#quote cons)) (.qq.2370 .depth.2374 (car .expr.2375)) (.qq.2370 .depth.2",
|
|
"374 (cdr .expr.2375))) (core#if (vector? .expr.2375) (list (.the.2298 (core#quot",
|
|
"e list->vector)) (.qq.2370 .depth.2374 (vector->list .expr.2375))) (list (.the.2",
|
|
"298 (core#quote quote)) .expr.2375)))))))) ((core#lambda (.x.2376) (.qq.2370 1 .",
|
|
"x.2376)) (cadr .form.2365)))))))) (core#begin (.define-transformer.2297 (core#qu",
|
|
"ote let*) (core#lambda (.form.2377 .env.2378) ((core#lambda (.bindings.2379 .bod",
|
|
"y.2380) (core#if (null? .bindings.2379) (cons (.the.2298 (core#quote let)) (cons",
|
|
" (core#quote ()) .body.2380)) (cons (.the.2298 (core#quote let)) (cons (cons (co",
|
|
"ns (car (car .bindings.2379)) (cdr (car .bindings.2379))) (core#quote ())) (cons",
|
|
" (cons (.the.2298 (core#quote let*)) (cons (cdr .bindings.2379) .body.2380)) (co",
|
|
"re#quote ())))))) (car (cdr .form.2377)) (cdr (cdr .form.2377))))) (core#begin (",
|
|
".define-transformer.2297 (core#quote letrec) (core#lambda (.form.2381 .env.2382)",
|
|
" (cons (.the.2298 (core#quote letrec*)) (cdr .form.2381)))) (core#begin (.define",
|
|
"-transformer.2297 (core#quote letrec*) (core#lambda (.form.2383 .env.2384) ((cor",
|
|
"e#lambda (.bindings.2385 .body.2386) ((core#lambda (.variables.2387 .initials.23",
|
|
"88) (cons (.the.2298 (core#quote let)) (cons .variables.2387 (append .initials.2",
|
|
"388 (append .body.2386 (core#quote ())))))) (map (core#lambda (.v.2389) (cons .v",
|
|
".2389 (cons (core#quote #undefined) (core#quote ())))) (map car .bindings.2385))",
|
|
" (map (core#lambda (.v.2390) (cons (.the.2298 (core#quote set!)) (append .v.2390",
|
|
" (core#quote ())))) .bindings.2385))) (car (cdr .form.2383)) (cdr (cdr .form.238",
|
|
"3))))) (core#begin (.define-transformer.2297 (core#quote let-values) (core#lambd",
|
|
"a (.form.2391 .env.2392) (cons (.the.2298 (core#quote let*-values)) (append (cdr",
|
|
" .form.2391) (core#quote ()))))) (core#begin (.define-transformer.2297 (core#quo",
|
|
"te let*-values) (core#lambda (.form.2393 .env.2394) ((core#lambda (.formals.2395",
|
|
" .body.2396) (core#if (null? .formals.2395) (cons (.the.2298 (core#quote let)) (",
|
|
"cons (core#quote ()) (append .body.2396 (core#quote ())))) ((core#lambda (.forma",
|
|
"l.2397) (cons (.the.2298 (core#quote call-with-values)) (cons (cons .the-lambda.",
|
|
"2310 (cons (core#quote ()) (cdr .formal.2397))) (cons (cons (.the.2298 (core#quo",
|
|
"te lambda)) (cons (car .formal.2397) (cons (cons (.the.2298 (core#quote let*-val",
|
|
"ues)) (cons (cdr .formals.2395) .body.2396)) (core#quote ())))) (core#quote ()))",
|
|
"))) (car .formals.2395)))) (cadr .form.2393) (cddr .form.2393)))) (core#begin (.",
|
|
"define-transformer.2297 (core#quote define-values) (core#lambda (.form.2398 .env",
|
|
".2399) ((core#lambda (.formal.2400 .body.2401) ((core#lambda (.tmps.2402) (cons ",
|
|
".the-begin.2311 (append ((core#lambda () (core#begin (core#define .loop.2403 (co",
|
|
"re#lambda (.formal.2404) (core#if (identifier? .formal.2404) (cons (cons .the-de",
|
|
"fine.2309 (cons .formal.2404 (cons (core#quote #undefined) (core#quote ())))) (c",
|
|
"ore#quote ())) (core#if (pair? .formal.2404) (cons (cons .the-define.2309 (cons ",
|
|
"(car .formal.2404) (cons (core#quote #undefined) (core#quote ())))) (.loop.2403 ",
|
|
"(cdr .formal.2404))) (core#quote ()))))) (.loop.2403 .formal.2400)))) (cons (con",
|
|
"s (.the.2298 (core#quote call-with-values)) (cons (cons .the-lambda.2310 (cons (",
|
|
"core#quote ()) .body.2401)) (cons (cons .the-lambda.2310 (cons .tmps.2402 ((core",
|
|
"#lambda () (core#begin (core#define .loop.2405 (core#lambda (.formal.2406 .tmps.",
|
|
"2407) (core#if (identifier? .formal.2406) (cons (cons .the-set!.2313 (cons .form",
|
|
"al.2406 (cons .tmps.2407 (core#quote ())))) (core#quote ())) (core#if (pair? .fo",
|
|
"rmal.2406) (cons (cons .the-set!.2313 (cons (car .formal.2406) (cons (car .tmps.",
|
|
"2407) (core#quote ())))) (.loop.2405 (cdr .formal.2406) (cdr .tmps.2407))) (core",
|
|
"#quote ()))))) (.loop.2405 .formal.2400 .tmps.2402)))))) (core#quote ())))) (cor",
|
|
"e#quote ()))))) ((core#lambda () (core#begin (core#define .loop.2408 (core#lambd",
|
|
"a (.formal.2409) (core#if (identifier? .formal.2409) (make-identifier .formal.24",
|
|
"09 .env.2399) (core#if (pair? .formal.2409) (cons (make-identifier (car .formal.",
|
|
"2409) .env.2399) (.loop.2408 (cdr .formal.2409))) (core#quote ()))))) (.loop.240",
|
|
"8 .formal.2400)))))) (cadr .form.2398) (cddr .form.2398)))) (core#begin (.define",
|
|
"-transformer.2297 (core#quote do) (core#lambda (.form.2410 .env.2411) ((core#lam",
|
|
"bda (.bindings.2412 .test.2413 .cleanup.2414 .body.2415) ((core#lambda (.loop.24",
|
|
"16) (cons (.the.2298 (core#quote let)) (cons .loop.2416 (cons (map (core#lambda ",
|
|
"(.x.2417) (cons (car .x.2417) (cons (cadr .x.2417) (core#quote ())))) .bindings.",
|
|
"2412) (cons (cons .the-if.2314 (cons .test.2413 (cons (cons .the-begin.2311 .cle",
|
|
"anup.2414) (cons (cons .the-begin.2311 (append .body.2415 (cons (cons .loop.2416",
|
|
" (map (core#lambda (.x.2418) (core#if (null? (cdr (cdr .x.2418))) (car .x.2418) ",
|
|
"(car (cdr (cdr .x.2418))))) .bindings.2412)) (core#quote ())))) (core#quote ()))",
|
|
"))) (core#quote ())))))) (make-identifier (core#quote loop) .env.2411))) (car (c",
|
|
"dr .form.2410)) (car (car (cdr (cdr .form.2410)))) (cdr (car (cdr (cdr .form.241",
|
|
"0)))) (cdr (cdr (cdr .form.2410)))))) (core#begin (.define-transformer.2297 (cor",
|
|
"e#quote when) (core#lambda (.form.2419 .env.2420) ((core#lambda (.test.2421 .bod",
|
|
"y.2422) (cons .the-if.2314 (cons .test.2421 (cons (cons .the-begin.2311 (append ",
|
|
".body.2422 (core#quote ()))) (cons (core#quote #undefined) (core#quote ())))))) ",
|
|
"(car (cdr .form.2419)) (cdr (cdr .form.2419))))) (core#begin (.define-transforme",
|
|
"r.2297 (core#quote unless) (core#lambda (.form.2423 .env.2424) ((core#lambda (.t",
|
|
"est.2425 .body.2426) (cons .the-if.2314 (cons .test.2425 (cons (core#quote #unde",
|
|
"fined) (cons (cons .the-begin.2311 (append .body.2426 (core#quote ()))) (core#qu",
|
|
"ote ())))))) (car (cdr .form.2423)) (cdr (cdr .form.2423))))) (core#begin (.defi",
|
|
"ne-transformer.2297 (core#quote case) (core#lambda (.form.2427 .env.2428) ((core",
|
|
"#lambda (.key.2429 .clauses.2430) ((core#lambda (.the-key.2431) (cons (.the.2298",
|
|
" (core#quote let)) (cons (cons (cons .the-key.2431 (cons .key.2429 (core#quote (",
|
|
")))) (core#quote ())) (cons ((core#lambda () (core#begin (core#define .loop.2432",
|
|
" (core#lambda (.clauses.2433) (core#if (null? .clauses.2433) #undefined ((core#l",
|
|
"ambda (.clause.2434) (cons .the-if.2314 (cons (core#if (core#if (identifier? (ca",
|
|
"r .clause.2434)) (identifier=? (.the.2298 (core#quote else)) (make-identifier (c",
|
|
"ar .clause.2434) .env.2428)) #f) #t (cons (.the.2298 (core#quote or)) (append (m",
|
|
"ap (core#lambda (.x.2435) (cons (.the.2298 (core#quote eqv?)) (cons .the-key.243",
|
|
"1 (cons (cons .the-quote.2312 (cons .x.2435 (core#quote ()))) (core#quote ()))))",
|
|
") (car .clause.2434)) (core#quote ())))) (cons (core#if (core#if (identifier? (c",
|
|
"adr .clause.2434)) (identifier=? (.the.2298 (core#quote =>)) (make-identifier (c",
|
|
"adr .clause.2434) .env.2428)) #f) (cons (car (cdr (cdr .clause.2434))) (cons .th",
|
|
"e-key.2431 (core#quote ()))) (cons .the-begin.2311 (append (cdr .clause.2434) (c",
|
|
"ore#quote ())))) (cons (.loop.2432 (cdr .clauses.2433)) (core#quote ())))))) (ca",
|
|
"r .clauses.2433))))) (.loop.2432 .clauses.2430)))) (core#quote ()))))) (make-ide",
|
|
"ntifier (core#quote key) .env.2428))) (car (cdr .form.2427)) (cdr (cdr .form.242",
|
|
"7))))) (core#begin (.define-transformer.2297 (core#quote parameterize) (core#lam",
|
|
"bda (.form.2436 .env.2437) ((core#lambda (.formal.2438 .body.2439) (cons (.the.2",
|
|
"298 (core#quote with-dynamic-environment)) (cons (cons (.the.2298 (core#quote li",
|
|
"st)) (append (map (core#lambda (.x.2440) (cons (.the.2298 (core#quote cons)) (co",
|
|
"ns (car .x.2440) (cons (cadr .x.2440) (core#quote ()))))) .formal.2438) (core#qu",
|
|
"ote ()))) (cons (cons .the-lambda.2310 (cons (core#quote ()) (append .body.2439 ",
|
|
"(core#quote ())))) (core#quote ()))))) (car (cdr .form.2436)) (cdr (cdr .form.24",
|
|
"36))))) (.define-transformer.2297 (core#quote define-record-type) (core#lambda (",
|
|
".form.2441 .env.2442) ((core#lambda (.type.2443 .ctor.2444 .pred.2445 .fields.24",
|
|
"46) (cons .the-begin.2311 (cons (cons .the-define.2309 (cons .ctor.2444 (cons (c",
|
|
"ons (.the.2298 (core#quote make-record)) (cons (cons (core#quote quote) (cons .t",
|
|
"ype.2443 (core#quote ()))) (cons (cons (.the.2298 (core#quote vector)) (map (cor",
|
|
"e#lambda (.field.2447) (core#if (memq (car .field.2447) (cdr .ctor.2444)) (car .",
|
|
"field.2447) #undefined)) .fields.2446)) (core#quote ())))) (core#quote ())))) (c",
|
|
"ons (cons .the-define.2309 (cons .pred.2445 (cons (cons (.the.2298 (core#quote l",
|
|
"ambda)) (cons (cons (core#quote obj) (core#quote ())) (cons (cons (.the.2298 (co",
|
|
"re#quote and)) (cons (cons (.the.2298 (core#quote record?)) (cons (core#quote ob",
|
|
"j) (core#quote ()))) (cons (cons (.the.2298 (core#quote eq?)) (cons (cons (.the.",
|
|
"2298 (core#quote record-type)) (cons (core#quote obj) (core#quote ()))) (cons (c",
|
|
"ons (core#quote quote) (cons .type.2443 (core#quote ()))) (core#quote ())))) (co",
|
|
"re#quote ())))) (core#quote ())))) (core#quote ())))) ((core#lambda () (core#beg",
|
|
"in (core#define .loop.2448 (core#lambda (.fields.2449 .pos.2450 .acc.2451) (core",
|
|
"#if (null? .fields.2449) .acc.2451 ((core#lambda (.field.2452) ((core#lambda (.d",
|
|
"efs.2453) (.loop.2448 (cdr .fields.2449) (+ .pos.2450 1) (append .defs.2453 .acc",
|
|
".2451))) (cons (cons .the-define.2309 (cons (cons (cadr .field.2452) (cons (core",
|
|
"#quote obj) (core#quote ()))) (cons (cons .the-if.2314 (cons (cons .pred.2445 (c",
|
|
"ons (core#quote obj) (core#quote ()))) (cons (cons (.the.2298 (core#quote vector",
|
|
"-ref)) (cons (cons (.the.2298 (core#quote record-datum)) (cons (core#quote obj) ",
|
|
"(core#quote ()))) (cons .pos.2450 (core#quote ())))) (cons (cons (.the.2298 (cor",
|
|
"e#quote error)) (cons (core#quote \"record type mismatch\") (cons (core#quote obj)",
|
|
" (cons (cons (core#quote quote) (cons .type.2443 (core#quote ()))) (core#quote (",
|
|
")))))) (core#quote ()))))) (core#quote ())))) (core#if (null? (cddr .field.2452)",
|
|
") (core#quote ()) (cons (cons .the-define.2309 (cons (cons (car (cddr .field.245",
|
|
"2)) (cons (core#quote obj) (cons (core#quote value) (core#quote ())))) (cons (co",
|
|
"ns .the-if.2314 (cons (cons .pred.2445 (cons (core#quote obj) (core#quote ()))) ",
|
|
"(cons (cons (.the.2298 (core#quote vector-set!)) (cons (cons (.the.2298 (core#qu",
|
|
"ote record-datum)) (cons (core#quote obj) (core#quote ()))) (cons .pos.2450 (con",
|
|
"s (core#quote value) (core#quote ()))))) (cons (cons (.the.2298 (core#quote erro",
|
|
"r)) (cons (core#quote \"record type mismatch\") (cons (core#quote obj) (cons (cons",
|
|
" (core#quote quote) (cons .type.2443 (core#quote ()))) (core#quote ()))))) (core",
|
|
"#quote ()))))) (core#quote ())))) (core#quote ())))))) (car .fields.2449))))) (.",
|
|
"loop.2448 .fields.2446 0 (core#quote ()))))))))) (car (cdr .form.2441)) (car (cd",
|
|
"r (cdr .form.2441))) (car (cdr (cdr (cdr .form.2441)))) (cdr (cdr (cdr (cdr .for",
|
|
"m.2441))))))))))))))))))))))))))))))))))))) (.the.2298 (core#quote core#define))",
|
|
" (.the.2298 (core#quote core#lambda)) (.the.2298 (core#quote core#begin)) (.the.",
|
|
"2298 (core#quote core#quote)) (.the.2298 (core#quote core#set!)) (.the.2298 (cor",
|
|
"e#quote core#if)) (.the.2298 (core#quote core#define-macro)) (.the.2298 (core#qu",
|
|
"ote define)) (.the.2298 (core#quote lambda)) (.the.2298 (core#quote begin)) (.th",
|
|
"e.2298 (core#quote quote)) (.the.2298 (core#quote set!)) (.the.2298 (core#quote ",
|
|
"if)) (.the.2298 (core#quote define-macro))))))) (core#begin (core#begin (core#de",
|
|
"fine compile #undefined) (call-with-values (core#lambda () ((core#lambda () (cor",
|
|
"e#begin (core#define .caddr.2454 (core#lambda (.x.2461) (car (cddr .x.2461)))) (",
|
|
"core#begin (core#define .cadddr.2455 (core#lambda (.x.2462) (cadr (cddr .x.2462)",
|
|
"))) (core#begin (core#define .max.2456 (core#lambda (.a.2463 .b.2464) (core#if (",
|
|
"< .a.2463 .b.2464) .b.2464 .a.2463))) (core#begin (core#define .integer?.2457 (c",
|
|
"ore#lambda (.n.2465) (core#if (number? .n.2465) (exact? .n.2465) #f))) (core#beg",
|
|
"in (core#define .normalize.2458 ((core#lambda (.defs.2466) (core#begin (core#def",
|
|
"ine .normalize.2467 (core#lambda (.e.2468) (core#if (symbol? .e.2468) (cons (cor",
|
|
"e#quote ref) (cons .e.2468 (core#quote ()))) (core#if (not (pair? .e.2468)) (con",
|
|
"s (core#quote quote) (cons .e.2468 (core#quote ()))) ((core#lambda (.key.2469) (",
|
|
"core#if ((core#lambda (.it.2470) (core#if .it.2470 .it.2470 #f)) (eqv? .key.2469",
|
|
" (core#quote core#quote))) (cons (core#quote quote) (cdr .e.2468)) (core#if ((co",
|
|
"re#lambda (.it.2471) (core#if .it.2471 .it.2471 #f)) (eqv? .key.2469 (core#quote",
|
|
" core#define))) ((core#lambda (.var.2472 .val.2473) (core#begin (.defs.2466 (con",
|
|
"s .var.2472 (.defs.2466))) (cons (core#quote set!) (cons .var.2472 (cons (.norma",
|
|
"lize.2467 .val.2473) (core#quote ())))))) (cadr .e.2468) (.caddr.2454 .e.2468)) ",
|
|
"(core#if ((core#lambda (.it.2474) (core#if .it.2474 .it.2474 #f)) (eqv? .key.246",
|
|
"9 (core#quote core#lambda))) ((core#lambda (.args.2475 .body.2476) (with-dynamic",
|
|
"-environment (list (cons .defs.2466 (core#quote ()))) (core#lambda () ((core#lam",
|
|
"bda (.body.2477) (core#if (null? (.defs.2466)) (cons (core#quote lambda) (cons .",
|
|
"args.2475 (cons .body.2477 (core#quote ())))) (cons (core#quote lambda) (cons .a",
|
|
"rgs.2475 (cons (cons (cons (core#quote lambda) (cons (.defs.2466) (cons .body.24",
|
|
"77 (core#quote ())))) (append (map (core#lambda (._.2478) #f) (.defs.2466)) (cor",
|
|
"e#quote ()))) (core#quote ())))))) (.normalize.2467 .body.2476))))) (cadr .e.246",
|
|
"8) (.caddr.2454 .e.2468)) (core#if ((core#lambda (.it.2479) (core#if .it.2479 .i",
|
|
"t.2479 #f)) (eqv? .key.2469 (core#quote core#set!))) (cons (core#quote set!) (ma",
|
|
"p .normalize.2467 (cdr .e.2468))) (core#if ((core#lambda (.it.2480) (core#if .it",
|
|
".2480 .it.2480 #f)) (eqv? .key.2469 (core#quote core#if))) (cons (core#quote if)",
|
|
" (map .normalize.2467 (cdr .e.2468))) (core#if ((core#lambda (.it.2481) (core#if",
|
|
" .it.2481 .it.2481 #f)) (eqv? .key.2469 (core#quote core#begin))) (cons (core#qu",
|
|
"ote begin) (map .normalize.2467 (cdr .e.2468))) (core#if #t (map .normalize.2467",
|
|
" .e.2468) #undefined)))))))) (car .e.2468)))))) .normalize.2467)) (make-paramete",
|
|
"r (core#quote ())))) (core#begin (core#define .transform.2459 ((core#lambda () (",
|
|
"core#begin (core#define .uniq.2482 ((core#lambda (.n.2487) (core#lambda () (core",
|
|
"#begin (core#set! .n.2487 (+ .n.2487 1)) (string->symbol (string-append \"$\" (num",
|
|
"ber->string .n.2487)))))) 0)) (core#begin (core#define .transform-k.2483 (core#l",
|
|
"ambda (.e.2488 .k.2489) ((core#lambda (.key.2490) (core#if ((core#lambda (.it.24",
|
|
"91) (core#if .it.2491 .it.2491 ((core#lambda (.it.2492) (core#if .it.2492 .it.24",
|
|
"92 ((core#lambda (.it.2493) (core#if .it.2493 .it.2493 #f)) (eqv? .key.2490 (cor",
|
|
"e#quote quote))))) (eqv? .key.2490 (core#quote lambda))))) (eqv? .key.2490 (core",
|
|
"#quote ref))) (.k.2489 (.transform-v.2486 .e.2488)) (core#if ((core#lambda (.it.",
|
|
"2494) (core#if .it.2494 .it.2494 #f)) (eqv? .key.2490 (core#quote begin))) (.tra",
|
|
"nsform-k.2483 (cadr .e.2488) (core#lambda (._.2495) (.transform-k.2483 (.caddr.2",
|
|
"454 .e.2488) .k.2489))) (core#if ((core#lambda (.it.2496) (core#if .it.2496 .it.",
|
|
"2496 #f)) (eqv? .key.2490 (core#quote set!))) (.transform-k.2483 (.caddr.2454 .e",
|
|
".2488) (core#lambda (.v.2497) (cons (core#quote set!) (cons (cadr .e.2488) (cons",
|
|
" .v.2497 (cons (.k.2489 (core#quote (undefined))) (core#quote ()))))))) (core#if",
|
|
" ((core#lambda (.it.2498) (core#if .it.2498 .it.2498 #f)) (eqv? .key.2490 (core#",
|
|
"quote if))) ((core#lambda (.v.2499 .c.2500) (cons (cons (core#quote lambda) (con",
|
|
"s (cons .c.2500 (core#quote ())) (cons (.transform-k.2483 (cadr .e.2488) (core#l",
|
|
"ambda (.x.2501) (cons (core#quote if) (cons .x.2501 (cons (.transform-c.2485 (.c",
|
|
"addr.2454 .e.2488) .c.2500) (cons (.transform-c.2485 (.cadddr.2455 .e.2488) .c.2",
|
|
"500) (core#quote ()))))))) (core#quote ())))) (cons (cons (core#quote lambda) (c",
|
|
"ons (cons .v.2499 (core#quote ())) (cons (.k.2489 (cons (core#quote ref) (cons .",
|
|
"v.2499 (core#quote ())))) (core#quote ())))) (core#quote ())))) (.uniq.2482) (co",
|
|
"ns (core#quote ref) (cons (.uniq.2482) (core#quote ())))) (core#if #t ((core#lam",
|
|
"bda (.v.2502) ((core#lambda (.c.2503) ((core#lambda () (.transform-k.2483 (car .",
|
|
"e.2488) (core#lambda (.f.2504) (.transform*-k.2484 (cdr .e.2488) (core#lambda (.",
|
|
"args.2505) (cons .f.2504 (cons .c.2503 (append .args.2505 (core#quote ()))))))))",
|
|
"))) (cons (core#quote lambda) (cons (cons .v.2502 (core#quote ())) (cons (.k.248",
|
|
"9 (cons (core#quote ref) (cons .v.2502 (core#quote ())))) (core#quote ())))))) (",
|
|
".uniq.2482)) #undefined)))))) (car .e.2488)))) (core#begin (core#define .transfo",
|
|
"rm*-k.2484 (core#lambda (.es.2506 .k.2507) (core#if (null? .es.2506) (.k.2507 (c",
|
|
"ore#quote ())) (.transform-k.2483 (car .es.2506) (core#lambda (.x.2508) (.transf",
|
|
"orm*-k.2484 (cdr .es.2506) (core#lambda (.xs.2509) (.k.2507 (cons .x.2508 .xs.25",
|
|
"09))))))))) (core#begin (core#define .transform-c.2485 (core#lambda (.e.2510 .c.",
|
|
"2511) ((core#lambda (.key.2512) (core#if ((core#lambda (.it.2513) (core#if .it.2",
|
|
"513 .it.2513 ((core#lambda (.it.2514) (core#if .it.2514 .it.2514 ((core#lambda (",
|
|
".it.2515) (core#if .it.2515 .it.2515 #f)) (eqv? .key.2512 (core#quote quote)))))",
|
|
" (eqv? .key.2512 (core#quote lambda))))) (eqv? .key.2512 (core#quote ref))) (con",
|
|
"s .c.2511 (cons (.transform-v.2486 .e.2510) (core#quote ()))) (core#if ((core#la",
|
|
"mbda (.it.2516) (core#if .it.2516 .it.2516 #f)) (eqv? .key.2512 (core#quote begi",
|
|
"n))) (.transform-k.2483 (cadr .e.2510) (core#lambda (._.2517) (.transform-c.2485",
|
|
" (.caddr.2454 .e.2510) .c.2511))) (core#if ((core#lambda (.it.2518) (core#if .it",
|
|
".2518 .it.2518 #f)) (eqv? .key.2512 (core#quote set!))) (.transform-k.2483 (.cad",
|
|
"dr.2454 .e.2510) (core#lambda (.v.2519) (cons (core#quote set!) (cons (cadr .e.2",
|
|
"510) (cons .v.2519 (cons (cons .c.2511 (cons (cons (core#quote undefined) (core#",
|
|
"quote ())) (core#quote ()))) (core#quote ()))))))) (core#if ((core#lambda (.it.2",
|
|
"520) (core#if .it.2520 .it.2520 #f)) (eqv? .key.2512 (core#quote if))) (core#if ",
|
|
"(core#if (pair? .c.2511) (eq? (core#quote lambda) (car .c.2511)) #f) ((core#lamb",
|
|
"da (.k.2521) (cons (cons (core#quote lambda) (cons (cons .k.2521 (core#quote ())",
|
|
") (cons (.transform-k.2483 (cadr .e.2510) (core#lambda (.x.2522) (cons (core#quo",
|
|
"te if) (cons .x.2522 (cons (.transform-c.2485 (.caddr.2454 .e.2510) .k.2521) (co",
|
|
"ns (.transform-c.2485 (.cadddr.2455 .e.2510) .k.2521) (core#quote ()))))))) (cor",
|
|
"e#quote ())))) (cons .c.2511 (core#quote ())))) (cons (core#quote ref) (cons (.u",
|
|
"niq.2482) (core#quote ())))) (.transform-k.2483 (cadr .e.2510) (core#lambda (.x.",
|
|
"2523) (cons (core#quote if) (cons .x.2523 (cons (.transform-c.2485 (.caddr.2454 ",
|
|
".e.2510) .c.2511) (cons (.transform-c.2485 (.cadddr.2455 .e.2510) .c.2511) (core",
|
|
"#quote ())))))))) (core#if #t (.transform-k.2483 (car .e.2510) (core#lambda (.f.",
|
|
"2524) (.transform*-k.2484 (cdr .e.2510) (core#lambda (.args.2525) (cons .f.2524 ",
|
|
"(cons .c.2511 (append .args.2525 (core#quote ())))))))) #undefined)))))) (car .e",
|
|
".2510)))) (core#begin (core#define .transform-v.2486 (core#lambda (.e.2526) ((co",
|
|
"re#lambda (.key.2527) (core#if ((core#lambda (.it.2528) (core#if .it.2528 .it.25",
|
|
"28 ((core#lambda (.it.2529) (core#if .it.2529 .it.2529 #f)) (eqv? .key.2527 (cor",
|
|
"e#quote quote))))) (eqv? .key.2527 (core#quote ref))) .e.2526 (core#if ((core#la",
|
|
"mbda (.it.2530) (core#if .it.2530 .it.2530 #f)) (eqv? .key.2527 (core#quote lamb",
|
|
"da))) ((core#lambda (.k.2531) (cons (core#quote lambda) (cons (cons .k.2531 (app",
|
|
"end (cadr .e.2526) (core#quote ()))) (cons (.transform-c.2485 (.caddr.2454 .e.25",
|
|
"26) (cons (core#quote ref) (cons .k.2531 (core#quote ())))) (core#quote ()))))) ",
|
|
"(.uniq.2482)) #undefined))) (car .e.2526)))) (core#lambda (.e.2532) ((core#lambd",
|
|
"a (.k.2533) (cons (core#quote lambda) (cons (cons .k.2533 (core#quote ())) (cons",
|
|
" (.transform-c.2485 .e.2532 (cons (core#quote ref) (cons .k.2533 (core#quote ())",
|
|
"))) (core#quote ()))))) (.uniq.2482))))))))))) (core#begin (core#define .codegen",
|
|
".2460 ((core#lambda () (core#begin (core#define .lookup.2534 (core#lambda (.var.",
|
|
"2546 .env.2547) ((core#lambda () (core#begin (core#define .up.2548 (core#lambda ",
|
|
"(.depth.2549 .env.2550) (core#if (null? .env.2550) (cons (core#quote global) (co",
|
|
"ns .var.2546 (core#quote ()))) ((core#lambda () (core#begin (core#define .loop.2",
|
|
"551 (core#lambda (.index.2552 .binding.2553) (core#if (symbol? .binding.2553) (c",
|
|
"ore#if (eq? .var.2546 .binding.2553) (cons (core#quote local) (cons .depth.2549 ",
|
|
"(cons .index.2552 (core#quote ())))) (.up.2548 (+ .depth.2549 1) (cdr .env.2550)",
|
|
")) (core#if (null? .binding.2553) (.up.2548 (+ .depth.2549 1) (cdr .env.2550)) (",
|
|
"core#if (eq? .var.2546 (car .binding.2553)) (cons (core#quote local) (cons .dept",
|
|
"h.2549 (cons .index.2552 (core#quote ())))) (.loop.2551 (+ .index.2552 1) (cdr .",
|
|
"binding.2553))))))) (.loop.2551 1 (car .env.2550)))))))) (.up.2548 0 .env.2547))",
|
|
")))) (core#begin (core#define .env.2535 (make-parameter (core#quote ()))) (core#",
|
|
"begin (core#define .code.2536 (make-parameter (core#quote ()))) (core#begin (cor",
|
|
"e#define .reps.2537 (make-parameter (core#quote ()))) (core#begin (core#define .",
|
|
"objs.2538 (make-parameter (core#quote ()))) (core#begin (core#define .emit.2539 ",
|
|
"(core#lambda (.inst.2554) (.code.2536 (cons .inst.2554 (.code.2536))))) (core#be",
|
|
"gin (core#define .emit-irep.2540 (core#lambda (.irep.2555) ((core#lambda (.n.255",
|
|
"6) (core#begin (.reps.2537 (cons .irep.2555 (.reps.2537))) .n.2556)) (length (.r",
|
|
"eps.2537))))) (core#begin (core#define .emit-objs.2541 (core#lambda (.obj.2557) ",
|
|
"((core#lambda (.n.2558) (core#begin (.objs.2538 (cons .obj.2557 (.objs.2538))) .",
|
|
"n.2558)) (length (.objs.2538))))) (core#begin (core#define .make-label.2542 ((co",
|
|
"re#lambda (.n.2559) (core#lambda () ((core#lambda (.m.2560) (core#begin (core#se",
|
|
"t! .n.2559 (+ .n.2559 1)) .m.2560)) .n.2559))) 0)) (core#begin (core#define .emi",
|
|
"t-label.2543 (core#lambda (.label.2561) (.code.2536 (cons .label.2561 (.code.253",
|
|
"6))))) (core#begin (core#define .codegen-e.2544 (core#lambda (.e.2562) ((core#la",
|
|
"mbda (.key.2563) (core#if ((core#lambda (.it.2564) (core#if .it.2564 .it.2564 ((",
|
|
"core#lambda (.it.2565) (core#if .it.2565 .it.2565 ((core#lambda (.it.2566) (core",
|
|
"#if .it.2566 .it.2566 ((core#lambda (.it.2567) (core#if .it.2567 .it.2567 #f)) (",
|
|
"eqv? .key.2563 (core#quote undefined))))) (eqv? .key.2563 (core#quote quote)))))",
|
|
" (eqv? .key.2563 (core#quote lambda))))) (eqv? .key.2563 (core#quote ref))) (.co",
|
|
"degen-a.2545 .e.2562 0) (core#if ((core#lambda (.it.2568) (core#if .it.2568 .it.",
|
|
"2568 #f)) (eqv? .key.2563 (core#quote set!))) (core#begin (.codegen-a.2545 (.cad",
|
|
"dr.2454 .e.2562) 0) (core#begin ((core#lambda (.x.2569) ((core#lambda (.op.2570)",
|
|
" ((core#lambda () (.emit.2539 (cons .op.2570 (cons (core#quote 0) (cdr .x.2569))",
|
|
"))))) (core#if (eq? (core#quote global) (car .x.2569)) (core#quote GSET) (core#q",
|
|
"uote LSET)))) (.lookup.2534 (cadr .e.2562) (.env.2535))) (.codegen-e.2544 (.cadd",
|
|
"dr.2455 .e.2562)))) (core#if ((core#lambda (.it.2571) (core#if .it.2571 .it.2571",
|
|
" #f)) (eqv? .key.2563 (core#quote if))) (core#begin (.codegen-a.2545 (cadr .e.25",
|
|
"62) 0) ((core#lambda (.label.2572) (core#begin (.emit.2539 (cons (core#quote CON",
|
|
"D) (cons (core#quote 0) (cons .label.2572 (core#quote ()))))) (core#begin (.code",
|
|
"gen-e.2544 (.caddr.2454 .e.2562)) (core#begin (.emit-label.2543 .label.2572) (.c",
|
|
"odegen-e.2544 (.cadddr.2455 .e.2562)))))) (.make-label.2542))) (core#if #t (core",
|
|
"#begin ((core#lambda () (core#begin (core#define .loop.2573 (core#lambda (.i.257",
|
|
"4 .e.2575) (core#if (null? .e.2575) #undefined (core#begin (.codegen-a.2545 (car",
|
|
" .e.2575) .i.2574) (.loop.2573 (+ .i.2574 1) (cdr .e.2575)))))) (.loop.2573 0 .e",
|
|
".2562)))) (.emit.2539 (cons (core#quote CALL) (cons (- (length .e.2562) 1) (core",
|
|
"#quote ()))))) #undefined))))) (car .e.2562)))) (core#begin (core#define .codege",
|
|
"n-a.2545 (core#lambda (.e.2576 .i.2577) ((core#lambda (.key.2578) (core#if ((cor",
|
|
"e#lambda (.it.2579) (core#if .it.2579 .it.2579 #f)) (eqv? .key.2578 (core#quote ",
|
|
"ref))) ((core#lambda (.x.2580) ((core#lambda (.op.2581) ((core#lambda () (.emit.",
|
|
"2539 (cons .op.2581 (cons .i.2577 (cdr .x.2580))))))) (core#if (eq? (core#quote ",
|
|
"global) (car .x.2580)) (core#quote GREF) (core#quote LREF)))) (.lookup.2534 (cad",
|
|
"r .e.2576) (.env.2535))) (core#if ((core#lambda (.it.2582) (core#if .it.2582 .it",
|
|
".2582 #f)) (eqv? .key.2578 (core#quote quote))) ((core#lambda (.obj.2583) (core#",
|
|
"if (eq? #t .obj.2583) (.emit.2539 (cons (core#quote LOADT) (cons .i.2577 (core#q",
|
|
"uote ())))) (core#if (eq? #f .obj.2583) (.emit.2539 (cons (core#quote LOADF) (co",
|
|
"ns .i.2577 (core#quote ())))) (core#if (null? .obj.2583) (.emit.2539 (cons (core",
|
|
"#quote LOADN) (cons .i.2577 (core#quote ())))) (core#if (eq? #undefined .obj.258",
|
|
"3) (.emit.2539 (cons (core#quote LOADU) (cons .i.2577 (core#quote ())))) (core#i",
|
|
"f (core#if (.integer?.2457 .obj.2583) (<= -128 .obj.2583 127) #f) (.emit.2539 (c",
|
|
"ons (core#quote LOADI) (cons .i.2577 (cons .obj.2583 (core#quote ()))))) ((core#",
|
|
"lambda (.n.2584) (.emit.2539 (cons (core#quote LOAD) (cons .i.2577 (cons .n.2584",
|
|
" (core#quote ())))))) (emit-obj .obj.2583)))))))) (cadr .e.2576)) (core#if ((cor",
|
|
"e#lambda (.it.2585) (core#if .it.2585 .it.2585 #f)) (eqv? .key.2578 (core#quote ",
|
|
"undefined))) (.emit.2539 (cons (core#quote LOADU) (cons .i.2577 (core#quote ()))",
|
|
")) (core#if ((core#lambda (.it.2586) (core#if .it.2586 .it.2586 #f)) (eqv? .key.",
|
|
"2578 (core#quote lambda))) ((core#lambda (.frame-size.2587 .argc-varg.2588) ((co",
|
|
"re#lambda (.irep.2589) ((core#lambda (.n.2590) (.emit.2539 (cons (core#quote PRO",
|
|
"C) (cons .i.2577 (cons .n.2590 (core#quote ())))))) (.emit-irep.2540 .irep.2589)",
|
|
")) (with-dynamic-environment (list (cons .code.2536 (core#quote ())) (cons .env.",
|
|
"2535 (cons (cadr .e.2576) (.env.2535))) (cons .reps.2537 (core#quote ())) (cons ",
|
|
".objs.2538 (core#quote ()))) (core#lambda () (core#begin (.codegen-e.2544 (.cadd",
|
|
"r.2454 .e.2576)) (list (reverse (.code.2536)) (reverse (.reps.2537)) (reverse (.",
|
|
"objs.2538)) .argc-varg.2588 .frame-size.2587)))))) ((core#lambda () (core#begin ",
|
|
"(core#define .loop.2591 (core#lambda (.e.2592) ((core#lambda (.key.2593) (core#i",
|
|
"f ((core#lambda (.it.2594) (core#if .it.2594 .it.2594 ((core#lambda (.it.2595) (",
|
|
"core#if .it.2595 .it.2595 ((core#lambda (.it.2596) (core#if .it.2596 .it.2596 ((",
|
|
"core#lambda (.it.2597) (core#if .it.2597 .it.2597 #f)) (eqv? .key.2593 (core#quo",
|
|
"te undefined))))) (eqv? .key.2593 (core#quote quote))))) (eqv? .key.2593 (core#q",
|
|
"uote lambda))))) (eqv? .key.2593 (core#quote ref))) 1 (core#if ((core#lambda (.i",
|
|
"t.2598) (core#if .it.2598 .it.2598 #f)) (eqv? .key.2593 (core#quote if))) (.max.",
|
|
"2456 (.loop.2591 (.caddr.2454 .e.2592)) (.loop.2591 (.cadddr.2455 .e.2592))) (co",
|
|
"re#if ((core#lambda (.it.2599) (core#if .it.2599 .it.2599 #f)) (eqv? .key.2593 (",
|
|
"core#quote set!))) (.loop.2591 (.cadddr.2455 .e.2592)) (core#if #t (+ 1 (length ",
|
|
".e.2592)) #undefined))))) (car .e.2592)))) (.loop.2591 (.caddr.2454 .e.2576)))))",
|
|
" ((core#lambda () (core#begin (core#define .loop.2600 (core#lambda (.args.2601 .",
|
|
"c.2602) (core#if (symbol? .args.2601) (cons .c.2602 #t) (core#if (null? .args.26",
|
|
"01) (cons .c.2602 #f) (.loop.2600 (cdr .args.2601) (+ 1 .c.2602)))))) (.loop.260",
|
|
"0 (cadr .e.2576) 0))))) #undefined))))) (car .e.2576)))) (core#lambda (.e.2603) ",
|
|
"(with-dynamic-environment (list (cons .code.2536 (core#quote ())) (cons .env.253",
|
|
"5 (core#quote ())) (cons .reps.2537 (core#quote ())) (cons .objs.2538 (core#quot",
|
|
"e ()))) (core#lambda () (core#begin (.codegen-e.2544 .e.2603) (car (.reps.2537))",
|
|
"))))))))))))))))))) (core#lambda (.e.2604) (.codegen.2460 (.transform.2459 (.nor",
|
|
"malize.2458 .e.2604)))))))))))))) (core#lambda (.compile.2605) (core#set! compil",
|
|
"e .compile.2605)))) (core#define eval (core#lambda (.expr.2606 . .env.2607) (loa",
|
|
"d (expand .expr.2606 (core#if (null? .env.2607) default-environment (car .env.26",
|
|
"07)))))))))",
|
|
};
|
|
#endif
|
|
|
|
#if PIC_USE_LIBRARY
|
|
static const char boot_library_rom[][80] = {
|
|
"(core#begin (core#define current-library #undefined) (core#begin (core#define fi",
|
|
"nd-library #undefined) (core#begin (core#define make-library #undefined) (core#b",
|
|
"egin (core#define library-environment #undefined) (core#begin (core#define libra",
|
|
"ry-exports #undefined) (core#begin (core#define library-import #undefined) (core",
|
|
"#begin (core#define library-export #undefined) (call-with-values (core#lambda ()",
|
|
" ((core#lambda () (core#begin (core#define .mangle.2608 (core#lambda (.name.2617",
|
|
") (core#begin (core#if (null? .name.2617) (error \"library name should be a list ",
|
|
"of at least one symbols\" .name.2617) #undefined) (core#begin (core#define .->str",
|
|
"ing.2618 (core#lambda (.n.2620) (core#if (symbol? .n.2620) ((core#lambda (.str.2",
|
|
"621) (core#begin (string-for-each (core#lambda (.c.2622) (core#if ((core#lambda ",
|
|
"(.it.2623) (core#if .it.2623 .it.2623 ((core#lambda (.it.2624) (core#if .it.2624",
|
|
" .it.2624 #f)) (char=? .c.2622 #\\:)))) (char=? .c.2622 #\\.)) (error \"elements of",
|
|
" library name may not contain '.' or ':'\" .n.2620) #undefined)) .str.2621) .str.",
|
|
"2621)) (symbol->string .n.2620)) (core#if (core#if (number? .n.2620) (core#if (e",
|
|
"xact? .n.2620) (<= 0 .n.2620) #f) #f) (number->string .n.2620) (error \"symbol or",
|
|
" non-negative integer is required\" .n.2620))))) (core#begin (core#define .join.2",
|
|
"619 (core#lambda (.strs.2625 .delim.2626) ((core#lambda () (core#begin (core#def",
|
|
"ine .loop.2627 (core#lambda (.res.2628 .strs.2629) (core#if (null? .strs.2629) .",
|
|
"res.2628 (.loop.2627 (string-append .res.2628 .delim.2626 (car .strs.2629)) (cdr",
|
|
" .strs.2629))))) (.loop.2627 (car .strs.2625) (cdr .strs.2625))))))) (core#if (s",
|
|
"ymbol? .name.2617) .name.2617 (string->symbol (.join.2619 (map .->string.2618 .n",
|
|
"ame.2617) \".\")))))))) (core#begin (core#define .current-library.2609 (make-param",
|
|
"eter (core#quote (picrin user)) .mangle.2608)) (core#begin (core#define .*librar",
|
|
"ies*.2610 (make-dictionary)) (core#begin (core#define .find-library.2611 (core#l",
|
|
"ambda (.name.2630) (dictionary-has? .*libraries*.2610 (.mangle.2608 .name.2630))",
|
|
")) (core#begin (core#define .make-library.2612 (core#lambda (.name.2631) ((core#",
|
|
"lambda (.name.2632) ((core#lambda (.env.2633 .exports.2634) (core#begin (set-ide",
|
|
"ntifier! (core#quote define-library) (core#quote define-library) .env.2633) (cor",
|
|
"e#begin (set-identifier! (core#quote import) (core#quote import) .env.2633) (cor",
|
|
"e#begin (set-identifier! (core#quote export) (core#quote export) .env.2633) (cor",
|
|
"e#begin (set-identifier! (core#quote cond-expand) (core#quote cond-expand) .env.",
|
|
"2633) (dictionary-set! .*libraries*.2610 .name.2632 (cons .env.2633 .exports.263",
|
|
"4))))))) (make-environment (string->symbol (string-append (symbol->string .name.",
|
|
"2632) \":\"))) (make-dictionary))) (.mangle.2608 .name.2631)))) (core#begin (core#",
|
|
"define .library-environment.2613 (core#lambda (.name.2635) (car (dictionary-ref ",
|
|
".*libraries*.2610 (.mangle.2608 .name.2635))))) (core#begin (core#define .librar",
|
|
"y-exports.2614 (core#lambda (.name.2636) (cdr (dictionary-ref .*libraries*.2610 ",
|
|
"(.mangle.2608 .name.2636))))) (core#begin (core#define .library-import.2615 (cor",
|
|
"e#lambda (.name.2637 .sym.2638 .alias.2639) ((core#lambda (.uid.2640) ((core#lam",
|
|
"bda (.env.2641) (set-identifier! .alias.2639 .uid.2640 .env.2641)) (.library-env",
|
|
"ironment.2613 (.current-library.2609)))) (dictionary-ref (.library-exports.2614 ",
|
|
".name.2637) .sym.2638)))) (core#begin (core#define .library-export.2616 (core#la",
|
|
"mbda (.sym.2642 .alias.2643) ((core#lambda (.env.2644 .exports.2645) (dictionary",
|
|
"-set! .exports.2645 .alias.2643 (find-identifier .sym.2642 .env.2644))) (.librar",
|
|
"y-environment.2613 (.current-library.2609)) (.library-exports.2614 (.current-lib",
|
|
"rary.2609))))) (core#begin ((core#lambda (.define-transformer.2646) (core#begin ",
|
|
"(.define-transformer.2646 (core#quote define-library) (core#lambda (.form.2647 .",
|
|
"_.2648) ((core#lambda (.name.2649 .body.2650) (core#begin ((core#lambda (.it.265",
|
|
"1) (core#if .it.2651 .it.2651 ((core#lambda (.it.2652) (core#if .it.2652 .it.265",
|
|
"2 #f)) (.make-library.2612 .name.2649)))) (.find-library.2611 .name.2649)) (with",
|
|
"-dynamic-environment (list (cons .current-library.2609 .name.2649)) (core#lambda",
|
|
" () (for-each (core#lambda (.expr.2653) (eval .expr.2653 .name.2649)) .body.2650",
|
|
"))))) (cadr .form.2647) (cddr .form.2647)))) (core#begin (.define-transformer.26",
|
|
"46 (core#quote cond-expand) (core#lambda (.form.2654 ._.2655) ((core#lambda (.te",
|
|
"st.2656) (core#begin (core#set! .test.2656 (core#lambda (.form.2657) ((core#lamb",
|
|
"da (.it.2658) (core#if .it.2658 .it.2658 ((core#lambda (.it.2659) (core#if .it.2",
|
|
"659 .it.2659 ((core#lambda (.it.2660) (core#if .it.2660 .it.2660 #f)) (core#if (",
|
|
"pair? .form.2657) ((core#lambda (.key.2661) (core#if ((core#lambda (.it.2662) (c",
|
|
"ore#if .it.2662 .it.2662 #f)) (eqv? .key.2661 (core#quote library))) (.find-libr",
|
|
"ary.2611 (cadr .form.2657)) (core#if ((core#lambda (.it.2663) (core#if .it.2663 ",
|
|
".it.2663 #f)) (eqv? .key.2661 (core#quote not))) (not (.test.2656 (cadr .form.26",
|
|
"57))) (core#if ((core#lambda (.it.2664) (core#if .it.2664 .it.2664 #f)) (eqv? .k",
|
|
"ey.2661 (core#quote and))) ((core#lambda () (core#begin (core#define .loop.2665 ",
|
|
"(core#lambda (.form.2666) ((core#lambda (.it.2667) (core#if .it.2667 .it.2667 ((",
|
|
"core#lambda (.it.2668) (core#if .it.2668 .it.2668 #f)) (core#if (.test.2656 (car",
|
|
" .form.2666)) (.loop.2665 (cdr .form.2666)) #f)))) (null? .form.2666)))) (.loop.",
|
|
"2665 (cdr .form.2657))))) (core#if ((core#lambda (.it.2669) (core#if .it.2669 .i",
|
|
"t.2669 #f)) (eqv? .key.2661 (core#quote or))) ((core#lambda () (core#begin (core",
|
|
"#define .loop.2670 (core#lambda (.form.2671) (core#if (pair? .form.2671) ((core#",
|
|
"lambda (.it.2672) (core#if .it.2672 .it.2672 ((core#lambda (.it.2673) (core#if .",
|
|
"it.2673 .it.2673 #f)) (.loop.2670 (cdr .form.2671))))) (.test.2656 (car .form.26",
|
|
"71))) #f))) (.loop.2670 (cdr .form.2657))))) (core#if #t #f #undefined)))))) (ca",
|
|
"r .form.2657)) #f)))) (core#if (symbol? .form.2657) (memq .form.2657 (features))",
|
|
" #f)))) (eq? .form.2657 (core#quote else))))) ((core#lambda () (core#begin (core",
|
|
"#define .loop.2674 (core#lambda (.clauses.2675) (core#if (null? .clauses.2675) #",
|
|
"undefined (core#if (.test.2656 (caar .clauses.2675)) (cons (make-identifier (cor",
|
|
"e#quote begin) default-environment) (append (cdar .clauses.2675) (core#quote ())",
|
|
")) (.loop.2674 (cdr .clauses.2675)))))) (.loop.2674 (cdr .form.2654))))))) #unde",
|
|
"fined))) (core#begin (.define-transformer.2646 (core#quote import) (core#lambda ",
|
|
"(.form.2676 ._.2677) ((core#lambda (.caddr.2678 .prefix.2679 .getlib.2680) ((cor",
|
|
"e#lambda (.extract.2681 .collect.2682) (core#begin (core#set! .extract.2681 (cor",
|
|
"e#lambda (.spec.2683) ((core#lambda (.key.2684) (core#if ((core#lambda (.it.2685",
|
|
") (core#if .it.2685 .it.2685 ((core#lambda (.it.2686) (core#if .it.2686 .it.2686",
|
|
" ((core#lambda (.it.2687) (core#if .it.2687 .it.2687 ((core#lambda (.it.2688) (c",
|
|
"ore#if .it.2688 .it.2688 #f)) (eqv? .key.2684 (core#quote except))))) (eqv? .key",
|
|
".2684 (core#quote prefix))))) (eqv? .key.2684 (core#quote rename))))) (eqv? .key",
|
|
".2684 (core#quote only))) (.extract.2681 (cadr .spec.2683)) (core#if #t (.getlib",
|
|
".2680 .spec.2683) #undefined))) (car .spec.2683)))) (core#begin (core#set! .coll",
|
|
"ect.2682 (core#lambda (.spec.2689) ((core#lambda (.key.2690) (core#if ((core#lam",
|
|
"bda (.it.2691) (core#if .it.2691 .it.2691 #f)) (eqv? .key.2690 (core#quote only)",
|
|
")) ((core#lambda (.alist.2692) (map (core#lambda (.var.2693) (assq .var.2693 .al",
|
|
"ist.2692)) (cddr .spec.2689))) (.collect.2682 (cadr .spec.2689))) (core#if ((cor",
|
|
"e#lambda (.it.2694) (core#if .it.2694 .it.2694 #f)) (eqv? .key.2690 (core#quote ",
|
|
"rename))) ((core#lambda (.alist.2695 .renames.2696) (map (core#lambda (.s.2697) ",
|
|
"((core#lambda (.it.2698) (core#if .it.2698 .it.2698 ((core#lambda (.it.2699) (co",
|
|
"re#if .it.2699 .it.2699 #f)) .s.2697))) (assq (car .s.2697) .renames.2696))) .al",
|
|
"ist.2695)) (.collect.2682 (cadr .spec.2689)) (map (core#lambda (.x.2700) (cons (",
|
|
"car .x.2700) (cadr .x.2700))) (cddr .spec.2689))) (core#if ((core#lambda (.it.27",
|
|
"01) (core#if .it.2701 .it.2701 #f)) (eqv? .key.2690 (core#quote prefix))) ((core",
|
|
"#lambda (.alist.2702) (map (core#lambda (.s.2703) (cons (.prefix.2679 (.caddr.26",
|
|
"78 .spec.2689) (car .s.2703)) (cdr .s.2703))) .alist.2702)) (.collect.2682 (cadr",
|
|
" .spec.2689))) (core#if ((core#lambda (.it.2704) (core#if .it.2704 .it.2704 #f))",
|
|
" (eqv? .key.2690 (core#quote except))) ((core#lambda (.alist.2705) ((core#lambda",
|
|
" () (core#begin (core#define .loop.2706 (core#lambda (.alist.2707) (core#if (nul",
|
|
"l? .alist.2707) (core#quote ()) (core#if (memq (caar .alist.2707) (cddr .spec.26",
|
|
"89)) (.loop.2706 (cdr .alist.2707)) (cons (car .alist.2707) (.loop.2706 (cdr .al",
|
|
"ist.2707))))))) (.loop.2706 .alist.2705))))) (.collect.2682 (cadr .spec.2689))) ",
|
|
"(core#if #t (dictionary-map (core#lambda (.x.2708) (cons .x.2708 .x.2708)) (.lib",
|
|
"rary-exports.2614 (.getlib.2680 .spec.2689))) #undefined)))))) (car .spec.2689))",
|
|
")) ((core#lambda (.import.2709) (core#begin (core#set! .import.2709 (core#lambda",
|
|
" (.spec.2710) ((core#lambda (.lib.2711 .alist.2712) (for-each (core#lambda (.slo",
|
|
"t.2713) (.library-import.2615 .lib.2711 (cdr .slot.2713) (car .slot.2713))) .ali",
|
|
"st.2712)) (.extract.2681 .spec.2710) (.collect.2682 .spec.2710)))) (for-each .im",
|
|
"port.2709 (cdr .form.2676)))) #undefined)))) #undefined #undefined)) (core#lambd",
|
|
"a (.x.2714) (car (cdr (cdr .x.2714)))) (core#lambda (.prefix.2715 .symbol.2716) ",
|
|
"(string->symbol (string-append (symbol->string .prefix.2715) (symbol->string .sy",
|
|
"mbol.2716)))) (core#lambda (.name.2717) (core#if (.find-library.2611 .name.2717)",
|
|
" .name.2717 (error \"library not found\" .name.2717)))))) (.define-transformer.264",
|
|
"6 (core#quote export) (core#lambda (.form.2718 ._.2719) ((core#lambda (.collect.",
|
|
"2720 .export.2721) (core#begin (core#set! .collect.2720 (core#lambda (.spec.2722",
|
|
") (core#if (symbol? .spec.2722) (cons .spec.2722 .spec.2722) (core#if (core#if (",
|
|
"list? .spec.2722) (core#if (= (length .spec.2722) 3) (eq? (car .spec.2722) (core",
|
|
"#quote rename)) #f) #f) (cons (list-ref .spec.2722 1) (list-ref .spec.2722 2)) (",
|
|
"error \"malformed export\"))))) (core#begin (core#set! .export.2721 (core#lambda (",
|
|
".spec.2723) ((core#lambda (.slot.2724) (.library-export.2616 (car .slot.2724) (c",
|
|
"dr .slot.2724))) (.collect.2720 .spec.2723)))) (for-each .export.2721 (cdr .form",
|
|
".2718))))) #undefined #undefined))))))) (core#lambda (.name.2725 .macro.2726) (d",
|
|
"ictionary-set! (macro-objects) .name.2725 .macro.2726))) (core#begin ((core#lamb",
|
|
"da () (core#begin (.make-library.2612 (core#quote (picrin base))) (core#begin (s",
|
|
"et-car! (dictionary-ref .*libraries*.2610 (.mangle.2608 (core#quote (picrin base",
|
|
")))) default-environment) (core#begin ((core#lambda (.exports.2727) ((core#lambd",
|
|
"a (.export-keyword.2728) ((core#lambda () (core#begin (for-each .export-keyword.",
|
|
"2728 (core#quote (define lambda quote set! if begin define-macro let let* letrec",
|
|
" letrec* let-values let*-values define-values quasiquote unquote unquote-splicin",
|
|
"g and or cond case else => do when unless parameterize define-record-type))) (co",
|
|
"re#begin (.export-keyword.2728 (core#quote boolean?)) (dictionary-for-each .expo",
|
|
"rt-keyword.2728 (global-objects))))))) (core#lambda (.keyword.2729) (dictionary-",
|
|
"set! .exports.2727 .keyword.2729 .keyword.2729)))) (.library-exports.2614 (core#",
|
|
"quote (picrin base)))) (core#begin (core#set! eval ((core#lambda (.e.2730) (core",
|
|
"#lambda (.expr.2731 . .lib.2732) ((core#lambda (.lib.2733) (with-dynamic-environ",
|
|
"ment (list (cons .current-library.2609 .lib.2733)) (core#lambda () (.e.2730 .exp",
|
|
"r.2731 (.library-environment.2613 .lib.2733))))) (core#if (null? .lib.2732) (.cu",
|
|
"rrent-library.2609) (car .lib.2732))))) eval)) (.make-library.2612 (core#quote (",
|
|
"picrin user))))))))) (values .current-library.2609 .find-library.2611 .make-libr",
|
|
"ary.2612 .library-environment.2613 .library-exports.2614 .library-import.2615 .l",
|
|
"ibrary-export.2616))))))))))))))) (core#lambda (.current-library.2734 .find-libr",
|
|
"ary.2735 .make-library.2736 .library-environment.2737 .library-exports.2738 .lib",
|
|
"rary-import.2739 .library-export.2740) (core#begin (core#set! current-library .c",
|
|
"urrent-library.2734) (core#begin (core#set! find-library .find-library.2735) (co",
|
|
"re#begin (core#set! make-library .make-library.2736) (core#begin (core#set! libr",
|
|
"ary-environment .library-environment.2737) (core#begin (core#set! library-export",
|
|
"s .library-exports.2738) (core#begin (core#set! library-import .library-import.2",
|
|
"739) (core#set! library-export .library-export.2740))))))))))))))))",
|
|
};
|
|
#endif
|
|
|
|
void
|
|
pic_boot(pic_state *PIC_UNUSED(pic))
|
|
{
|
|
#if PIC_USE_EVAL
|
|
pic_load_native(pic, &boot_compile_rom[0][0]);
|
|
#endif
|
|
#if PIC_USE_LIBRARY
|
|
pic_load_native(pic, &boot_library_rom[0][0]);
|
|
#endif
|
|
}
|