(PROVIDE "translator") (IMPORT-MODULE "includer") (IMPORT-MODULE "scanner") (IMPORT-MODULE "pile") (IMPORT-MODULE "parser") (IMPORT-MODULE "ast") (IN-PACKAGE "BOOTTRAN") (DEFPARAMETER |$currentModuleName| NIL) (DEFPARAMETER |$foreignsDefsForCLisp| NIL) (DEFUN |genModuleFinalization| (|stream|) (PROG (|init|) (DECLARE (SPECIAL |$currentModuleName| |$foreignsDefsForCLisp|)) (RETURN (COND ((|%hasFeature| :CLISP) (COND ((NULL |$foreignsDefsForCLisp|) NIL) ((NULL |$currentModuleName|) (|coreError| "current module has no name")) (#0='T (PROGN (SETQ |init| (CONS 'DEFUN (CONS (INTERN (CONCAT |$currentModuleName| '|InitCLispFFI|)) (CONS NIL (CONS (LIST 'MAPC (LIST 'FUNCTION 'FMAKUNBOUND) (LIST 'QUOTE (LET ((|bfVar#2| NIL) (|bfVar#1| |$foreignsDefsForCLisp|) (|d| NIL)) (LOOP (COND ((OR (ATOM |bfVar#1|) (PROGN (SETQ |d| (CAR |bfVar#1|)) NIL)) (RETURN (NREVERSE |bfVar#2|))) (#1='T (SETQ |bfVar#2| (CONS (CADR |d|) |bfVar#2|)))) (SETQ |bfVar#1| (CDR |bfVar#1|)))))) (LET ((|bfVar#4| NIL) (|bfVar#3| |$foreignsDefsForCLisp|) (|d| NIL)) (LOOP (COND ((OR (ATOM |bfVar#3|) (PROGN (SETQ |d| (CAR |bfVar#3|)) NIL)) (RETURN (NREVERSE |bfVar#4|))) (#1# (SETQ |bfVar#4| (CONS (LIST 'EVAL (LIST 'QUOTE |d|)) |bfVar#4|)))) (SETQ |bfVar#3| (CDR |bfVar#3|))))))))) (REALLYPRETTYPRINT |init| |stream|))))) (#0# NIL))))) (DEFPARAMETER |$translatingOldBoot| NIL) (DEFUN |AxiomCore|::|%sysInit| () (DECLARE (SPECIAL |$translatingOldBoot|)) (COND ((EQUAL (CDR (ASSOC (|Option| "boot") (|%systemOptions|))) "old") (SETQ |$translatingOldBoot| T)))) (DECLAIM (FTYPE (FUNCTION (|%Thing|) |%Thing|) |setCurrentPackage|)) (DEFUN |setCurrentPackage| (|x|) (SETQ *PACKAGE* |x|)) (DECLAIM (FTYPE (FUNCTION (|%String|) |%Thing|) |shoeCOMPILE-FILE|)) (DEFUN |shoeCOMPILE-FILE| (|lspFileName|) (COMPILE-FILE |lspFileName|)) (DEFUN BOOTTOCL (|fn| |out|) (BOOTTOCLLINES NIL |fn| |out|)) (DEFUN BOOTCLAM (|fn| |out|) (DECLARE (SPECIAL |$bfClamming|)) (PROGN (SETQ |$bfClamming| T) (BOOTCLAMLINES NIL |fn| |out|))) (DEFUN BOOTCLAMLINES (|lines| |fn| |out|) (BOOTTOCLLINES |lines| |fn| |out|)) (DEFUN BOOTTOCLLINES (|lines| |fn| |outfn|) (PROG (|result| |infn| |callingPackage|) (RETURN (PROGN (SETQ *READ-DEFAULT-FLOAT-FORMAT* 'DOUBLE-FLOAT) (SETQ |callingPackage| *PACKAGE*) (IN-PACKAGE "BOOTTRAN") (SETQ |infn| (|shoeAddbootIfNec| |fn|)) (SETQ |result| (|shoeOpenInputFile| |a| |infn| (|shoeClLines| |a| |fn| |lines| |outfn|))) (|setCurrentPackage| |callingPackage|) |result|)))) (DEFUN |shoeClLines| (|a| |fn| |lines| |outfn|) (DECLARE (SPECIAL |$GenVarCounter|)) (COND ((NULL |a|) (|shoeNotFound| |fn|)) ('T (PROGN (SETQ |$GenVarCounter| 0) (|shoeOpenOutputFile| |stream| |outfn| (PROGN (LET ((|bfVar#5| |lines|) (|line| NIL)) (LOOP (COND ((OR (ATOM |bfVar#5|) (PROGN (SETQ |line| (CAR |bfVar#5|)) NIL)) (RETURN NIL)) ('T (|shoeFileLine| |line| |stream|))) (SETQ |bfVar#5| (CDR |bfVar#5|)))) (|shoeFileTrees| (|shoeTransformStream| |a|) |stream|) (|genModuleFinalization| |stream|))) |outfn|)))) (DEFUN BOOTTOCLC (|fn| |out|) (BOOTTOCLCLINES NIL |fn| |out|)) (DEFUN BOOTTOCLCLINES (|lines| |fn| |outfn|) (PROG (|result| |infn| |callingPackage|) (RETURN (PROGN (SETQ |callingPackage| *PACKAGE*) (IN-PACKAGE "BOOTTRAN") (SETQ |infn| (|shoeAddbootIfNec| |fn|)) (SETQ |result| (|shoeOpenInputFile| |a| |infn| (|shoeClCLines| |a| |fn| |lines| |outfn|))) (|setCurrentPackage| |callingPackage|) |result|)))) (DEFUN |shoeClCLines| (|a| |fn| |lines| |outfn|) (DECLARE (SPECIAL |$GenVarCounter|)) (COND ((NULL |a|) (|shoeNotFound| |fn|)) ('T (PROGN (SETQ |$GenVarCounter| 0) (|shoeOpenOutputFile| |stream| |outfn| (PROGN (LET ((|bfVar#6| |lines|) (|line| NIL)) (LOOP (COND ((OR (ATOM |bfVar#6|) (PROGN (SETQ |line| (CAR |bfVar#6|)) NIL)) (RETURN NIL)) ('T (|shoeFileLine| |line| |stream|))) (SETQ |bfVar#6| (CDR |bfVar#6|)))) (|shoeFileTrees| (|shoeTransformToFile| |stream| (|shoeInclude| (|bAddLineNumber| (|bRgen| |a|) (|bIgen| 0)))) |stream|) (|genModuleFinalization| |stream|))) |outfn|)))) (DECLAIM (FTYPE (FUNCTION (|%String|) |%Thing|) BOOTTOMC)) (DEFUN BOOTTOMC (|fn|) (PROG (|result| |infn| |callingPackage|) (DECLARE (SPECIAL |$GenVarCounter|)) (RETURN (PROGN (SETQ |callingPackage| *PACKAGE*) (IN-PACKAGE "BOOTTRAN") (SETQ |$GenVarCounter| 0) (SETQ |infn| (|shoeAddbootIfNec| |fn|)) (SETQ |result| (|shoeOpenInputFile| |a| |infn| (|shoeMc| |a| |fn|))) (|setCurrentPackage| |callingPackage|) |result|)))) (DEFUN |shoeMc| (|a| |fn|) (COND ((NULL |a|) (|shoeNotFound| |fn|)) ('T (PROGN (|shoePCompileTrees| (|shoeTransformStream| |a|)) (|shoeConsole| (CONCAT |fn| " COMPILED AND LOADED")))))) (DEFUN EVAL-BOOT-FILE (|fn|) (PROG (|outfn| |infn| |b|) (RETURN (PROGN (SETQ |b| *PACKAGE*) (IN-PACKAGE "BOOTTRAN") (SETQ |infn| (|shoeAddbootIfNec| |fn|)) (SETQ |outfn| (CONCAT (|shoeRemovebootIfNec| |fn|) "." *LISP-SOURCE-FILETYPE*)) (|shoeOpenInputFile| |a| |infn| (|shoeClLines| |a| |infn| NIL |outfn|)) (|setCurrentPackage| |b|) (LOAD |outfn|))))) (DECLAIM (FTYPE (FUNCTION (|%String|) |%Thing|) BO)) (DEFUN BO (|fn|) (PROG (|infn| |b|) (DECLARE (SPECIAL |$GenVarCounter|)) (RETURN (PROGN (SETQ |b| *PACKAGE*) (IN-PACKAGE "BOOTTRAN") (SETQ |$GenVarCounter| 0) (SETQ |infn| (|shoeAddbootIfNec| |fn|)) (|shoeOpenInputFile| |a| |infn| (|shoeToConsole| |a| |fn|)) (|setCurrentPackage| |b|))))) (DEFUN BOCLAM (|fn|) (PROG (|result| |infn| |callingPackage|) (DECLARE (SPECIAL |$bfClamming| |$GenVarCounter|)) (RETURN (PROGN (SETQ |callingPackage| *PACKAGE*) (IN-PACKAGE "BOOTTRAN") (SETQ |$GenVarCounter| 0) (SETQ |$bfClamming| T) (SETQ |infn| (|shoeAddbootIfNec| |fn|)) (SETQ |result| (|shoeOpenInputFile| |a| |infn| (|shoeToConsole| |a| |fn|))) (|setCurrentPackage| |callingPackage|) |result|)))) (DEFUN |shoeToConsole| (|a| |fn|) (COND ((NULL |a|) (|shoeNotFound| |fn|)) ('T (|shoeConsoleTrees| (|shoeTransformToConsole| (|shoeInclude| (|bAddLineNumber| (|bRgen| |a|) (|bIgen| 0)))))))) (DEFUN STOUT (|string|) (PSTOUT (LIST |string|))) (DEFUN STEVAL (|string|) (PROG (|result| |fn| |a| |callingPackage|) (DECLARE (SPECIAL |$GenVarCounter|)) (RETURN (PROGN (SETQ |callingPackage| *PACKAGE*) (IN-PACKAGE "BOOTTRAN") (SETQ |$GenVarCounter| 0) (SETQ |a| (|shoeTransformString| (LIST |string|))) (SETQ |result| (COND ((|bStreamPackageNull| |a|) NIL) ('T (PROGN (SETQ |fn| (|stripm| (CAR |a|) *PACKAGE* (FIND-PACKAGE "BOOTTRAN"))) (EVAL |fn|))))) (|setCurrentPackage| |callingPackage|) |result|)))) (DEFUN STTOMC (|string|) (PROG (|result| |a| |callingPackage|) (DECLARE (SPECIAL |$GenVarCounter|)) (RETURN (PROGN (SETQ |callingPackage| *PACKAGE*) (IN-PACKAGE "BOOTTRAN") (SETQ |$GenVarCounter| 0) (SETQ |a| (|shoeTransformString| (LIST |string|))) (SETQ |result| (COND ((|bStreamPackageNull| |a|) NIL) ('T (|shoePCompile| (CAR |a|))))) (|setCurrentPackage| |callingPackage|) |result|)))) (DEFUN |shoeCompileTrees| (|s|) (LOOP (COND ((|bStreamNull| |s|) (RETURN NIL)) ('T (PROGN (|shoeCompile| (CAR |s|)) (SETQ |s| (CDR |s|))))))) (DECLAIM (FTYPE (FUNCTION (|%Ast|) |%Thing|) |shoerCompile|)) (DEFUN |shoeCompile| (|fn|) (PROG (|body| |bv| |ISTMP#2| |name| |ISTMP#1|) (RETURN (COND ((AND (CONSP |fn|) (EQ (CAR |fn|) 'DEFUN) (PROGN (SETQ |ISTMP#1| (CDR |fn|)) (AND (CONSP |ISTMP#1|) (PROGN (SETQ |name| (CAR |ISTMP#1|)) (SETQ |ISTMP#2| (CDR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (PROGN (SETQ |bv| (CAR |ISTMP#2|)) (SETQ |body| (CDR |ISTMP#2|)) 'T)))))) (COMPILE |name| (CONS 'LAMBDA (CONS |bv| |body|)))) ('T (EVAL |fn|)))))) (DEFUN |shoeTransform| (|str|) (|bNext| #'|shoeTreeConstruct| (|bNext| #'|shoePileInsert| (|bNext| #'|shoeLineToks| |str|)))) (DEFUN |shoeTransformString| (|s|) (|shoeTransform| (|shoeInclude| (|bAddLineNumber| |s| (|bIgen| 0))))) (DEFUN |shoeTransformStream| (|s|) (|shoeTransformString| (|bRgen| |s|))) (DEFUN |shoeTransformToConsole| (|str|) (|bNext| #'|shoeConsoleItem| (|bNext| #'|shoePileInsert| (|bNext| #'|shoeLineToks| |str|)))) (DEFUN |shoeTransformToFile| (|fn| |str|) (|bFileNext| |fn| (|bNext| #'|shoePileInsert| (|bNext| #'|shoeLineToks| |str|)))) (DEFUN |shoeConsoleItem| (|str|) (PROG (|dq|) (RETURN (PROGN (SETQ |dq| (CAR |str|)) (|shoeConsoleLines| (|shoeDQlines| |dq|)) (CONS (|shoeParseTrees| |dq|) (CDR |str|)))))) (DEFUN |bFileNext| (|fn| |s|) (|bDelay| #'|bFileNext1| (LIST |fn| |s|))) (DEFUN |bFileNext1| (|fn| |s|) (PROG (|dq|) (RETURN (COND ((|bStreamNull| |s|) (LIST '|nullstream|)) ('T (PROGN (SETQ |dq| (CAR |s|)) (|shoeFileLines| (|shoeDQlines| |dq|) |fn|) (|bAppend| (|shoeParseTrees| |dq|) (|bFileNext| |fn| (CDR |s|))))))))) (DEFUN |shoeParseTrees| (|dq|) (PROG (|toklist|) (RETURN (PROGN (SETQ |toklist| (|dqToList| |dq|)) (COND ((NULL |toklist|) NIL) ('T (|shoeOutParse| |toklist|))))))) (DEFUN |shoeTreeConstruct| (|str|) (CONS (|shoeParseTrees| (CAR |str|)) (CDR |str|))) (DEFUN |shoeDQlines| (|dq|) (PROG (|b| |a|) (RETURN (PROGN (SETQ |a| (CDAAR (|shoeLastTokPosn| |dq|))) (SETQ |b| (CDAAR (|shoeFirstTokPosn| |dq|))) (|streamTake| (+ (- |a| |b|) 1) (CAR (|shoeFirstTokPosn| |dq|))))))) (DEFUN |streamTake| (|n| |s|) (COND ((|bStreamNull| |s|) NIL) ((EQL |n| 0) NIL) ('T (CONS (CAR |s|) (|streamTake| (- |n| 1) (CDR |s|)))))) (DEFUN |shoeFileLines| (|lines| |fn|) (PROGN (|shoeFileLine| " " |fn|) (LET ((|bfVar#7| |lines|) (|line| NIL)) (LOOP (COND ((OR (ATOM |bfVar#7|) (PROGN (SETQ |line| (CAR |bfVar#7|)) NIL)) (RETURN NIL)) ('T (|shoeFileLine| (|shoeAddComment| |line|) |fn|))) (SETQ |bfVar#7| (CDR |bfVar#7|)))) (|shoeFileLine| " " |fn|))) (DEFUN |shoeConsoleLines| (|lines|) (PROGN (|shoeConsole| " ") (LET ((|bfVar#8| |lines|) (|line| NIL)) (LOOP (COND ((OR (ATOM |bfVar#8|) (PROGN (SETQ |line| (CAR |bfVar#8|)) NIL)) (RETURN NIL)) ('T (|shoeConsole| (|shoeAddComment| |line|)))) (SETQ |bfVar#8| (CDR |bfVar#8|)))) (|shoeConsole| " "))) (DEFUN |shoeFileLine| (|x| |stream|) (PROGN (WRITE-LINE |x| |stream|) |x|)) (DEFUN |shoeFileTrees| (|s| |st|) (PROG (|a|) (RETURN (LOOP (COND ((|bStreamNull| |s|) (RETURN NIL)) ('T (PROGN (SETQ |a| (CAR |s|)) (COND ((EQCAR |a| '+LINE) (|shoeFileLine| (CADR |a|) |st|)) ('T (REALLYPRETTYPRINT |a| |st|) (TERPRI |st|))) (SETQ |s| (CDR |s|))))))))) (DEFUN |shoePPtoFile| (|x| |stream|) (PROGN (SHOENOTPRETTYPRINT |x| |stream|) |x|)) (DEFUN |shoeConsoleTrees| (|s|) (PROG (|fn|) (RETURN (LOOP (COND ((|bStreamPackageNull| |s|) (RETURN NIL)) ('T (PROGN (SETQ |fn| (|stripm| (CAR |s|) *PACKAGE* (FIND-PACKAGE "BOOTTRAN"))) (REALLYPRETTYPRINT |fn|) (SETQ |s| (CDR |s|))))))))) (DEFUN |shoeAddComment| (|l|) (CONCAT "; " (CAR |l|))) (DEFUN |needsStableReference?| (|t|) (COND ((|%hasFeature| :GCL) NIL) ((OR (|%hasFeature| :SBCL) (|%hasFeature| :CLISP)) (OR (EQ |t| '|pointer|) (EQ |t| '|buffer|))) ('T T))) (DEFUN |coerceToNativeType| (|a| |t|) (COND ((|%hasFeature| :GCL) |a|) ((|%hasFeature| :SBCL) (COND ((EQ |t| '|buffer|) (LIST (|bfColonColon| 'SB-SYS 'VECTOR-SAP) |a|)) ((EQ |t| '|string|) |a|) ((|needsStableReference?| |t|) (|fatalError| "don't know how to coerce argument for native type")) (#0='T |a|))) ((|%hasFeature| :CLISP) (COND ((|needsStableReference?| |t|) (|fatalError| "don't know how to coerce argument for native type")) (#0# |a|))) (#0# (|fatalError| "don't know how to coerce argument for native type")))) (DEFUN |prepareArgumentsForNativeCall| (|args| |types|) (PROG (|preparedArgs| |unstableArgs|) (RETURN (PROGN (SETQ |unstableArgs| (LET ((|bfVar#11| NIL) (|bfVar#9| |args|) (|a| NIL) (|bfVar#10| |types|) (|t| NIL)) (LOOP (COND ((OR (ATOM |bfVar#9|) (PROGN (SETQ |a| (CAR |bfVar#9|)) NIL) (ATOM |bfVar#10|) (PROGN (SETQ |t| (CAR |bfVar#10|)) NIL)) (RETURN (NREVERSE |bfVar#11|))) (#0='T (AND (|needsStableReference?| |t|) (SETQ |bfVar#11| (CONS |a| |bfVar#11|))))) (SETQ |bfVar#9| (CDR |bfVar#9|)) (SETQ |bfVar#10| (CDR |bfVar#10|))))) (SETQ |preparedArgs| (LET ((|bfVar#14| NIL) (|bfVar#12| |args|) (|a| NIL) (|bfVar#13| |types|) (|t| NIL)) (LOOP (COND ((OR (ATOM |bfVar#12|) (PROGN (SETQ |a| (CAR |bfVar#12|)) NIL) (ATOM |bfVar#13|) (PROGN (SETQ |t| (CAR |bfVar#13|)) NIL)) (RETURN (NREVERSE |bfVar#14|))) (#0# (SETQ |bfVar#14| (CONS (|coerceToNativeType| |a| |t|) |bfVar#14|)))) (SETQ |bfVar#12| (CDR |bfVar#12|)) (SETQ |bfVar#13| (CDR |bfVar#13|))))) (LIST |unstableArgs| |preparedArgs|))))) (DEFUN |genImportDeclaration| (|op| |sig|) (PROG (|forwardingFun| |foreignDecl| |n| |newArgs| |unstableArgs| |LETTMP#1| |args| |s| |t| |m| |ISTMP#2| |op'| |ISTMP#1|) (DECLARE (SPECIAL |$foreignsDefsForCLisp|)) (RETURN (COND ((NOT (AND (CONSP |sig|) (EQ (CAR |sig|) '|Signature|) (PROGN (SETQ |ISTMP#1| (CDR |sig|)) (AND (CONSP |ISTMP#1|) (PROGN (SETQ |op'| (CAR |ISTMP#1|)) (SETQ |ISTMP#2| (CDR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (EQ (CDR |ISTMP#2|) NIL) (PROGN (SETQ |m| (CAR |ISTMP#2|)) #0='T))))))) (|coreError| "invalid signature")) ((NOT (AND (CONSP |m|) (EQ (CAR |m|) '|Mapping|) (PROGN (SETQ |ISTMP#1| (CDR |m|)) (AND (CONSP |ISTMP#1|) (PROGN (SETQ |t| (CAR |ISTMP#1|)) (SETQ |ISTMP#2| (CDR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (EQ (CDR |ISTMP#2|) NIL) (PROGN (SETQ |s| (CAR |ISTMP#2|)) #0#))))))) (|coreError| "invalid function type")) (#1='T (PROGN (COND ((AND (NOT (NULL |s|)) (SYMBOLP |s|)) (SETQ |s| (LIST |s|)))) (COND ((|needsStableReference?| |t|) (|fatalError| "non trivial return type for native function")) ((|%hasFeature| :GCL) (LIST (LIST 'DEFENTRY |op| (LET ((|bfVar#16| NIL) (|bfVar#15| |s|) (|x| NIL)) (LOOP (COND ((OR (ATOM |bfVar#15|) (PROGN (SETQ |x| (CAR |bfVar#15|)) NIL)) (RETURN (NREVERSE |bfVar#16|))) (#2='T (SETQ |bfVar#16| (CONS (|nativeType| |x|) |bfVar#16|)))) (SETQ |bfVar#15| (CDR |bfVar#15|)))) (LIST (|nativeType| |t|) (SYMBOL-NAME |op'|))))) (#1# (PROGN (SETQ |args| (LET ((|bfVar#18| NIL) (|bfVar#17| |s|) (|x| NIL)) (LOOP (COND ((OR (ATOM |bfVar#17|) (PROGN (SETQ |x| (CAR |bfVar#17|)) NIL)) (RETURN (NREVERSE |bfVar#18|))) (#2# (SETQ |bfVar#18| (CONS (GENSYM) |bfVar#18|)))) (SETQ |bfVar#17| (CDR |bfVar#17|))))) (COND ((|%hasFeature| :SBCL) (PROGN (SETQ |LETTMP#1| (|prepareArgumentsForNativeCall| |args| |s|)) (SETQ |unstableArgs| (CAR |LETTMP#1|)) (SETQ |newArgs| (CADR |LETTMP#1|)) (COND ((NULL |unstableArgs|) (LIST (LIST 'DEFUN |op| |args| (CONS (INTERN "ALIEN-FUNCALL" "SB-ALIEN") (CONS (LIST (INTERN "EXTERN-ALIEN" "SB-ALIEN") (SYMBOL-NAME |op'|) (CONS 'FUNCTION (CONS (|nativeType| |t|) (LET ((|bfVar#20| NIL) (|bfVar#19| |s|) (|x| NIL)) (LOOP (COND ((OR (ATOM |bfVar#19|) (PROGN (SETQ |x| (CAR |bfVar#19|)) NIL)) (RETURN (NREVERSE |bfVar#20|))) (#2# (SETQ |bfVar#20| (CONS (|nativeType| |x|) |bfVar#20|)))) (SETQ |bfVar#19| (CDR |bfVar#19|))))))) |args|))))) (#1# (LIST (LIST 'DEFUN |op| |args| (LIST (|bfColonColon| 'SB-SYS 'WITH-PINNED-OBJECTS) |unstableArgs| (CONS (INTERN "ALIEN-FUNCALL" "SB-ALIEN") (CONS (LIST (INTERN "EXTERN-ALIEN" "SB-ALIEN") (SYMBOL-NAME |op'|) (CONS 'FUNCTION (CONS (|nativeType| |t|) (LET ((|bfVar#22| NIL) (|bfVar#21| |s|) (|x| NIL)) (LOOP (COND ((OR (ATOM |bfVar#21|) (PROGN (SETQ |x| (CAR |bfVar#21|)) NIL)) (RETURN (NREVERSE |bfVar#22|))) (#2# (SETQ |bfVar#22| (CONS (|nativeType| |x|) |bfVar#22|)))) (SETQ |bfVar#21| (CDR |bfVar#21|))))))) |newArgs|))))))))) ((|%hasFeature| :CLISP) (PROGN (SETQ |foreignDecl| (PROGN (SETQ |n| (INTERN (CONCAT (SYMBOL-NAME |op|) "%clisp-hack"))) (LIST (|bfColonColon| 'FFI 'DEF-CALL-OUT) |n| (LIST :NAME (SYMBOL-NAME |op'|)) (CONS :ARGUMENTS (LET ((|bfVar#25| NIL) (|bfVar#23| |s|) (|x| NIL) (|bfVar#24| |args|) (|a| NIL)) (LOOP (COND ((OR (ATOM |bfVar#23|) (PROGN (SETQ |x| (CAR |bfVar#23|)) NIL) (ATOM |bfVar#24|) (PROGN (SETQ |a| (CAR |bfVar#24|)) NIL)) (RETURN (NREVERSE |bfVar#25|))) (#2# (SETQ |bfVar#25| (CONS (LIST |a| (|bfColonColon| 'FFI (|nativeType| |x|))) |bfVar#25|)))) (SETQ |bfVar#23| (CDR |bfVar#23|)) (SETQ |bfVar#24| (CDR |bfVar#24|))))) (LIST :RETURN-TYPE (|bfColonColon| 'FFI (|nativeType| |t|))) (LIST :LANGUAGE :STDC)))) (SETQ |forwardingFun| (LIST 'DEFUN |op| |args| (CONS |n| (LET ((|bfVar#28| NIL) (|bfVar#26| |args|) (|a| NIL) (|bfVar#27| |s|) (|x| NIL)) (LOOP (COND ((OR (ATOM |bfVar#26|) (PROGN (SETQ |a| (CAR |bfVar#26|)) NIL) (ATOM |bfVar#27|) (PROGN (SETQ |x| (CAR |bfVar#27|)) NIL)) (RETURN (NREVERSE |bfVar#28|))) (#2# (SETQ |bfVar#28| (CONS (|coerceToNativeType| |a| |t|) |bfVar#28|)))) (SETQ |bfVar#26| (CDR |bfVar#26|)) (SETQ |bfVar#27| (CDR |bfVar#27|))))))) (SETQ |$foreignsDefsForCLisp| (CONS |foreignDecl| |$foreignsDefsForCLisp|)) (LIST |forwardingFun|))) (#1# (|fatalError| "import declaration not implemented for this Lisp")))))))))))) (DEFUN |shoeOutParse| (|stream|) (PROG (|found|) (DECLARE (SPECIAL |$bpParenCount| |$bpCount| |$returns| |$typings| |$wheredefs| |$op| |$ttok| |$stok| |$stack| |$inputStream|)) (RETURN (PROGN (SETQ |$inputStream| |stream|) (SETQ |$stack| NIL) (SETQ |$stok| NIL) (SETQ |$ttok| NIL) (SETQ |$op| NIL) (SETQ |$wheredefs| NIL) (SETQ |$typings| NIL) (SETQ |$returns| NIL) (SETQ |$bpCount| 0) (SETQ |$bpParenCount| 0) (|bpFirstTok|) (SETQ |found| (CATCH 'TRAPPOINT (|bpOutItem|))) (COND ((EQ |found| 'TRAPPED) NIL) ((NOT (|bStreamNull| |$inputStream|)) (PROGN (|bpGeneralErrorHere|) NIL)) ((NULL |$stack|) (PROGN (|bpGeneralErrorHere|) NIL)) ('T (CAR |$stack|))))))) (DEFUN |genDeclaration| (|n| |t|) (PROG (|argTypes| |ISTMP#2| |valType| |ISTMP#1|) (RETURN (COND ((AND (CONSP |t|) (EQ (CAR |t|) '|Mapping|) (PROGN (SETQ |ISTMP#1| (CDR |t|)) (AND (CONSP |ISTMP#1|) (PROGN (SETQ |valType| (CAR |ISTMP#1|)) (SETQ |ISTMP#2| (CDR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (EQ (CDR |ISTMP#2|) NIL) (PROGN (SETQ |argTypes| (CAR |ISTMP#2|)) 'T)))))) (PROGN (COND ((|bfTupleP| |argTypes|) (SETQ |argTypes| (CDR |argTypes|)))) (COND ((AND (NOT (NULL |argTypes|)) (SYMBOLP |argTypes|)) (SETQ |argTypes| (LIST |argTypes|)))) (LIST 'DECLAIM (LIST 'FTYPE (LIST 'FUNCTION |argTypes| |valType|) |n|)))) ('T (LIST 'DECLAIM (LIST 'TYPE |t| |n|))))))) (DEFUN |translateSignatureDeclaration| (|d|) (PROG (|bfVar#30| |bfVar#29|) (RETURN (PROGN (SETQ |bfVar#29| |d|) (SETQ |bfVar#30| (CDR |bfVar#29|)) (CASE (CAR |bfVar#29|) (|Signature| (LET ((|n| (CAR |bfVar#30|)) (|t| (CADR |bfVar#30|))) (|genDeclaration| |n| |t|))) (T (|coreError| "signature expected"))))))) (DEFUN |translateToplevelExpression| (|expr|) (PROG (|expr'|) (RETURN (PROGN (SETQ |expr'| (CDR (CDR (|shoeCompTran| (LIST 'LAMBDA (LIST '|x|) |expr|))))) (LET ((|bfVar#31| |expr'|) (|t| NIL)) (LOOP (COND ((OR (ATOM |bfVar#31|) (PROGN (SETQ |t| (CAR |bfVar#31|)) NIL)) (RETURN NIL)) ('T (COND ((AND (CONSP |t|) (EQ (CAR |t|) 'DECLARE)) (IDENTITY (RPLACA |t| 'DECLAIM)))))) (SETQ |bfVar#31| (CDR |bfVar#31|)))) (|shoeEVALANDFILEACTQ| (COND ((< 1 (LENGTH |expr'|)) (CONS 'PROGN |expr'|)) ('T (CAR |expr'|)))))))) (DEFUN |bpOutItem| () (PROG (|bfVar#35| |bfVar#34| |r| |ISTMP#2| |l| |ISTMP#1| |b|) (DECLARE (SPECIAL |$foreignsDefsForCLisp| |$currentModuleName| |$op|)) (RETURN (PROGN (SETQ |$op| NIL) (OR (|bpComma|) (|bpTrap|)) (SETQ |b| (|bpPop1|)) (COND ((EQCAR |b| 'TUPLE) (|bpPush| (CDR |b|))) ((EQCAR |b| '+LINE) (|bpPush| (LIST |b|))) ((AND (CONSP |b|) (EQ (CAR |b|) 'L%T) (PROGN (SETQ |ISTMP#1| (CDR |b|)) (AND (CONSP |ISTMP#1|) (PROGN (SETQ |l| (CAR |ISTMP#1|)) (SETQ |ISTMP#2| (CDR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (EQ (CDR |ISTMP#2|) NIL) (PROGN (SETQ |r| (CAR |ISTMP#2|)) 'T))))) (IDENTP |l|)) (|bpPush| (LIST (LIST 'DEFPARAMETER |l| |r|)))) ('T (PROGN (SETQ |bfVar#34| |b|) (SETQ |bfVar#35| (CDR |bfVar#34|)) (CASE (CAR |bfVar#34|) (|Signature| (LET ((|op| (CAR |bfVar#35|)) (|t| (CADR |bfVar#35|))) (|bpPush| (LIST (|genDeclaration| |op| |t|))))) (|%Module| (LET ((|m| (CAR |bfVar#35|)) (|ds| (CADR |bfVar#35|))) (PROGN (SETQ |$currentModuleName| |m|) (SETQ |$foreignsDefsForCLisp| NIL) (|bpPush| (CONS (LIST 'PROVIDE (STRING |m|)) (LET ((|bfVar#33| NIL) (|bfVar#32| |ds|) (|d| NIL)) (LOOP (COND ((OR (ATOM |bfVar#32|) (PROGN (SETQ |d| (CAR |bfVar#32|)) NIL)) (RETURN (NREVERSE |bfVar#33|))) ('T (SETQ |bfVar#33| (CONS (|translateSignatureDeclaration| |d|) |bfVar#33|)))) (SETQ |bfVar#32| (CDR |bfVar#32|))))))))) (|Import| (LET ((|m| (CAR |bfVar#35|))) (|bpPush| (LIST (LIST 'IMPORT-MODULE (STRING |m|)))))) (|ImportSignature| (LET ((|x| (CAR |bfVar#35|)) (|sig| (CADR |bfVar#35|))) (|bpPush| (|genImportDeclaration| |x| |sig|)))) (|TypeAlias| (LET ((|lhs| (CAR |bfVar#35|)) (|rhs| (CADR |bfVar#35|))) (|bpPush| (LIST (|genTypeAlias| |lhs| |rhs|))))) (|ConstantDefinition| (LET ((|n| (CAR |bfVar#35|)) (|e| (CADR |bfVar#35|))) (|bpPush| (LIST (LIST 'DEFCONSTANT |n| |e|))))) (T (|bpPush| (LIST (|translateToplevelExpression| |b|)))))))))))) (DEFUN |shoeAddbootIfNec| (|s|) (|shoeAddStringIfNec| ".boot" |s|)) (DEFUN |shoeRemovebootIfNec| (|s|) (|shoeRemoveStringIfNec| ".boot" |s|)) (DEFUN |shoeAddStringIfNec| (|str| |s|) (PROG (|a|) (RETURN (PROGN (SETQ |a| (STRPOS |str| |s| 0 NIL)) (COND ((NULL |a|) (CONCAT |s| |str|)) ('T |s|)))))) (DEFUN |shoeRemoveStringIfNec| (|str| |s|) (PROG (|a|) (RETURN (PROGN (SETQ |a| (STRPOS |str| |s| 0 NIL)) (COND ((NULL |a|) |s|) ('T (SUBSTRING |s| 0 |a|))))))) (DEFUN DEFUSE (|fn|) (PROG (|infn|) (RETURN (PROGN (SETQ |infn| (CONCAT |fn| ".boot")) (|shoeOpenInputFile| |a| |infn| (|shoeDfu| |a| |fn|)))))) (DEFUN |shoeDfu| (|a| |fn|) (PROG (|out|) (DECLARE (SPECIAL |$bfClamming| |$GenVarCounter| |$bootDefinedTwice| |$bootUsed| |$bootDefined| |$lispWordTable|)) (RETURN (COND ((NULL |a|) (|shoeNotFound| |fn|)) ('T (PROGN (SETQ |$lispWordTable| (MAKE-HASHTABLE 'EQ)) (DO-SYMBOLS (|i| (FIND-PACKAGE 'LISP)) (HPUT |$lispWordTable| |i| T)) (SETQ |$bootDefined| (MAKE-HASHTABLE 'EQ)) (SETQ |$bootUsed| (MAKE-HASHTABLE 'EQ)) (SETQ |$bootDefinedTwice| NIL) (SETQ |$GenVarCounter| 0) (SETQ |$bfClamming| NIL) (|shoeDefUse| (|shoeTransformStream| |a|)) (SETQ |out| (CONCAT |fn| ".defuse")) (|shoeOpenOutputFile| |stream| |out| (|shoeReport| |stream|)) |out|)))))) (DEFUN |shoeReport| (|stream|) (PROG (|b| |a|) (DECLARE (SPECIAL |$bootDefinedTwice| |$bootUsed| |$bootDefined|)) (RETURN (PROGN (|shoeFileLine| "DEFINED and not USED" |stream|) (SETQ |a| (LET ((|bfVar#37| NIL) (|bfVar#36| (HKEYS |$bootDefined|)) (|i| NIL)) (LOOP (COND ((OR (ATOM |bfVar#36|) (PROGN (SETQ |i| (CAR |bfVar#36|)) NIL)) (RETURN (NREVERSE |bfVar#37|))) (#0='T (AND (NOT (GETHASH |i| |$bootUsed|)) (SETQ |bfVar#37| (CONS |i| |bfVar#37|))))) (SETQ |bfVar#36| (CDR |bfVar#36|))))) (|bootOut| (SSORT |a|) |stream|) (|shoeFileLine| " " |stream|) (|shoeFileLine| "DEFINED TWICE" |stream|) (|bootOut| (SSORT |$bootDefinedTwice|) |stream|) (|shoeFileLine| " " |stream|) (|shoeFileLine| "USED and not DEFINED" |stream|) (SETQ |a| (LET ((|bfVar#39| NIL) (|bfVar#38| (HKEYS |$bootUsed|)) (|i| NIL)) (LOOP (COND ((OR (ATOM |bfVar#38|) (PROGN (SETQ |i| (CAR |bfVar#38|)) NIL)) (RETURN (NREVERSE |bfVar#39|))) (#0# (AND (NOT (GETHASH |i| |$bootDefined|)) (SETQ |bfVar#39| (CONS |i| |bfVar#39|))))) (SETQ |bfVar#38| (CDR |bfVar#38|))))) (LET ((|bfVar#40| (SSORT |a|)) (|i| NIL)) (LOOP (COND ((OR (ATOM |bfVar#40|) (PROGN (SETQ |i| (CAR |bfVar#40|)) NIL)) (RETURN NIL)) (#0# (PROGN (SETQ |b| (CONCAT (PNAME |i|) " is used in ")) (|bootOutLines| (SSORT (GETHASH |i| |$bootUsed|)) |stream| |b|)))) (SETQ |bfVar#40| (CDR |bfVar#40|)))))))) (DEFUN |shoeDefUse| (|s|) (LOOP (COND ((|bStreamPackageNull| |s|) (RETURN NIL)) ('T (PROGN (|defuse| NIL (CAR |s|)) (SETQ |s| (CDR |s|))))))) (DEFUN |defuse| (|e| |x|) (PROG (|niens| |nee| |LETTMP#1| |exp| |ISTMP#5| |id| |ISTMP#4| |ISTMP#3| |body| |bv| |ISTMP#2| |name| |ISTMP#1|) (DECLARE (SPECIAL |$bootUsed| |$bootDefinedTwice| |$bootDefined| |$used|)) (RETURN (PROGN (SETQ |x| (|stripm| |x| *PACKAGE* (FIND-PACKAGE "BOOTTRAN"))) (SETQ |$used| NIL) (SETQ |LETTMP#1| (COND ((AND (CONSP |x|) (EQ (CAR |x|) 'DEFUN) (PROGN (SETQ |ISTMP#1| (CDR |x|)) (AND (CONSP |ISTMP#1|) (PROGN (SETQ |name| (CAR |ISTMP#1|)) (SETQ |ISTMP#2| (CDR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (PROGN (SETQ |bv| (CAR |ISTMP#2|)) (SETQ |body| (CDR |ISTMP#2|)) #0='T)))))) (LIST |name| (CONS 'LAMBDA (CONS |bv| |body|)))) ((AND (CONSP |x|) (EQ (CAR |x|) 'DEFMACRO) (PROGN (SETQ |ISTMP#1| (CDR |x|)) (AND (CONSP |ISTMP#1|) (PROGN (SETQ |name| (CAR |ISTMP#1|)) (SETQ |ISTMP#2| (CDR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (PROGN (SETQ |bv| (CAR |ISTMP#2|)) (SETQ |body| (CDR |ISTMP#2|)) #0#)))))) (LIST |name| (CONS 'LAMBDA (CONS |bv| |body|)))) ((AND (CONSP |x|) (EQ (CAR |x|) 'EVAL-WHEN) (PROGN (SETQ |ISTMP#1| (CDR |x|)) (AND (CONSP |ISTMP#1|) (PROGN (SETQ |ISTMP#2| (CDR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (EQ (CDR |ISTMP#2|) NIL) (PROGN (SETQ |ISTMP#3| (CAR |ISTMP#2|)) (AND (CONSP |ISTMP#3|) (EQ (CAR |ISTMP#3|) 'SETQ) (PROGN (SETQ |ISTMP#4| (CDR |ISTMP#3|)) (AND (CONSP |ISTMP#4|) (PROGN (SETQ |id| (CAR |ISTMP#4|)) (SETQ |ISTMP#5| (CDR |ISTMP#4|)) (AND (CONSP |ISTMP#5|) (EQ (CDR |ISTMP#5|) NIL) (PROGN (SETQ |exp| (CAR |ISTMP#5|)) #0#)))))))))))) (LIST |id| |exp|)) ((AND (CONSP |x|) (EQ (CAR |x|) 'SETQ) (PROGN (SETQ |ISTMP#1| (CDR |x|)) (AND (CONSP |ISTMP#1|) (PROGN (SETQ |id| (CAR |ISTMP#1|)) (SETQ |ISTMP#2| (CDR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (EQ (CDR |ISTMP#2|) NIL) (PROGN (SETQ |exp| (CAR |ISTMP#2|)) #0#)))))) (LIST |id| |exp|)) (#1='T (LIST 'TOP-LEVEL |x|)))) (SETQ |nee| (CAR |LETTMP#1|)) (SETQ |niens| (CADR |LETTMP#1|)) (COND ((GETHASH |nee| |$bootDefined|) (SETQ |$bootDefinedTwice| (COND ((EQ |nee| 'TOP-LEVEL) |$bootDefinedTwice|) (#1# (CONS |nee| |$bootDefinedTwice|))))) ('T (HPUT |$bootDefined| |nee| T))) (|defuse1| |e| |niens|) (LET ((|bfVar#41| |$used|) (|i| NIL)) (LOOP (COND ((OR (ATOM |bfVar#41|) (PROGN (SETQ |i| (CAR |bfVar#41|)) NIL)) (RETURN NIL)) ('T (HPUT |$bootUsed| |i| (CONS |nee| (GETHASH |i| |$bootUsed|))))) (SETQ |bfVar#41| (CDR |bfVar#41|)))))))) (DEFUN |defuse1| (|e| |y|) (PROG (|ndol| |dol| |LETTMP#1| |b| |a| |ISTMP#1|) (DECLARE (SPECIAL |$bootDefined| |$used|)) (RETURN (COND ((ATOM |y|) (COND ((IDENTP |y|) (SETQ |$used| (COND ((MEMQ |y| |e|) |$used|) ((MEMQ |y| |$used|) |$used|) ((|defusebuiltin| |y|) |$used|) (#0='T (UNION (LIST |y|) |$used|))))) (#0# NIL))) ((AND (CONSP |y|) (EQ (CAR |y|) 'LAMBDA) (PROGN (SETQ |ISTMP#1| (CDR |y|)) (AND (CONSP |ISTMP#1|) (PROGN (SETQ |a| (CAR |ISTMP#1|)) (SETQ |b| (CDR |ISTMP#1|)) #1='T)))) (|defuse1| (APPEND (|unfluidlist| |a|) |e|) |b|)) ((AND (CONSP |y|) (EQ (CAR |y|) 'PROG) (PROGN (SETQ |ISTMP#1| (CDR |y|)) (AND (CONSP |ISTMP#1|) (PROGN (SETQ |a| (CAR |ISTMP#1|)) (SETQ |b| (CDR |ISTMP#1|)) #1#)))) (PROGN (SETQ |LETTMP#1| (|defSeparate| |a|)) (SETQ |dol| (CAR |LETTMP#1|)) (SETQ |ndol| (CADR |LETTMP#1|)) (LET ((|bfVar#42| |dol|) (|i| NIL)) (LOOP (COND ((OR (ATOM |bfVar#42|) (PROGN (SETQ |i| (CAR |bfVar#42|)) NIL)) (RETURN NIL)) (#2='T (HPUT |$bootDefined| |i| T))) (SETQ |bfVar#42| (CDR |bfVar#42|)))) (|defuse1| (APPEND |ndol| |e|) |b|))) ((AND (CONSP |y|) (EQ (CAR |y|) 'QUOTE) (PROGN (SETQ |a| (CDR |y|)) #1#)) NIL) ((AND (CONSP |y|) (EQ (CAR |y|) '+LINE) (PROGN (SETQ |a| (CDR |y|)) #1#)) NIL) (#0# (LET ((|bfVar#43| |y|) (|i| NIL)) (LOOP (COND ((OR (ATOM |bfVar#43|) (PROGN (SETQ |i| (CAR |bfVar#43|)) NIL)) (RETURN NIL)) (#2# (|defuse1| |e| |i|))) (SETQ |bfVar#43| (CDR |bfVar#43|))))))))) (DEFUN |defSeparate| (|x|) (PROG (|x2| |x1| |LETTMP#1| |f|) (RETURN (COND ((NULL |x|) (LIST NIL NIL)) (#0='T (PROGN (SETQ |f| (CAR |x|)) (SETQ |LETTMP#1| (|defSeparate| (CDR |x|))) (SETQ |x1| (CAR |LETTMP#1|)) (SETQ |x2| (CADR |LETTMP#1|)) (COND ((|bfBeginsDollar| |f|) (LIST (CONS |f| |x1|) |x2|)) (#0# (LIST |x1| (CONS |f| |x2|)))))))))) (DEFUN |unfluidlist| (|x|) (PROG (|y| |ISTMP#1|) (RETURN (COND ((NULL |x|) NIL) ((ATOM |x|) (LIST |x|)) ((AND (CONSP |x|) (EQ (CAR |x|) '&REST) (PROGN (SETQ |ISTMP#1| (CDR |x|)) (AND (CONSP |ISTMP#1|) (EQ (CDR |ISTMP#1|) NIL) (PROGN (SETQ |y| (CAR |ISTMP#1|)) 'T)))) (LIST |y|)) ('T (CONS (CAR |x|) (|unfluidlist| (CDR |x|)))))))) (DEFUN |defusebuiltin| (|x|) (DECLARE (SPECIAL |$lispWordTable|)) (GETHASH |x| |$lispWordTable|)) (DEFUN |bootOut| (|l| |outfn|) (LET ((|bfVar#44| |l|) (|i| NIL)) (LOOP (COND ((OR (ATOM |bfVar#44|) (PROGN (SETQ |i| (CAR |bfVar#44|)) NIL)) (RETURN NIL)) ('T (|shoeFileLine| (CONCAT " " (PNAME |i|)) |outfn|))) (SETQ |bfVar#44| (CDR |bfVar#44|))))) (DEFUN CLESSP (|s1| |s2|) (NOT (SHOEGREATERP |s1| |s2|))) (DEFUN SSORT (|l|) (SORT |l| #'CLESSP)) (DEFUN |bootOutLines| (|l| |outfn| |s|) (PROG (|a|) (RETURN (COND ((NULL |l|) (|shoeFileLine| |s| |outfn|)) (#0='T (SETQ |a| (PNAME (CAR |l|))) (COND ((< 70 (+ (LENGTH |s|) (LENGTH |a|))) (|shoeFileLine| |s| |outfn|) (|bootOutLines| |l| |outfn| " ")) (#0# (|bootOutLines| (CDR |l|) |outfn| (CONCAT |s| " " |a|))))))))) (DEFUN XREF (|fn|) (PROG (|infn|) (RETURN (PROGN (SETQ |infn| (CONCAT |fn| ".boot")) (|shoeOpenInputFile| |a| |infn| (|shoeXref| |a| |fn|)))))) (DEFUN |shoeXref| (|a| |fn|) (PROG (|out|) (DECLARE (SPECIAL |$bfClamming| |$GenVarCounter| |$bootUsed| |$bootDefined| |$lispWordTable|)) (RETURN (COND ((NULL |a|) (|shoeNotFound| |fn|)) ('T (SETQ |$lispWordTable| (MAKE-HASHTABLE 'EQ)) (DO-SYMBOLS (|i| (FIND-PACKAGE 'LISP)) (HPUT |$lispWordTable| |i| T)) (SETQ |$bootDefined| (MAKE-HASHTABLE 'EQ)) (SETQ |$bootUsed| (MAKE-HASHTABLE 'EQ)) (SETQ |$GenVarCounter| 0) (SETQ |$bfClamming| NIL) (|shoeDefUse| (|shoeTransformStream| |a|)) (SETQ |out| (CONCAT |fn| ".xref")) (|shoeOpenOutputFile| |stream| |out| (|shoeXReport| |stream|)) |out|))))) (DEFUN |shoeXReport| (|stream|) (PROG (|a| |c|) (DECLARE (SPECIAL |$bootUsed|)) (RETURN (PROGN (|shoeFileLine| "USED and where DEFINED" |stream|) (SETQ |c| (SSORT (HKEYS |$bootUsed|))) (LET ((|bfVar#45| |c|) (|i| NIL)) (LOOP (COND ((OR (ATOM |bfVar#45|) (PROGN (SETQ |i| (CAR |bfVar#45|)) NIL)) (RETURN NIL)) ('T (PROGN (SETQ |a| (CONCAT (PNAME |i|) " is used in ")) (|bootOutLines| (SSORT (GETHASH |i| |$bootUsed|)) |stream| |a|)))) (SETQ |bfVar#45| (CDR |bfVar#45|)))))))) (DEFUN FBO (|name| |fn|) (|shoeGeneralFC| #'BO |name| |fn|)) (DEFUN FEV (|name| |fn|) (|shoeGeneralFC| #'EVAL-BOOT-FILE |name| |fn|)) (DEFUN |shoeGeneralFC| (|f| |name| |fn|) (PROG (|filename| |a| |infn|) (DECLARE (SPECIAL |$GenVarCounter| |$bfClamming|)) (RETURN (PROGN (SETQ |$bfClamming| NIL) (SETQ |$GenVarCounter| 0) (SETQ |infn| (|shoeAddbootIfNec| |fn|)) (SETQ |a| (|shoeOpenInputFile| |a| |infn| (|shoeFindName2| |fn| |name| |a|))) (SETQ |filename| (COND ((< 8 (LENGTH |name|)) (SUBSTRING |name| 0 8)) ('T |name|))) (COND (|a| (FUNCALL |f| (CONCAT "/tmp/" |filename|))) ('T NIL)))))) (DEFUN |shoeFindName2| (|fn| |name| |a|) (PROG (|filename| |lines|) (RETURN (PROGN (SETQ |lines| (|shoeFindLines| |fn| |name| |a|)) (COND (|lines| (PROGN (SETQ |filename| (COND ((< 8 (LENGTH |name|)) (SUBSTRING |name| 0 8)) ('T |name|))) (SETQ |filename| (CONCAT "/tmp/" |filename| ".boot")) (|shoeOpenOutputFile| |stream| |filename| (LET ((|bfVar#46| |lines|) (|line| NIL)) (LOOP (COND ((OR (ATOM |bfVar#46|) (PROGN (SETQ |line| (CAR |bfVar#46|)) NIL)) (RETURN NIL)) ('T (|shoeFileLine| |line| |stream|))) (SETQ |bfVar#46| (CDR |bfVar#46|))))) T)) ('T NIL)))))) (DEFUN |shoeTransform2| (|str|) (|bNext| #'|shoeItem| (|streamTake| 1 (|bNext| #'|shoePileInsert| (|bNext| #'|shoeLineToks| |str|))))) (DEFUN |shoeItem| (|str|) (PROG (|dq|) (RETURN (PROGN (SETQ |dq| (CAR |str|)) (CONS (LIST (LET ((|bfVar#48| NIL) (|bfVar#47| (|shoeDQlines| |dq|)) (|line| NIL)) (LOOP (COND ((OR (ATOM |bfVar#47|) (PROGN (SETQ |line| (CAR |bfVar#47|)) NIL)) (RETURN (NREVERSE |bfVar#48|))) ('T (SETQ |bfVar#48| (CONS (CAR |line|) |bfVar#48|)))) (SETQ |bfVar#47| (CDR |bfVar#47|))))) (CDR |str|)))))) (DEFUN |stripm| (|x| |pk| |bt|) (COND ((ATOM |x|) (COND ((IDENTP |x|) (COND ((EQUAL (SYMBOL-PACKAGE |x|) |bt|) (INTERN (PNAME |x|) |pk|)) (#0='T |x|))) (#0# |x|))) (#0# (CONS (|stripm| (CAR |x|) |pk| |bt|) (|stripm| (CDR |x|) |pk| |bt|))))) (DEFUN |shoePCompile| (|fn|) (PROG (|body| |bv| |ISTMP#2| |name| |ISTMP#1|) (RETURN (PROGN (SETQ |fn| (|stripm| |fn| *PACKAGE* (FIND-PACKAGE "BOOTTRAN"))) (COND ((AND (CONSP |fn|) (EQ (CAR |fn|) 'DEFUN) (PROGN (SETQ |ISTMP#1| (CDR |fn|)) (AND (CONSP |ISTMP#1|) (PROGN (SETQ |name| (CAR |ISTMP#1|)) (SETQ |ISTMP#2| (CDR |ISTMP#1|)) (AND (CONSP |ISTMP#2|) (PROGN (SETQ |bv| (CAR |ISTMP#2|)) (SETQ |body| (CDR |ISTMP#2|)) 'T)))))) (COMPILE |name| (CONS 'LAMBDA (CONS |bv| |body|)))) ('T (EVAL |fn|))))))) (DEFUN FC (|name| |fn|) (PROG (|infn|) (DECLARE (SPECIAL |$GenVarCounter|)) (RETURN (PROGN (SETQ |$GenVarCounter| 0) (SETQ |infn| (|shoeAddbootIfNec| |fn|)) (|shoeOpenInputFile| |a| |infn| (|shoeFindName| |fn| |name| |a|)))))) (DEFUN |shoeFindName| (|fn| |name| |a|) (PROG (|lines|) (RETURN (PROGN (SETQ |lines| (|shoeFindLines| |fn| |name| |a|)) (|shoePCompileTrees| (|shoeTransformString| |lines|)))))) (DEFUN |shoePCompileTrees| (|s|) (LOOP (COND ((|bStreamPackageNull| |s|) (RETURN NIL)) ('T (PROGN (REALLYPRETTYPRINT (|shoePCompile| (CAR |s|))) (SETQ |s| (CDR |s|))))))) (DEFUN |bStreamPackageNull| (|s|) (PROG (|b| |a|) (RETURN (PROGN (SETQ |a| *PACKAGE*) (IN-PACKAGE "BOOTTRAN") (SETQ |b| (|bStreamNull| |s|)) (|setCurrentPackage| |a|) |b|)))) (DEFUN PSTTOMC (|string|) (DECLARE (SPECIAL |$GenVarCounter|)) (PROGN (SETQ |$GenVarCounter| 0) (|shoePCompileTrees| (|shoeTransformString| |string|)))) (DEFUN BOOTLOOP () (PROG (|stream| |b| |a|) (RETURN (PROGN (SETQ |a| (READ-LINE)) (COND ((EQL (LENGTH |a|) 0) (PROGN (WRITE-LINE "Boot Loop; to exit type ] ") (BOOTLOOP))) (#0='T (PROGN (SETQ |b| (|shoePrefix?| ")console" |a|)) (COND (|b| (PROGN (SETQ |stream| *TERMINAL-IO*) (PSTTOMC (|bRgen| |stream|)) (BOOTLOOP))) ((EQUAL (ELT |a| 0) (ELT "]" 0)) NIL) (#0# (PROGN (PSTTOMC (LIST |a|)) (BOOTLOOP))))))))))) (DEFUN BOOTPO () (PROG (|stream| |b| |a|) (RETURN (PROGN (SETQ |a| (READ-LINE)) (COND ((EQL (LENGTH |a|) 0) (PROGN (WRITE-LINE "Boot Loop; to exit type ] ") (BOOTPO))) (#0='T (PROGN (SETQ |b| (|shoePrefix?| ")console" |a|)) (COND (|b| (PROGN (SETQ |stream| *TERMINAL-IO*) (PSTOUT (|bRgen| |stream|)) (BOOTPO))) ((EQUAL (ELT |a| 0) (ELT "]" 0)) NIL) (#0# (PROGN (PSTOUT (LIST |a|)) (BOOTPO))))))))))) (DEFUN PSTOUT (|string|) (PROG (|result| |callingPackage|) (DECLARE (SPECIAL |$GenVarCounter|)) (RETURN (PROGN (SETQ |callingPackage| *PACKAGE*) (IN-PACKAGE "BOOTTRAN") (SETQ |$GenVarCounter| 0) (SETQ |result| (|shoeConsoleTrees| (|shoeTransformString| |string|))) (|setCurrentPackage| |callingPackage|) |result|)))) (DEFUN |defaultBootToLispFile| (|file|) (CONCAT (|pathBasename| |file|) ".clisp")) (DEFUN |getIntermediateLispFile| (|file| |options|) (PROG (|out|) (DECLARE (SPECIAL |$faslType|)) (RETURN (PROGN (SETQ |out| (NAMESTRING (|getOutputPathname| |options|))) (COND (|out| (CONCAT (|shoeRemoveStringIfNec| |$faslType| |out|) ".clisp")) ('T (|defaultBootToLispFile| |file|))))))) (DEFUN |translateBootFile| (|progname| |options| |file|) (PROG (|outFile|) (RETURN (PROGN (SETQ |outFile| (OR (|getOutputPathname| |options|) (|defaultBootToLispFile| |file|))) (BOOTTOCL |file| (ENOUGH-NAMESTRING |outFile|)))))) (DEFUN |compileBootHandler| (|progname| |options| |file|) (PROG (|objFile| |intFile|) (RETURN (PROGN (SETQ |intFile| (BOOTTOCL |file| (|getIntermediateLispFile| |file| |options|))) (COND (|intFile| (PROGN (SETQ |objFile| (|compileLispHandler| |progname| |options| |intFile|)) (DELETE-FILE |intFile|) |objFile|)) ('T NIL)))))) (EVAL-WHEN (:EXECUTE :LOAD-TOPLEVEL) (|associateRequestWithFileType| (|Option| "translate") "boot" #'|translateBootFile|)) (EVAL-WHEN (:EXECUTE :LOAD-TOPLEVEL) (|associateRequestWithFileType| (|Option| "compile") "boot" #'|compileBootHandler|)) (DEFUN |systemRootDirectory| () (PROG (|dir|) (DECLARE (SPECIAL |$systemInstallationDirectory|)) (RETURN (COND ((SETQ |dir| (ASSOC (|Option| "system") (|%systemOptions|))) (|ensureTrailingSlash| (CDR |dir|))) ('T |$systemInstallationDirectory|))))) (DEFUN |systemLibraryDirectory| () (PROG (|dir|) (RETURN (COND ((SETQ |dir| (ASSOC (|Option| '|syslib|) (|%systemOptions|))) (|ensureTrailingSlash| (CDR |dir|))) ('T (CONCAT (|systemRootDirectory|) "lib/")))))) (DEFUN |loadNativeModule| (|m|) (COND ((|%hasFeature| :SBCL) (FUNCALL (|bfColonColon| 'SB-ALIEN 'LOAD-SHARED-OBJECT) |m|)) ((|%hasFeature| :CLISP) (EVAL (LIST (|bfColonColon| 'FFI 'DEFAULT-FOREIGN-LIBRARY) |m|))) ('T (|systemError| "don't know how to load a dynamically linked module")))) (DEFUN |loadSystemRuntimeCore| () (DECLARE (SPECIAL |$NativeModuleExt|)) (|loadNativeModule| (CONCAT (|systemLibraryDirectory|) "libopen-axiom-core" |$NativeModuleExt|)))