DIRECTORY IO USING [STREAM], Rope, Scheme, SchemePrivate USING [ByteCodeTemplate, ProcedureFromByteCodeTemplate], SchemeSys USING [FindFileToLoad]; SchemeLiteImpl: CEDAR PROGRAM IMPORTS Scheme, SchemePrivate, SchemeSys ~ BEGIN OPEN Scheme, SchemePrivate; ROPE: TYPE ~ Rope.ROPE; RegisterByteCodes: PROC [env: Environment] ~ { initErrors: INT ¬ 0; Inner: PROC [compiled: Any] ~ { WITH compiled SELECT FROM pair: Pair => { WITH pair.car SELECT FROM syntax: PrimitiveSyntax => { IF syntax­ = begin THEN { FOR tail: Any ¬ pair.cdr, Cdr[tail] UNTIL tail = NIL DO Inner[Car[tail]]; ENDLOOP; RETURN; }; }; ENDCASE => NULL; }; template: ByteCodeTemplate => { proc: Procedure ~ ProcedureFromByteCodeTemplate[template, env]; [] ¬ Apply[proc, NIL]; RETURN; }; ENDCASE => NULL; initErrors ¬ initErrors + 1; ERROR; }; Inner[systemByteCodes]; }; systemByteCodesName: ROPE = "Scheme.$cheme"; systemByteCodes: Any = ReadSystemByteCodes[]; ReadSystemByteCodes: PROC RETURNS [s: Any ¬ NIL] ~ { Inner: PROC [port: IO.STREAM, doExpand: BOOL] ~ { s ¬ Read[port]; }; SchemeSys.FindFileToLoad[systemByteCodesName, Inner]; }; RegisterInit[RegisterByteCodes]; END. φ SchemeLiteImpl.mesa Copyright Σ 1989, 1991 by Xerox Corporation. All rights reserved. Michael Plass, July 11, 1989 9:56:05 am PDT Bootstrap loader for the Hobbit-compiled portions of the system. Registration of Primitives Initalization Κq–(cedarcode) style•NewlineDelimiter ™codešœ™Kšœ Οeœ7™BK™+K™K™@K™—šΟk ˜ Kšžœžœžœ˜Kšœ˜Kšœ˜Kšœžœ3˜FKšœ žœ˜!—K˜KšΠlnœžœž˜Kšžœ!˜(šœžœžœ˜#K˜Kšžœžœžœ˜—headšΟn™š œžœ˜.Kšœ žœ˜š œžœ˜šžœ žœž˜šœ˜šžœ žœž˜šœ˜šžœžœ˜šžœ!žœžœž˜7Kšœ˜Kšžœ˜—Kšžœ˜Kšœ˜—Kšœ˜—Kšžœžœ˜—Kšœ˜—šœ˜Kšœ?˜?Kšœžœ˜Kšžœ˜Kšœ˜—Kšžœžœ˜—K˜Kšžœ˜K˜—Kšœ˜K˜Kšœ˜K˜——™ Kšœžœ˜,Kšœ-˜-š œžœžœ žœ˜4š  œžœžœžœ žœ˜1K˜K˜—Kšœ5˜5Kšœ˜—Kšœ ˜ K˜—Kšžœ˜K˜—…—zα