From 654ebc359c06866790bc3c6438fad7cbe4900b4c Mon Sep 17 00:00:00 2001 From: Larry Masinter Date: Fri, 7 Oct 2022 15:06:32 -0700 Subject: [PATCH] Temporary workaround until larger fix is done (see issue #768 (#971) --- lispusers/migration/IL-SIM | 1356 --------------------------------- lispusers/migration/IL-SIM.gz | Bin 0 -> 20079 bytes 2 files changed, 1356 deletions(-) delete mode 100644 lispusers/migration/IL-SIM create mode 100644 lispusers/migration/IL-SIM.gz diff --git a/lispusers/migration/IL-SIM b/lispusers/migration/IL-SIM deleted file mode 100644 index db54a3f6..00000000 --- a/lispusers/migration/IL-SIM +++ /dev/null @@ -1,1356 +0,0 @@ -(DEFINE-FILE-INFO READTABLE "XCL" PACKAGE (LET ((*PACKAGE* *PACKAGE*)) (CLIN-PACKAGE "IL-CONVERT") -*PACKAGE*) BASE 10) -(IL:FILECREATED "25-Jan-90 11:04:43" IL:|{DSK}/users/welch/migration/IL-SIM.;3| 88504 - - IL:|changes| IL:|to:| (IL:FUNCTIONS NTHCHARCODE ERROR) - - IL:|previous| IL:|date:| "25-Jan-90 08:58:55" IL:|{DSK}/users/welch/migration/IL-SIM.;2|) - - -; Copyright (c) 1989, 1990 by ENVOS Corporation. All rights reserved. - -(IL:PRETTYCOMPRINT IL:IL-SIMCOMS) - -(IL:RPAQQ IL:IL-SIMCOMS ((IL:* IL:|;;| "Converter macros Have to add \"CL\" as a nickname to the LISP package since some Interlisp code names it that way.") (IL:P (IN-PACKAGE (QUOTE IL-CONVERT))) (IL:FUNCTIONS CONVERT-TO-STRING SIMP-MINUS SIMP-1- QUOTE-TREE EXPAND-VARLIST) (IL:FUNCTIONS RPAQQ RPAQ RPAQ?) (IL:FUNCTIONS CONSTANTS) (IL:* IL:\| "chapter 2") (IL:VARIABLES *WARN-FOR-ALL-IL-SYMBOLS* *WARN-FOR-IL-SYMBOLS-LOWER-THAN-THIS* *WARN-ON-CHAR-CODE-USE*) (IL:P (IL-COPYDEF ATOM) (IL-COPYDEF BOUNDP) (IL-COPYDEF SET)) (IL:FUNCTIONS LITATOM SETQQ SETQ PSETQ) (IL:FUNCTIONS (IL:* IL:\; "warning forms") IL:GETTOPVAL IL:SETTOPVAL) (IL:* IL:|;;| "with Franz, might want to use mp:global-symbol-value for the following") (IL:P (IL-COPYDEF SET SETATOMVAL)) (IL:FUNCTIONS GETATOMVAL GETPROP PUTPROP ADDPROP) (IL:FUNCTIONS REMPROP REMPROPLIST CHANGEPROP) (IL:FUNCTIONS (IL:* IL:\; "warning forms") IL:PROPNAMES IL:DEFLIST) (IL:P (IL-COPYDEF SYMBOL-PLIST GETPROPLIST) (IL-COPYDEF GENTEMP GENSYM)) (IL:FUNCTIONS MKATOM L-CASE U-CASE) (IL:FUNCTIONS SETPROPLIST CHARCODE NTHCHARCODE CHARACTER CHCON1 EVAL-IF-POSSIBLE SELCHARQ) (IL:P (IL-COPYCONV CHARACTER FCHARACTER)) (IL:FUNCTIONS (IL:* IL:\; "warning forms") IL:PACK IL:PACK* IL:UNPACK IL:DUNPACK IL:MAPATOMS IL:APROPOS) (IL:* IL:\; "***** rest of chapter 2") (IL:* IL:\| "Chapter 3") (IL:FUNCTIONS NLISTP) (IL:* IL:\; "***** CAR/CDRERR") (IL:P (IL-COPYDEF CONS) (IL-COPYDEF LISTP) (IL-COPYDEF CAR) (IL-COPYDEF CDR) (IL-COPYDEF CADR) (IL-COPYDEF CDAR) (IL-COPYDEF CDDR) (IL-COPYDEF CAAAR) (IL-COPYDEF CAADR) (IL-COPYDEF CADAR) (IL-COPYDEF CADDR) (IL-COPYDEF CDAAR) (IL-COPYDEF CDADR) (IL-COPYDEF CDDAR) (IL-COPYDEF CDDDR) (IL-COPYDEF CAAAAR) (IL-COPYDEF CAAADR) (IL-COPYDEF CAADAR) (IL-COPYDEF CAADDR) (IL-COPYDEF CADAAR) (IL-COPYDEF CDDDAR) (IL-COPYDEF CDDDDR) (IL-COPYDEF RPLACD) (IL-COPYDEF RPLACD FRPLACD) (IL-COPYDEF RPLACA) (IL-COPYDEF RPLACA FRPLACA)) (IL:FUNCTIONS RPLNODE RPLNODE2 FRPLNODE FRPLNODE2 MKLIST NCONC1) (IL:P (IL-COPYDEF LIST) (IL-COPYDEF LIST*) (IL-COPYDEF APPEND) (IL-COPYDEF NCONC) (IL-COPYDEF TAILP) (IL-COPYDEF LAST) (IL-COPYDEF LENGTH) (IL-COPYDEF LENGTH FLENGTH) (IL-COPYDEF SET-DIFFERENCE LDIFFERENCE) (IL-COPYDEF INTERSECTION) (IL-COPYDEF UNION)) (IL:FUNCTIONS ATTACH LCONC TCONC) (IL:FUNCTIONS IL:DOCOLLECT IL:ENDCOLLECT IL:SCRATCHLIST IL:ADDTOSCRATCHLIST IL:COPYALL IL:HCOPYALL IL:NLEFT IL:LASTN IL:COUNT IL:COUNTDOWN IL:EQUALN IL:LDIFF IL:LSUBST IL:SUBPAIR) (IL:* IL:\; "warning forms ") (IL:P (IL-COPYDEF COPY-LIST COPY)) (IL:FUNCTIONS NTH MEMB FMEMB MEMBER EQMEMB SUBST DSUBST SUBLIS DSUBLIS ASSOC SASSOC PUTASSOC) (IL:P (IL-COPYCONV NTH FNTH) (IL-COPYCONV LAST FLAST) (IL-COPYCONV MEMB FMEMB) (IL-COPYCONV ASSOC FASSOC) (IL-COPYDEF GETF LISTGET)) (IL:FUNCTIONS LISTPUT LISTGET1 MERGE) (IL:FUNCTIONS IL:LISTPUT1 IL:ALPHORDER IL:UALPHORDER IL:COMPARELISTS) (IL:* IL:\; "warning forms") (IL:FUNCTIONS REMOVE DREMOVE REVERSE DREVERSE) (IL:FUNCTIONS NEGATE) (IL:* IL:\| "chapter 4") (IL:P (IL-COPYDEF STRINGP)) (IL:FUNCTIONS STREQUAL STRING-EQUAL NCHARS ALLOCSTRING MKSTRING CONCAT CONCATLIST RPLSTRING RPLCHARCODE STRPOS SUBSTRING) (IL:* IL:|;;| " Warning Forms") (IL:FUNCTIONS IL:GNC IL:GLC) (IL:* IL:\| "chapter 5") (IL:* IL:\; "***** chapter 5 (arrays)") (IL:* IL:\| "chapter 6") (IL:FUNCTIONS MAPHASH GETHASH PUTHASH) (IL:* IL:\; "***** chapter 6 (hash arrays)") (IL:* IL:\| "chapter 7") (IL:FUNCTIONS SMALLP) (IL:* IL:\; "*** ??") (IL:FUNCTIONS FIXP) (IL:P (IL-COPYDEF FLOATP) (IL-COPYDEF NUMBERP) (IL-COPYDEF EQUALP EQP)) (IL:* IL:|;;| "(il-defconv EQP (x y) `(eql ,^x ,^y)) ***** overflow") (IL:FUNCTIONS PLUS MINUS DIFFERENCE TIMES) (IL:* IL:\; "***** remainder ") (IL:FUNCTIONS GREATERP LESSP GEQ LEQ) (IL:P (IL-COPYDEF ZEROP) (IL-COPYDEF MINUSP) (IL-COPYDEF MIN) (IL-COPYDEF MAX) (IL-COPYDEF ABS)) (IL:* IL:\; "***** min.integer,^ max.integer") (IL:FUNCTIONS IPLUS IMINUS IDIFFERENCE ADD1 SUB1 ITIMES IQUOTIENT IREMAINDER IMOD IGREATERP ILESSP IGEQ ILEQ IMIN IMAX IEQP FIX FIXR RSH POWEROFTWOP EVENP ODDP BITTEST BITCLEAR) (IL:P (IL-COPYDEF GCD) (IL-COPYDEF LOGAND) (IL-COPYDEF LOGIOR LOGOR) (IL-COPYDEF ASH LSH) (IL-COPYDEF INTEGER-LENGTH INTEGERLENGTH) (IL-COPYDEF LOGNOT) (IL-COPYDEF LOGIOR BITSET)) (IL:FUNCTIONS MASK.1\'S MASK.0\'S LOADBYTE DEPOSITBYTE) (IL:P (IL-COPYDEF BYTE) (IL-COPYDEF BYTE-SIZE BYTESIZE) (IL-COPYDEF BYTE-POSITION BYTEPOSITION) (IL-COPYDEF LDB) (IL-COPYDEF DPB)) (IL:FUNCTIONS (IL:* IL:\; "warning forms") IL:ROT) (IL:* IL:|;;| " *** section 7.4 (floating point)") (IL:* IL:\| "chapter 8") (IL:* IL:|;;| " **** Record stuff in IL-RECORD.lisp *** Changetran...") (IL:FUNCTIONS |push| |add| |change| |pushnew| |pushlist| |swap|) (IL:P (IL-COPYCONV |push| PUSH) (IL-COPYCONV |add| ADD) (IL-COPYCONV |change| CHANGE) (IL-COPYCONV |pushnew| PUSHNEW) (IL-COPYCONV |pushlist| PUSHLIST) (IL-COPYCONV |swap| SWAP) (IL-COPYDEF POP) (IL-COPYDEF POP |pop|)) (IL:* IL:\| "chapter 9") (IL:* IL:\; "**** 9.1") (IL:P (IL-COPYDEF EQ) (IL-COPYDEF NULL) (IL-COPYDEF NOT) (IL-COPYDEF EQUAL) (IL-COPYDEF AND) (IL-COPYDEF OR)) (IL:FUNCTIONS NEQ) (IL:* IL:\; "EQP is in chapter 7") (IL:* IL:\; "***** EQUALALL") (IL:FUNCTIONS COND) (IL:* IL:|;;| " (convert '(il:cond ((il:geq 3 2) (il:times 2 3))))") (IL:FUNCTIONS |if|) (IL:P (IL-COPYCONV |if| IF)) (IL:* IL:|;;| " -(convert '(il:|if| (il:geq a b) il:|then| (foo) - il:|elseif| (il:atom (il:plus 2 3)) il:|then| (bar) - il:|else| (baz))) -") (IL:FUNCTIONS SELECTQ SELECTC CASE) (IL:* IL:|;;| " -(convert '(il:selectq (il:plus 2 3) (a (il:times a b)) (il:plus c d))) -") (IL:* IL:\; "***** SELECTC") (IL:P (IL-COPYDEF PROG1) (IL-COPYDEF PROG2) (IL-COPYDEF PROGN) (IL-COPYDEF RETURN) (IL-COPYDEF RETURN-FROM RETFROM)) (IL:* IL:|;;| "If we were really clever we could keep track of when we were inside a PROG. Then we could treat (top-level) symbols as prog labels and not put them in the IL package. In that case we would want GO to generate `(go ,tag) instead of `(go ,^tag).") (IL:FUNCTIONS GO PROG LET LET* PROG* CONVERT-DO CONVERT-DO*) (IL:P (IL:* IL:|;;| "One case where il-defconv won't do what we need...") (SETF (GET (QUOTE DO) (QUOTE CONVERT-FORM)) (QUOTE CONVERT-DO) (GET (QUOTE DO*) (QUOTE CONVERT-FORM)) (QUOTE CONVERT-DO*))) (IL:* IL:|;;| "I.S. stuff - entry is coded into CONVERT") (IL:VARIABLES *ITERATION-CONVERSION-TABLE*) (IL:FUNCTIONS CONVERT-ITERATION-STATEMENT FILTER-NUMERIC-BY FILTER-LIST-BY FILTER-BIND FILTER-DO FILTER-INSTRING FILTER-REPEATWHILE/UNTIL) (IL:* IL:\| "chapter 10") (IL:* IL:|;;| "These variables can be set to T to make lambdas come out with &REST IGNORE (equiv.) and &OPTIONAL in their parm. lists.") (IL:VARIABLES *ADD-REST-ARG* *PARAMETERS-ALWAYS-OPTIONAL*) (IL:FUNCTIONS DEFINEQ1 ARG SETARG DEFINEQ) (IL:* IL:|;;| "(convert '(defineq (foo (lambda (a b) (plus a b c))))) (convert '(defineq (foo (nlambda (a b) (plus a b c))))) (convert '(defineq (foo (lambda x (plus (arg x 1) (arg x 2)))))) (convert '(defineq (foo (nlambda x (mapcar 'foo x))))) ***** FNTYP, EXPRP, CCODEP, ARGTYPE, NARGS, ARGLIST, SMARTARGLIST ***** DEFINE ***** UNSAVE.TO.MODIFY.FNS, DFNFLG") (IL:FUNCTIONS PUTD CCODEP) NIL (IL:P (IL-COPYDEF SYMBOL-FUNCTION GETD) (IL-COPYDEF APPLY) (IL-COPYDEF FUNCALL APPLY*)) (IL:FUNCTIONS KWOTE) (IL:* IL:|;;| "(il-defconv QUOTE (&rest args) `(quote ,@args)) ***** NLAMBDA.ARGS,^ EVALA,^ DEFEVAL,^ EVALHOOK") (IL:* IL:|;;| " -; is this right? -(il-defconv RPTQ (n &rest forms) - `(do ((IL::RPTN ,^(eval n) (1- IL::RPTN)) - val) - ((<= IL::RPTN 0) val) - (declare (special IL::RPTN)) - (setq val (progn ,@^@forms)))) -") (IL:* IL:\; "***** RPTQ, FRPTQ") (IL:FUNCTIONS MOVD MAP MAPC MAPLIST MAPCAR MAPCON MAPCONC MAP2C MAP2CAR SUBSET) (IL:* IL:\; "***** rest of chapter") (IL:FUNCTIONS IL:MOVD?) (IL:* IL:\| "chapter 14") (IL:VARIABLES *WARN-ON-ERSETQ-NLSETQ*) (IL:FUNCTIONS SHOULDNT ERROR NLSETQ ERSETQ) (IL:* IL:\| "chapter 17") (IL:VARIABLES *EVAL-WHEN-STATE*) (IL:FUNCTIONS DECLARE\:) (IL:FUNCTIONS PUTPROPS DEFINE-MACRO DEFINE-SUBST-MACRO QUOTE) (IL:* IL:|;;| "(il-defconv * (&rest args) `(il::* ,@args))") (IL:* IL:|;;| "what are we supposed to do with (declare (specvars . t)) ?") (IL:VARIABLES *TYPE-CONVERSION-PLIST*) (IL:FUNCTIONS DECLARE FILEMAP ADDTOVAR APPENDTOVAR FUNCTION LAMBDA DEFINE-FILE-INFO PRETTYCOMPRINT) (IL:P (SETF (GET (QUOTE FILECREATED) (QUOTE EARLY)) T)) (IL:FUNCTIONS FILECREATED) (IL:* IL:\| "chapter 18") (IL:FUNCTIONS CONSTANT) (IL:* IL:\| "chapter 23") (IL:P (IL-COPYDEF PROCESSP)) (IL:FUNCTIONS CREATE.MONITORLOCK OBTAIN.MONITORLOCK RELEASE.MONITORLOCK WITH.MONITOR NOTIFY.EVENT THIS.PROCESS) (IL:FUNCTIONS (IL:* IL:\; "warningforms...") IL:AWAIT.EVENT IL:CREATE.EVENT) (IL:* IL:\| "chapter 24") (IL:FUNCTIONS OPENSTRINGSTREAM) (IL:* IL:\| "chapter 25") (IL:P (IL-COPYDEF PRINT) (IL-COPYDEF TERPRI) (IL-COPYDEF PRIN1 PRIN2) (IL-COPYDEF PRINC PRIN1) (IL-COPYDEF READ-CHAR BIN) (IL-COPYDEF WRITE-CHAR BOUT)) (IL:VARIABLES *ANNOTATE-PRINTOUT-FORM*) (IL:FUNCTIONS PRINTOUT READ READP) (IL:P (IL-COPYCONV PRINTOUT |printout|)) (IL:* IL:|;;| "Warning forms") (IL:FUNCTIONS IL:INPUT IL:RATOM IL:RSTRING IL:RATOMS IL:RATEST IL:READC IL:PEEKC IL:LASTC IL:READCCODE IL:PEEKCCODE IL:READP IL:EOFP IL:WAITFORINPUT IL:SKREAD IL:SKIPSEPRS IL:OUTPUT IL:PRIN3 IL:PRIN4 IL:PRINTCCODE IL:TAB IL:SHOWPRIN2 IL:SHOWPRINT IL:PRINTBELLS IL:LINELENGTH IL:SETLINELENGTH) (IL:* IL:\| "Unconvertable things...") (IL:* IL:|;;| "Warning forms") (IL:FUNCTIONS IL:WINDOWADDPROP IL:\\PUTBASE IL:\\GETBASE IL:DSPLEFTMARGIN IL:RESETLST IL:WINDOWPROP) (IL:FUNCTIONS IL:SMARTARGLIST IL:EDITGETD IL:FIND.PROCESS IL:PROCESS.EVALV IL:PROCESSP IL:PROCESS.EVAL IL:FREEMENU IL:FM.RESETMENU IL:FM.CHANGESTATE IL:FM.CHANGELABEL IL:FM.ITEMPROP IL:FM.EDITITEM IL:FM.GETITEM IL:MAINWINDOW IL:RESETFORM IL:SETTERMTABLE IL:PROCESSPROP IL:TTY.PROCESS IL:CLEARW IL:\\CARET.DOWN IL:\\SMASHSTRING IL:BKSYSBUF IL:CLEARBUF IL:GETSYNTAX IL:OPENWP IL:STRINGWIDTH IL:CHARWIDTH IL:FLASHWINDOW IL:MENU IL:FONTCREATE IL:TTYINPROMPTFORWORD IL:MOUSECONFIRM IL:CLOSEW IL:ATTACHWINDOW IL:SHAPEW IL:CONCATLIST IL:GETPROMPTWINDOW IL:BITBLT IL:BLTSHADE IL:BITMAPWIDTH IL:BITMAPHEIGHT IL:FONTPROP IL:TEDIT.INSERT IL:TEDIT.PARALOOKS IL:DSPCLIPPINGREGION IL:MOVETO IL:RELMOVETO IL:DSPFONT IL:DSPXPOSITION IL:CURSORCREATE IL:WAIT.FOR.TTY IL:\\SAVEVMEMBACKGROUND IL:GETREGION IL:WINDOWREGION IL:EVALV IL:TTY/EDITE IL:CLISPTRAN IL:TTY/EDITL IL:MARKASCHANGED IL:FIXEDITDATE IL:PUTDEF IL:ADDSPELL IL:PROCESS.APPLY IL:STKPOS IL:EDITMODE IL:TOTOPW IL:EXPANDW IL:ADD.PROCESS IL:INSIDEP IL:LASTMOUSEX IL:LASTMOUSEY IL:CREATEW IL:DSPLINEFEED IL:DSPRIGHTMARGIN IL:DOWINDOWCOM IL:TTY.PROCESSP IL:IN/SCROLL/BAR? IL:SCROLL.HANDLER IL:BLOCK IL:CLOCK IL:DSPXOFFSET IL:DSPYOFFSET IL:CREATEREGION IL:HEIGHTIFWINDOW IL:SCROLLW IL:WXOFFSET IL:WYOFFSET IL:KEYDOWNP IL:SHIFTDOWNP IL:UNTILMOUSESTATE IL:FIND-READTABLE IL:NILL IL:FILECOMS IL:ADDFILE IL:ADDTOFILE IL:READTABLEPROP IL:LINELENGTH IL:GETDEF) (IL:* IL:\| "Filecom converters") (IL:FUNCTIONS CONVERT-FNS CONVERT-ONE-FN CONVERT-CONSTANTS CONVERT-INITVARS CONVERT-VARS CONVERT-MACROS CONVERT-ADDVARS CONVERT-APPENDVARS CONVERT-ALISTS CONVERT-PROP CONVERT-PROPS CONVERT-IFPROP CONVERT-RECORDS CONVERT-FILES-FILECOM CONVERT-TOP-LEVEL-FORM-FILECOM CONVERT-COMMENT-FILECOM CONVERT-COMS-FILECOM CONVERT-DECLARE-FILECOM CONVERT-EXPORT-FILECOM CONVERT-FUNCTIONS-FILECOM CONVERT-ONE-BITMAP CONVERT-BITMAPS CONVERT-VARIABLES-FILECOM CONVERT-STRUCTURES-FILECOM) (IL:* IL:|;;| "Conversion functions for filecom types are noted on the plists of their names.") (IL:PROP CONVERT-COM IL:FNS IL:CONSTANTS IL:INITVARS IL:VARS IL:MACROS IL:ADDVARS IL:APPENDVARS IL:ALISTS IL:PROP IL:PROPS IL:IFPROP IL:RECORDS IL:INITRECORDS IL:FILES IL:P IL:* IL:COMS IL:DECLARE\: EXPORT IL:FUNCTIONS IL:VARIABLES IL:STRUCTURES IL:SETFS IL:BITMAPS) (IL:* IL:|;;| "Magic to make comments print out in the usual way...") (IL:STRUCTURES IL-COMMENT-STRUCT) (IL:FUNCTIONS PRINT-IL-COMMENT-STRUCT *) (IL:PROP (IL:MAKEFILE-ENVIRONMENT IL:FILETYPE) IL:IL-SIM)) -) - - - -(IL:* IL:|;;| -"Converter macros Have to add \"CL\" as a nickname to the LISP package since some Interlisp code names it that way." -) - - -(IN-PACKAGE (QUOTE IL-CONVERT)) - -(DEFUN CONVERT-TO-STRING (S) (IF (STRINGP S) S (IL:BQUOTE (STRING (IL:\\\, S))))) - -(DEFUN SIMP-MINUS (N) (IF (NUMBERP N) (- N) (IL:BQUOTE (- (IL:\\\, N))))) - -(DEFUN SIMP-1- (N) (IF (NUMBERP N) (1- N) (IL:BQUOTE (1- (IL:\\\, N))))) - -(DEFUN QUOTE-TREE (ARG) (COND ((CONSP ARG) (CONS (QUOTE-TREE (CAR ARG)) (QUOTE-TREE (CDR ARG)))) ((SYMBOLP ARG) (IL:* IL:|;;| "Macros sometimes have (if 'macroarg...) in them.") (IF (EQ (CDR (ASSOC ARG *LOCALS*)) :MACRO-ARG) (MAKE-MACRO-ARG :ELEMENT ARG) (NOTE-EXPORTED-SYMBOL ARG))) (T ARG))) - -(DEFUN EXPAND-VARLIST (VARLST &KEY SEQUENTIAL (TYPE :LOCAL)) (DECLARE (SPECIAL *LOCALS*)) (DO ((VARLST VARLST (REST VARLST)) (*LOCALS* *LOCALS*) (NEW-VARLST NIL) (VARNAMES NIL) VAR VARNAME) ((ENDP VARLST) (VALUES (NREVERSE NEW-VARLST) VARNAMES)) (DECLARE (SPECIAL *LOCALS*)) (SETQ VAR (FIRST VARLST)) (COND ((CONSP VAR) (SETQ VARNAME (FIRST VAR)) (PUSH (IL:BQUOTE ((IL:\\\, VARNAME) (IL:\\\,@ (MAPCONVERT (REST VAR))))) NEW-VARLST)) (T (SETQ VARNAME VAR) (PUSH VAR NEW-VARLST))) (SETQ VARNAME (CONS VARNAME TYPE)) (PUSH VARNAME VARNAMES) (WHEN SEQUENTIAL (PUSH VARNAME *LOCALS*)))) - -(IL-DEFCONV RPAQQ (&REST PAIRS) (DO ((PAIRS PAIRS (REST (REST PAIRS))) SYM (NEWPAIRS NIL)) ((ENDP PAIRS) (IL:BQUOTE (SETQ (IL:\\\,@ (NREVERSE NEWPAIRS))))) (SETQ SYM (CONVERT (FIRST PAIRS))) (PUSH SYM NEWPAIRS) (PUSHNEW SYM *GLOBALS*) (PUSH (CONVERT (IL:BQUOTE (QUOTE (IL:\\\, (SECOND PAIRS))))) NEWPAIRS))) - -(IL-DEFCONV RPAQ (&REST PAIRS) (DO ((PAIRS PAIRS (REST (REST PAIRS))) SYM (NEWPAIRS NIL)) ((ENDP PAIRS) (IL:BQUOTE (SETQ (IL:\\\,@ (NREVERSE NEWPAIRS))))) (SETQ SYM (CONVERT (FIRST PAIRS))) (PUSH SYM NEWPAIRS) (PUSHNEW SYM *GLOBALS*) (PUSH (IL:BQUOTE (IL:\\\, (CONVERT (SECOND PAIRS)))) NEWPAIRS))) - -(IL-DEFCONV RPAQ? (VAR &OPTIONAL (VALUE NIL SVAR) &REST OTHER-ARGS) (DECLARE (IGNORE OTHER-ARGS)) (CHECK-TYPE VAR SYMBOL) (LET ((SYM (CONVERT VAR))) (PUSHNEW SYM *GLOBALS*) (IF SVAR (IL:BQUOTE (DEFVAR (IL:\\\, SYM) (IL:\\\, (CONVERT VALUE)))) (IL:BQUOTE (DEFVAR (IL:\\\, SYM)))))) - -(IL-DEFCONV CONSTANTS (&REST VARS-VALS) (PROGN-IF-NEEDED (MAP (QUOTE LIST) (FUNCTION (LAMBDA (F) (IF (CONSP F) (IL:BQUOTE (DEFCONSTANT (IL:\\\, (CONVERT (CAR F))) (IL:\\\, (CONVERT (CADR F))))) (IL:BQUOTE (DEFCONSTANT (IL:\\\, (CONVERT F)) (IL:\\\, (CONVERT F))))))) VARS-VALS))) - - - -(IL:* IL:\| "chapter 2") - - -(DEFVAR *WARN-FOR-ALL-IL-SYMBOLS* NIL) - -(DEFPARAMETER *WARN-FOR-IL-SYMBOLS-LOWER-THAN-THIS* NIL) - -(DEFVAR *WARN-ON-CHAR-CODE-USE* NIL "Warn if character codes are being used.") - -(IL-COPYDEF ATOM) - -(IL-COPYDEF BOUNDP) - -(IL-COPYDEF SET) - -(IL-DEFCONV LITATOM (X) (IL:* IL:|;;| "A more sophisticated code walker would tell us if this were being used as a test, and we could just expand to SYMBOLP then.") (LET* ((XV (IF (SYMBOLP X) (CONVERT X) (MAKE-FAKE-SYMBOL (QUOTE ..X..)))) (BODY (IL:BQUOTE (AND (SYMBOLP (IL:\\\, XV)) (IL:\\\, XV))))) (IF (SYMBOLP X) BODY (IL:BQUOTE (LET (((IL:\\\, XV) (IL:\\\, (CONVERT X)))) (IL:\\\, BODY)))))) - -(IL-DEFCONV SETQQ (&REST PAIRS) (DO ((PAIRS PAIRS (REST (REST PAIRS))) (NEWPAIRS NIL)) ((ENDP PAIRS) (IL:BQUOTE (SETQ (IL:\\\,@ (NREVERSE NEWPAIRS))))) (PUSH (CONVERT (FIRST PAIRS)) NEWPAIRS) (PUSH (CONVERT (IL:BQUOTE (QUOTE (IL:\\\, (SECOND PAIRS))))) NEWPAIRS))) - -(IL-DEFCONV SETQ (&REST PAIRS) (DO ((PAIRS PAIRS (REST (REST PAIRS))) (NEWPAIRS NIL)) ((ENDP PAIRS) (IL:BQUOTE (SETQ (IL:\\\,@ (NREVERSE NEWPAIRS))))) (PUSH (CONVERT (FIRST PAIRS)) NEWPAIRS) (PUSH (IL:BQUOTE (IL:\\\, (CONVERT (SECOND PAIRS)))) NEWPAIRS))) - -(IL-DEFCONV PSETQ (&REST PAIRS) (DO ((PAIRS PAIRS (REST (REST PAIRS))) (NEWPAIRS NIL)) ((ENDP PAIRS) (IL:BQUOTE (PSETQ (IL:\\\,@ (NREVERSE NEWPAIRS))))) (PUSH (CONVERT (FIRST PAIRS)) NEWPAIRS) (PUSH (IL:BQUOTE (IL:\\\, (CONVERT (SECOND PAIRS)))) NEWPAIRS))) - -(IL-WARNINGFORM IL:GETTOPVAL) - -(IL-WARNINGFORM IL:SETTOPVAL) - - - -(IL:* IL:|;;| "with Franz, might want to use mp:global-symbol-value for the following") - - -(IL-COPYDEF SET SETATOMVAL) - -(IL-DEFCONV GETATOMVAL (VAR) (IL:BQUOTE (SYMBOL-VALUE (IL:\\\, (CONVERT VAR))))) - -(IL-DEFCONV GETPROP (ATM PROP) (IF (QUOTED-SYMBOL-P ATM) (IL:BQUOTE (GET (IL:\\\, (CONVERT ATM)) (IL:\\\, (CONVERT PROP)))) (IL:BQUOTE (AND (SYMBOLP (IL:\\\, (CONVERT ATM))) (GET (IL:\\\, (CONVERT ATM)) (IL:\\\, (CONVERT PROP))))))) - -(IL-DEFCONV PUTPROP (ATM PROP &OPTIONAL VAL) (IL:BQUOTE (SETF (GET (IL:\\\, (CONVERT ATM)) (IL:\\\, (CONVERT PROP))) (IL:\\\, (CONVERT VAL))))) - -(IL-DEFCONV ADDPROP (SYM PROP VAL FRONTP) (LET ((SVAR (MAKE-FAKE-SYMBOL (QUOTE ..S..))) (PVAR (MAKE-FAKE-SYMBOL (QUOTE ..P..))) (XVAR (MAKE-FAKE-SYMBOL (QUOTE ..X..)))) (CASE FRONTP ((T) (IL:BQUOTE (LET* (((IL:\\\, SVAR) (IL:\\\, SYM)) ((IL:\\\, PVAR) (IL:\\\, PROP)) ((IL:\\\, XVAR) (GET SVAR PVAR))) (IF (IL:\\\, XVAR) (NCONC (IL:\\\, XVAR) (IL:\\\, VAL)) (SETF (GET (IL:\\\, SVAR) (IL:\\\, PVAR)) (LIST (IL:\\\, VAL))))))) ((NIL) (IL:BQUOTE (PUSH (IL:\\\, VAL) (GET (IL:\\\, SYM) (IL:\\\, PROP))))) (OTHERWISE (IL:BQUOTE (IF (IL:\\\, FRONTP) (PUSH (IL:\\\, VAL) (GET (IL:\\\, SYM) (IL:\\\, PROP))) (LET* (((IL:\\\, SVAR) (IL:\\\, SYM)) ((IL:\\\, PVAR) (IL:\\\, PROP)) ((IL:\\\, XVAR) (GET (IL:\\\, SVAR) (IL:\\\, PVAR)))) (IF (IL:\\\, XVAR) (NCONC (IL:\\\, XVAR) (IL:\\\, VAL)) (SETF (GET (IL:\\\, SVAR) (IL:\\\, PVAR)) (LIST (IL:\\\, VAL))))))))))) - -(IL-DEFCONV REMPROP (ATM PROP) (IL:BQUOTE (PROGN (REMPROP (IL:\\\, (CONVERT ATM)) (IL:\\\, (CONVERT PROP))) NIL))) - -(IL-DEFCONV REMPROPLIST (ATM PROPS) (LET ((PVAR (MAKE-FAKE-SYMBOL (QUOTE .PROP.)))) (IL:BQUOTE (PROGN (DOLIST ((IL:\\\, PVAR) (IL:\\\, (CONVERT PROPS))) (REMPROP (IL:\\\, (CONVERT ATM)) (IL:\\\, PVAR))) NIL)))) - -(IL-DEFCONV CHANGEPROP (SYM PROP1 PROP2) (LET* ((SYMVAR-UNLETTED (OR (SYMBOLP SYM) (AND (CONSP SYM) (EQ (CAR SYM) (QUOTE QUOTE)) (= (LENGTH SYM) 2)))) (SYMVAR (IF SYMVAR-UNLETTED (CONVERT SYM) (MAKE-FAKE-SYMBOL (QUOTE ..SYM..)))) (BODY (IL:BQUOTE (SETF (GET (IL:\\\, SYMVAR) (IL:\\\, (CONVERT PROP2))) (GET (IL:\\\, SYMVAR) (IL:\\\, (CONVERT PROP1))))))) (IF SYMVAR-UNLETTED BODY (IL:BQUOTE (LET (((IL:\\\, SYMVAR) (IL:\\\, SYM))) (IL:\\\, BODY)))))) - -(IL-WARNINGFORM IL:PROPNAMES) - -(IL-WARNINGFORM IL:DEFLIST) - -(IL-COPYDEF SYMBOL-PLIST GETPROPLIST) - -(IL-COPYDEF GENTEMP GENSYM) - -(IL-DEFCONV MKATOM (X) (WARN "MKATOM translated for strings only.") (IL:BQUOTE (INTERN (IL:\\\, (CONVERT X))))) - -(IL-DEFCONV L-CASE (THING &OPTIONAL FLG) (WARN "L-CASE translated for strings only") (CASE FLG ((T) (IL:BQUOTE (STRING-CAPITALIZE (IL:\\\, (CONVERT THING))))) ((NIL) (IL:BQUOTE (STRING-DOWNCASE (IL:\\\, (CONVERT THING))))) (OTHERWISE (LET ((S (MAKE-FAKE-SYMBOL ".X."))) (IL:BQUOTE (LET (((IL:\\\, S) (IL:\\\, (CONVERT THING)))) "L-CASE" (IF (IL:\\\, (CONVERT FLG)) (STRING-CAPITALIZE (IL:\\\, S)) (STRING-DOWNCASE (IL:\\\, S))))))))) - -(IL-DEFCONV U-CASE (THING) (WARN "U-CASE translated for strings only") (IL:BQUOTE (STRING-UPCASE (IL:\\\, (CONVERT THING))))) - -(IL-DEFCONV SETPROPLIST (ATM LST) (IL:BQUOTE (SETF (SYMBOL-PLIST (IL:\\\, (CONVERT ATM)) (IL:\\\, (CONVERT LST)))))) - -(IL-DEFCONV CHARCODE (CHAR) (BLOCK CHARCODE (FLET ((CONVERT-CHAR (X) (COND ((TYPEP X (QUOTE (INTEGER 0 9))) (DIGIT-CHAR X)) ((EQL (LENGTH (STRING X)) 1) (CHAR (STRING X) 0)) ((AND (EQL (LENGTH (STRING X)) 2) (EQL (CHAR (STRING X) 0) #\^)) (CODE-CHAR (- (CHAR-CODE (CHAR-UPCASE (CHAR (STRING X) 1))) (CHAR-CODE #\@)))) ((NAME-CHAR X)) (T (RETURN-FROM CHARCODE (LIST (CONVERT (QUOTE IL:CHARCODE)) (CONVERT X))))))) (TYPECASE CHAR ((OR STRING SYMBOL (INTEGER 0 9)) (IL:BQUOTE (CHAR-CODE (IL:\\\, (CONVERT-CHAR CHAR))))) (LIST (IL:BQUOTE (MAPCAR (FUNCTION CHAR-CODE) (QUOTE (IL:\\\, (MAPCAR (FUNCTION CONVERT-CHAR) CHAR)))))) (OTHERWISE (LIST (CONVERT (QUOTE CHARCODE)) (CONVERT CHAR))))))) - -(IL-DEFCONV NTHCHARCODE (X N &OPTIONAL FLG RDTBL) (COND ((OR FLG RDTBL) (WARN "Cannot translate NTHCHARCODE flg or rdtbl args") *CURRENT-EXPRESSION*) (T (IL:BQUOTE (CHAR (SYMBOL-NAME (IL:\\\, (CONVERT X))) (IL:\\\, (CONVERT N))))))) - -(IL-DEFCONV CHARACTER (FORM) (IL:BQUOTE (CODE-CHAR (IL:\\\, (CONVERT FORM))))) - -(IL-DEFCONV CHCON1 (FORM) (IL:BQUOTE (CHAR-CODE (SVREF (SYMBOL-NAME (IL:\\\, (CONVERT FORM))) 0)))) - -(DEFUN EVAL-IF-POSSIBLE (X) (XCL:IGNORE-ERRORS (RETURN-FROM EVAL-IF-POSSIBLE (EVAL X))) X) - -(IL-DEFCONV SELCHARQ (KEY &REST CLAUSES &AUX X) (IL:BQUOTE (CASE (IL:\\\, (CONVERT KEY)) (IL:\\\,@ (MAPCAR (FUNCTION (LAMBDA (CLAUSE &AUX X) (CONS (IF (CONSP (SETQ X (CAR CLAUSE))) (MAPCAR (FUNCTION (LAMBDA (V) (EVAL-IF-POSSIBLE (CONVERT (IL:BQUOTE (IL:CHARCODE (IL:\\\, X))))))) X) (AND X (EVAL-IF-POSSIBLE (CONVERT (IL:BQUOTE (IL:CHARCODE (IL:\\\, X))))))) (MAPCONVERT (CDR CLAUSE))))) (BUTLAST CLAUSES))) (IL:\\\,@ (AND (SETQ X (CAR (LAST CLAUSES))) (IL:BQUOTE ((OTHERWISE (IL:\\\,@ (IF (CONSP X) (CONVERT X) (LIST (CONVERT X)))))))))))) - -(IL-COPYCONV CHARACTER FCHARACTER) - -(IL-WARNINGFORM IL:PACK) - -(IL-WARNINGFORM IL:PACK*) - -(IL-WARNINGFORM IL:UNPACK) - -(IL-WARNINGFORM IL:DUNPACK) - -(IL-WARNINGFORM IL:MAPATOMS) - -(IL-WARNINGFORM IL:APROPOS) - - - -(IL:* IL:\; "***** rest of chapter 2") - - - - -(IL:* IL:\| "Chapter 3") - - -(IL-DEFCONV NLISTP (X) (IL:BQUOTE (NOT (LISTP (IL:\\\, (CONVERT X)))))) - - - -(IL:* IL:\; "***** CAR/CDRERR") - - -(IL-COPYDEF CONS) - -(IL-COPYDEF LISTP) - -(IL-COPYDEF CAR) - -(IL-COPYDEF CDR) - -(IL-COPYDEF CADR) - -(IL-COPYDEF CDAR) - -(IL-COPYDEF CDDR) - -(IL-COPYDEF CAAAR) - -(IL-COPYDEF CAADR) - -(IL-COPYDEF CADAR) - -(IL-COPYDEF CADDR) - -(IL-COPYDEF CDAAR) - -(IL-COPYDEF CDADR) - -(IL-COPYDEF CDDAR) - -(IL-COPYDEF CDDDR) - -(IL-COPYDEF CAAAAR) - -(IL-COPYDEF CAAADR) - -(IL-COPYDEF CAADAR) - -(IL-COPYDEF CAADDR) - -(IL-COPYDEF CADAAR) - -(IL-COPYDEF CDDDAR) - -(IL-COPYDEF CDDDDR) - -(IL-COPYDEF RPLACD) - -(IL-COPYDEF RPLACD FRPLACD) - -(IL-COPYDEF RPLACA) - -(IL-COPYDEF RPLACA FRPLACA) - -(IL-DEFCONV RPLNODE (X A D) (IL:BQUOTE (LET (($X$ (IL:\\\, (CONVERT X)))) (RPLACA $X$ (IL:\\\, (CONVERT A))) (RPLACD $X$ (IL:\\\, (CONVERT D)))))) - -(IL-DEFCONV RPLNODE2 (X Y) (LET ((XVAR (MAKE-FAKE-SYMBOL ".X."))) (IL:BQUOTE (LET (((IL:\\\, XVAR) (IL:\\\, (CONVERT X)))) (RPLACA (IL:\\\, XVAR) (CAR (IL:\\\, (CONVERT Y)))) (RPLACD (IL:\\\, XVAR) (CDR (IL:\\\, (CONVERT Y)))))))) - -(IL-DEFCONV FRPLNODE (X A D) (IL:BQUOTE (IL-RPLNODE (IL:\\\, (CONVERT X)) (IL:\\\, (CONVERT A)) (IL:\\\, (CONVERT D))))) - -(IL-DEFCONV FRPLNODE2 (X Y) (IL:BQUOTE (LET (($X$ (IL:\\\, (CONVERT X))) ($Y$ (IL:\\\, (CONVERT Y)))) (RPLACA $X$ (CAR $Y$)) (RPLACD $X$ (CDR $Y$)) $X$))) - -(IL-DEFCONV MKLIST (X) (IL:BQUOTE (LET (($X$ (IL:\\\, (CONVERT X)))) (IF (LISTP $X$) $X$ (LIST $X$))))) - -(IL-DEFCONV NCONC1 (LST X) (IL:BQUOTE (NCONC (IL:\\\, (CONVERT LST)) (LIST (IL:\\\, (CONVERT X)))))) - -(IL-COPYDEF LIST) - -(IL-COPYDEF LIST*) - -(IL-COPYDEF APPEND) - -(IL-COPYDEF NCONC) - -(IL-COPYDEF TAILP) - -(IL-COPYDEF LAST) - -(IL-COPYDEF LENGTH) - -(IL-COPYDEF LENGTH FLENGTH) - -(IL-COPYDEF SET-DIFFERENCE LDIFFERENCE) - -(IL-COPYDEF INTERSECTION) - -(IL-COPYDEF UNION) - -(IL-DEFCONV ATTACH (X L) (LET* ((CON-X (CONVERT X)) (CON-L (CONVERT L)) (XV (IF (SYMBOLP CON-X) CON-X (MAKE-FAKE-SYMBOL (QUOTE ..X..)))) (LV (IF (SYMBOLP CON-L) CON-L (MAKE-FAKE-SYMBOL (QUOTE ..L..)))) (BODY (IL:BQUOTE (IF (IL:\\\, LV) (PROGN (SETF (CDR (IL:\\\, LV)) (CONS (CAR (IL:\\\, LV)) (CDR (IL:\\\, LV))) (CAR (IL:\\\, LV)) (IL:\\\, XV)) (IL:\\\, LV)) (CONS (IL:\\\, XV) NIL))))) (IF (AND (SYMBOLP CON-X) (SYMBOLP CON-L)) BODY (IL:BQUOTE (LET ((IL:\\\,@ (UNLESS (SYMBOLP CON-X) (IL:BQUOTE (((IL:\\\, XV) (IL:\\\, CON-X)))))) (IL:\\\,@ (UNLESS (SYMBOLP CON-L) (IL:BQUOTE (((IL:\\\, LV) (IL:\\\, CON-L))))))) (IL:\\\, BODY)))))) - -(IL-DEFCONV LCONC (HEAD THING) (LET ((PV (MAKE-FAKE-SYMBOL ".P."))) (IF (NULL HEAD) (IL:BQUOTE (LET (((IL:\\\, PV) (CONS (IL:\\\, (CONVERT THING)) NIL))) (CONS (IL:\\\, PV) (LAST (IL:\\\, PV))))) (IL:BQUOTE (LET (((IL:\\\, PV) (IL:\\\, (CONVERT HEAD)))) "LCONC" (IF (CONSP (IL:\\\, PV)) (SETF (CDDR (IL:\\\, PV)) (CONS (IL:\\\, (CONVERT THING)) NIL) (CDR (IL:\\\, PV)) (LAST (CDDR (IL:\\\, PV)))) (LET (((IL:\\\, PV) (CONS (IL:\\\, (CONVERT THING)) NIL))) (CONS (IL:\\\, PV) (LAST (IL:\\\, PV)))))))))) - -(IL-DEFCONV TCONC (HEAD THING) (LET ((PV (MAKE-FAKE-SYMBOL ".P."))) (IF (NULL HEAD) (IL:BQUOTE (LET (((IL:\\\, PV) (CONS (IL:\\\, (CONVERT THING)) NIL))) (CONS (IL:\\\, PV) (IL:\\\, PV)))) (IL:BQUOTE (LET (((IL:\\\, PV) (IL:\\\, (CONVERT HEAD)))) "TCONC" (IF (CONSP (IL:\\\, PV)) (SETF (CDDR (IL:\\\, PV)) (CONS (IL:\\\, (CONVERT THING)) NIL) (CDR PV) (CDDR PV)) (LET (((IL:\\\, PV) (CONS (IL:\\\, (CONVERT THING)) NIL))) (CONS (IL:\\\, PV) (IL:\\\, PV))))))))) - -(IL-WARNINGFORM IL:DOCOLLECT) - -(IL-WARNINGFORM IL:ENDCOLLECT) - -(IL-WARNINGFORM IL:SCRATCHLIST) - -(IL-WARNINGFORM IL:ADDTOSCRATCHLIST) - -(IL-WARNINGFORM IL:COPYALL) - -(IL-WARNINGFORM IL:HCOPYALL) - -(IL-WARNINGFORM IL:NLEFT) - -(IL-WARNINGFORM IL:LASTN) - -(IL-WARNINGFORM IL:COUNT) - -(IL-WARNINGFORM IL:COUNTDOWN) - -(IL-WARNINGFORM IL:EQUALN) - -(IL-WARNINGFORM IL:LDIFF) - -(IL-WARNINGFORM IL:LSUBST) - -(IL-WARNINGFORM IL:SUBPAIR) - - - -(IL:* IL:\; "warning forms ") - - -(IL-COPYDEF COPY-LIST COPY) - -(IL-DEFCONV NTH (X N) (IL:BQUOTE (NTHCDR (1- (IL:\\\, (CONVERT N))) (IL:\\\, (CONVERT X))))) - -(IL-DEFCONV MEMB (X Y) (IL:BQUOTE (MEMBER (IL:\\\, (CONVERT X)) (IL:\\\, (CONVERT Y)) :TEST (FUNCTION EQ)))) - -(IL-DEFCONV FMEMB (X Y) (IL:BQUOTE (MEMBER (IL:\\\, (CONVERT X)) (IL:\\\, (CONVERT Y)) :TEST (FUNCTION EQ)))) - -(IL-DEFCONV MEMBER (X Y) (IL:BQUOTE (MEMBER (IL:\\\, (CONVERT X)) (IL:\\\, (CONVERT Y)) :TEST (FUNCTION EQUAL)))) - -(IL-DEFCONV EQMEMB (X Y) (LET ((XV (MAKE-FAKE-SYMBOL (QUOTE .X.))) (YV (MAKE-FAKE-SYMBOL (QUOTE .Y.)))) (IL:BQUOTE (LET (((IL:\\\, XV) (IL:\\\, (CONVERT X))) ((IL:\\\, YV) (IL:\\\, (CONVERT Y)))) "IL:EQMEMB" (OR (EQ (IL:\\\, XV) (IL:\\\, YV)) (MEMBER (IL:\\\, XV) (IL:\\\, YV) :TEST (FUNCTION EQ))))))) - -(IL-DEFCONV SUBST (NEW OLD EXPR) (IL:BQUOTE (SUBST (IL:\\\, (CONVERT NEW)) (IL:\\\, (CONVERT OLD)) (IL:\\\, (CONVERT EXPR)) :TEST (FUNCTION EQUAL)))) - -(IL-DEFCONV DSUBST (NEW OLD EXPR) (IL:BQUOTE (NSUBST (IL:\\\, (CONVERT NEW)) (IL:\\\, (CONVERT OLD)) (IL:\\\, (CONVERT EXPR)) :TEST (FUNCTION EQUAL)))) - -(IL-DEFCONV SUBLIS (ALST EXPR FLG) (COND ((EQ FLG (QUOTE T)) (IL:BQUOTE (SUBLIS (IL:\\\, (CONVERT ALST)) (COPY-TREE (IL:\\\, (CONVERT EXPR)))))) ((NULL FLG) (IL:BQUOTE (SUBLIS (IL:\\\, (CONVERT ALST)) (IL:\\\, (CONVERT EXPR))))) (T (IL:BQUOTE (SUBLIS (IL:\\\, (CONVERT ALST)) (IF (IL:\\\, (CONVERT FLG)) (COPY-TREE (IL:\\\, (CONVERT EXPR))) (IL:\\\, (CONVERT EXPR)))))))) - -(IL-DEFCONV DSUBLIS (ALST EXPR FLG) (COND ((EQ FLG (QUOTE T)) (IL:BQUOTE (NSUBLIS (IL:\\\, (CONVERT ALST)) (COPY-TREE (IL:\\\, (CONVERT EXPR)))))) ((NULL FLG) (IL:BQUOTE (NSUBLIS (IL:\\\, (CONVERT ALST)) (IL:\\\, (CONVERT EXPR))))) (T (IL:BQUOTE (NSUBLIS (IL:\\\, (CONVERT ALST)) (IF (IL:\\\, (CONVERT FLG)) (COPY-TREE (IL:\\\, (CONVERT EXPR))) (IL:\\\, (CONVERT EXPR)))))))) - -(IL-DEFCONV ASSOC (KEY ALST) (IL:BQUOTE (ASSOC (IL:\\\, (CONVERT KEY)) (IL:\\\, (CONVERT ALST)) :TEST (FUNCTION EQ)))) - -(IL-DEFCONV SASSOC (KEY ALST) (IL:BQUOTE (ASSOC (IL:\\\, (CONVERT KEY)) (IL:\\\, (CONVERT ALST)) :TEST (FUNCTION EQUAL)))) - -(IL-DEFCONV PUTASSOC (KEY VAL ALST) (LET ((AVAR (MAKE-FAKE-SYMBOL (QUOTE .ALIST.))) (KVAR (MAKE-FAKE-SYMBOL (QUOTE .KEY.))) (CVAR (MAKE-FAKE-SYMBOL (QUOTE .ASSN.)))) (IL:BQUOTE (LET* (((IL:\\\, KVAR) (IL:\\\, (CONVERT KEY))) ((IL:\\\, CVAR) (ASSOC (IL:\\\, KVAR) (IL:\\\, AVAR)))) "IL:PUTASSOC" (IF (IL:\\\, CVAR) (SETF (CDR (IL:\\\, CVAR)) (IL:\\\, (CONVERT VAL))) (IF (CONSP (IL:\\\, AVAR)) (NCONC (IL:\\\, AVAR) (CONS (CONS (IL:\\\, KVAR) (IL:\\\, (CONVERT VAL))) NIL)))))))) - -(IL-COPYCONV NTH FNTH) - -(IL-COPYCONV LAST FLAST) - -(IL-COPYCONV MEMB FMEMB) - -(IL-COPYCONV ASSOC FASSOC) - -(IL-COPYDEF GETF LISTGET) - -(IL-DEFCONV LISTPUT (LST PROP VAL) (IL:BQUOTE (SETF (GETF (IL:\\\, (CONVERT LST)) (IL:\\\, (CONVERT PROP))) (IL:\\\, (CONVERT VAL))))) - -(IL-DEFCONV LISTGET1 (LST PROP) (IL:BQUOTE (SECOND (MEMBER (IL:\\\, (CONVERT PROP)) (IL:\\\, (CONVERT LST)) :TEST (FUNCTION EQ))))) - -(IL-DEFCONV MERGE (A B COMPAREFN) (IL:BQUOTE (MERGE (QUOTE LIST) (IL:\\\, (CONVERT A)) (IL:\\\, (CONVERT B)) (IL:\\\, (CONVERT COMPAREFN))))) - -(IL-WARNINGFORM IL:LISTPUT1) - -(IL-WARNINGFORM IL:ALPHORDER) - -(IL-WARNINGFORM IL:UALPHORDER) - -(IL-WARNINGFORM IL:COMPARELISTS) - - - -(IL:* IL:\; "warning forms") - - -(IL-DEFCONV REMOVE (X L) (IL:BQUOTE (REMOVE (IL:\\\, (CONVERT X)) (IL:\\\, (CONVERT L)) :TEST (FUNCTION EQUAL)))) - -(IL-DEFCONV DREMOVE (X L) (IL:BQUOTE (DELETE (IL:\\\, (CONVERT X)) (IL:\\\, (CONVERT L)) :TEST (FUNCTION EQ)))) - -(IL-DEFCONV REVERSE (L) (LET ((LVAR (MAKE-FAKE-SYMBOL ".L."))) (IL:BQUOTE (LET (((IL:\\\, LVAR) (IL:\\\, (CONVERT L)))) (IF (LISTP (IL:\\\, LVAR)) (REVERSE (IL:\\\, LVAR)) (IL:\\\, LVAR)))))) - -(IL-DEFCONV DREVERSE (L) (IL:BQUOTE (IF (LISTP (IL:\\\, L)) (NREVERSE (IL:\\\, L)) (IL:\\\, L)))) - -(IL-DEFCONV NEGATE (X) (IL:BQUOTE (NOT (IL:\\\, (CONVERT X))))) - - - -(IL:* IL:\| "chapter 4") - - -(IL-COPYDEF STRINGP) - -(IL-DEFCONV STREQUAL (X Y) (LET* ((XVARP (NOT (OR (STRINGP X) (SYMBOLP X)))) (YVARP (NOT (OR (STRINGP Y) (SYMBOLP Y)))) (XV (IF XVARP (MAKE-FAKE-SYMBOL "$X") (CONVERT X))) (YV (IF YVARP (MAKE-FAKE-SYMBOL "$Y") (CONVERT Y)))) (IF (OR XVARP YVARP) (IL:BQUOTE (LET ((IL:\\\,@ (AND XVARP (IL:BQUOTE (((IL:\\\, XV) (IL:\\\, (CONVERT X))))))) (IL:\\\,@ (AND YVARP (IL:BQUOTE (((IL:\\\, YV) (IL:\\\, (CONVERT Y)))))))) "IL:STREQUAL" (AND (IL:\\\,@ (IF (NOT (STRINGP X)) (IL:BQUOTE ((STRINGP (IL:\\\, XV)))))) (IL:\\\,@ (IF (NOT (STRINGP Y)) (IL:BQUOTE ((STRINGP (IL:\\\, YV)))))) (STRING= (IL:\\\, XV) (IL:\\\, YV))))) (IL:BQUOTE (STRING= (IL:\\\, XV) (IL:\\\, YV)))))) - -(IL-DEFCONV STRING-EQUAL (X Y) (LET* ((XVARP (NOT (OR (STRINGP X) (SYMBOLP X)))) (YVARP (NOT (OR (STRINGP Y) (SYMBOLP Y)))) (XV (IF XVARP (MAKE-FAKE-SYMBOL "$X") (CONVERT X))) (YV (IF YVARP (MAKE-FAKE-SYMBOL "$Y") (CONVERT Y)))) (IF (OR XVARP YVARP) (IL:BQUOTE (LET ((IL:\\\,@ (AND XVARP (IL:BQUOTE (((IL:\\\, XV) (IL:\\\, (CONVERT X))))))) (IL:\\\,@ (AND YVARP (IL:BQUOTE (((IL:\\\, YV) (IL:\\\, (CONVERT Y)))))))) "IL:STREQUAL" (AND (IL:\\\,@ (IF (NOT (STRINGP X)) (IL:BQUOTE ((STRINGP (IL:\\\, XV)))))) (IL:\\\,@ (IF (NOT (STRINGP Y)) (IL:BQUOTE ((STRINGP (IL:\\\, YV)))))) (STRING= (IL:\\\, XV) (IL:\\\, YV))))) (IL:BQUOTE (STRING-EQUAL (IL:\\\, XV) (IL:\\\, YV)))))) - -(IL-DEFCONV NCHARS (THING &OPTIONAL FLG) (DECLARE (IGNORE FLG)) (IL:* IL:|;;| "Assume it will be a string or symbol; most common case by far.") (IL:BQUOTE (LENGTH (STRING (IL:\\\, (CONVERT THING)))))) - -(DEFUN ALLOCSTRING (N &OPTIONAL INITCHAR OLD FATFLG) (COND (OLD (WARN "Cannot convert ALLOCSTRING old argument") *CURRENT-EXPRESSION*) (T (IL:BQUOTE (MAKE-STRING (IL:\\\, (CONVERT N)) (IL:\\\,@ (IF INITCHAR (LIST :INITIAL-ELEMENT (CONVERT INITCHAR)) NIL))))))) - -(IL-DEFCONV MKSTRING (X &OPTIONAL FLG RDTBL) (IL:BQUOTE (WRITE-TO-STRING (IL:\\\, (CONVERT X)) :ESCAPE (IL:\\\, (CONVERT FLG))))) - -(IL-DEFCONV CONCAT (&REST XX) (IL:BQUOTE (CONCATENATE (QUOTE STRING) (IL:\\\,@ (MAPCONVERT XX))))) - -(IL-DEFCONV CONCATLIST (L) (IL:BQUOTE (APPLY (FUNCTION CONCATENATE) (QUOTE STRING) (MAPCAR (FUNCTION (LAMBDA (X) (PRINC-TO-STRING X))) (IL:\\\, (CONVERT L)))))) - -(IL-DEFCONV RPLSTRING (X N Y) (IL:BQUOTE (REPLACE (IL:\\\, (CONVERT X)) (IL:\\\, (CONVERT Y)) :START1 (IL:\\\, (CONVERT N))))) - -(IL-DEFCONV RPLCHARCODE (X N CODE) (IL:BQUOTE (SETF (CHAR (IL:\\\, (CONVERT X)) (IL:\\\, (CONVERT N))) (CODE-CHAR (IL:\\\, (CONVERT CODE)))))) - -(IL-DEFCONV STRPOS (PAT STRING &OPTIONAL START SKIP ANCHOR TAIL CASEARRAY BACKWARDSFLG) (WHEN CASEARRAY (WARN "CASEARRAY arg to STRPOS not translated.")) (WHEN ANCHOR (WARN "ANCHOR arg to STRPOS not translated.")) (WHEN TAIL (WARN "TAIL arg to STRPOS not translated.")) (WHEN SKIP (WARN "SKIP arg to STRPOS not translated.")) (IL:BQUOTE (SEARCH (IL:\\\, (CONVERT PAT)) (IL:\\\, (CONVERT STRING)) (IL:\\\,@ (AND START (IL:BQUOTE (:START2 (1- (IL:\\\, (CONVERT START))))))) (IL:\\\,@ (AND BACKWARDSFLG (IL:BQUOTE (:FROM-END-P (IL:\\\, (CONVERT BACKWARDSFLG))))))))) - -(IL-DEFCONV SUBSTRING (X N &OPTIONAL M OLDPTR) (IL:BQUOTE (SUBSEQ (IL:\\\, (CONVERT X)) (IL:\\\, (CONVERT N)) (IL:\\\, (CONVERT M))))) - - - -(IL:* IL:|;;| " Warning Forms") - - -(IL-WARNINGFORM IL:GNC) - -(IL-WARNINGFORM IL:GLC) - - - -(IL:* IL:\| "chapter 5") - - - - -(IL:* IL:\; "***** chapter 5 (arrays)") - - - - -(IL:* IL:\| "chapter 6") - - -(IL-DEFCONV MAPHASH (HARRAY MAPHFN) (IF (AND (CONSP MAPHFN) (EQ (CAR MAPHFN) (QUOTE FUNCTION)) (CONSP (SECOND MAPHFN)) (EQ (CAR (SECOND MAPHFN)) (QUOTE LAMBDA))) (IL:BQUOTE (MAPHASH (FUNCTION (LAMBDA ((IL:\\\, (CONVERT (SECOND (SECOND (SECOND MAPHFN))))) (IL:\\\, (CONVERT (FIRST (SECOND (SECOND MAPHFN)))))) IL:\\\, (MAPCONVERT (CDDR (SECOND MAPHFN))))) (IL:\\\, (CONVERT HARRAY)))) (IF (AND (CONSP MAPHFN) (EQ (CAR MAPHFN) (QUOTE LAMBDA))) (IL:BQUOTE (MAPHASH (FUNCTION (LAMBDA ((IL:\\\, (CONVERT (SECOND (SECOND MAPHFN)))) (IL:\\\, (CONVERT (FIRST (SECOND MAPHFN))))) IL:\\\, (MAPCONVERT (CDDR MAPHFN)))))) (IL:BQUOTE (MAPHASH (FUNCTION (LAMBDA (KEY VAL) (FUNCALL (IL:\\\, (CONVERT MAPHFN)) VAL KEY))) (IL:\\\, (CONVERT HARRAY))))))) - -(IL-DEFCONV GETHASH (KEY &OPTIONAL TABLE) (IL:BQUOTE ((IL:\\\, (IF TABLE (QUOTE GETHASH) (CONVERT (QUOTE GETHASH)))) (IL:\\\, (CONVERT KEY)) (IL:\\\,@ (AND TABLE (LIST (CONVERT TABLE))))))) - -(IL-DEFCONV PUTHASH (KEY VAL &OPTIONAL TBL) (IF TBL (IL:BQUOTE (SETF (GETHASH (IL:\\\, (CONVERT KEY)) (IL:\\\, (CONVERT TBL))) (IL:\\\, (CONVERT VAL)))) (LIST (CONVERT (QUOTE PUTHASH)) (CONVERT VAL) (CONVERT KEY)))) - - - -(IL:* IL:\; "***** chapter 6 (hash arrays)") - - - - -(IL:* IL:\| "chapter 7") - - -(IL-DEFCONV SMALLP (X) (DECLARE (IGNORE X)) NIL) - - - -(IL:* IL:\; "*** ??") - - -(IL-DEFCONV FIXP (X) (IL:BQUOTE (INTEGERP (IL:\\\, (CONVERT X))))) - -(IL-COPYDEF FLOATP) - -(IL-COPYDEF NUMBERP) - -(IL-COPYDEF EQUALP EQP) - - - -(IL:* IL:|;;| "(il-defconv EQP (x y) `(eql ,^x ,^y)) ***** overflow") - - -(IL-DEFCONV PLUS (&REST ARGS) (IL:BQUOTE (+ (IL:\\\,@ (MAPCONVERT ARGS))))) - -(IL-DEFCONV MINUS (X) (IL:BQUOTE (- (IL:\\\, (CONVERT X))))) - -(IL-DEFCONV DIFFERENCE (X Y) (IL:BQUOTE (- (IL:\\\, (CONVERT X)) (IL:\\\, (CONVERT Y))))) - -(IL-DEFCONV TIMES (&REST ARGS) (IL:BQUOTE (* (IL:\\\,@ (MAPCONVERT ARGS))))) - - - -(IL:* IL:\; "***** remainder ") - - -(IL-DEFCONV GREATERP (X Y) (IL:BQUOTE (> (IL:\\\, (CONVERT X)) (IL:\\\, (CONVERT Y))))) - -(IL-DEFCONV LESSP (X Y) (IL:BQUOTE (< (IL:\\\, (CONVERT X)) (IL:\\\, (CONVERT Y))))) - -(IL-DEFCONV GEQ (X Y) (IL:BQUOTE (>= (IL:\\\, (CONVERT X)) (IL:\\\, (CONVERT Y))))) - -(IL-DEFCONV LEQ (X Y) (IL:BQUOTE (<= (IL:\\\, (CONVERT X)) (IL:\\\, (CONVERT Y))))) - -(IL-COPYDEF ZEROP) - -(IL-COPYDEF MINUSP) - -(IL-COPYDEF MIN) - -(IL-COPYDEF MAX) - -(IL-COPYDEF ABS) - - - -(IL:* IL:\; "***** min.integer,^ max.integer") - - -(IL-DEFCONV IPLUS (&REST ARGS) (IL:BQUOTE (+ (IL:\\\,@ (MAPCONVERT ARGS))))) - -(IL-DEFCONV IMINUS (&REST ARGS) (IL:BQUOTE (- (IL:\\\,@ (MAPCONVERT ARGS))))) - -(IL-DEFCONV IDIFFERENCE (X Y) (IL:BQUOTE (- (IL:\\\, (CONVERT X)) (IL:\\\, (CONVERT Y))))) - -(IL-DEFCONV ADD1 (X) (IL:BQUOTE (1+ (IL:\\\, (CONVERT X))))) - -(IL-DEFCONV SUB1 (X) (IL:BQUOTE (1- (IL:\\\, (CONVERT X))))) - -(IL-DEFCONV ITIMES (&REST ARGS) (IL:BQUOTE (* (IL:\\\,@ (MAPCONVERT ARGS))))) - -(IL-DEFCONV IQUOTIENT (X Y) (IL:BQUOTE (TRUNCATE (IL:\\\, (CONVERT X)) (IL:\\\, (CONVERT Y))))) - -(IL-DEFCONV IREMAINDER (X Y) (IL:BQUOTE (REM (IL:\\\, (CONVERT X)) (IL:\\\, (CONVERT Y))))) - -(IL-DEFCONV IMOD (X Y) (IL:BQUOTE (MOD (IL:\\\, (CONVERT X)) (IL:\\\, (CONVERT Y))))) - -(IL-DEFCONV IGREATERP (X Y) (IL:BQUOTE (> (IL:\\\, (CONVERT X)) (IL:\\\, (CONVERT Y))))) - -(IL-DEFCONV ILESSP (X Y) (IL:BQUOTE (< (IL:\\\, (CONVERT X)) (IL:\\\, (CONVERT Y))))) - -(IL-DEFCONV IGEQ (X Y) (IL:BQUOTE (>= (IL:\\\, (CONVERT X)) (IL:\\\, (CONVERT Y))))) - -(IL-DEFCONV ILEQ (X Y) (IL:BQUOTE (<= (IL:\\\, (CONVERT X)) (IL:\\\, (CONVERT Y))))) - -(IL-DEFCONV IMIN (&REST ARGS) (IL:BQUOTE (MIN (IL:\\\,@ (MAPCONVERT ARGS))))) - -(IL-DEFCONV IMAX (&REST ARGS) (IL:BQUOTE (MAX (IL:\\\,@ (MAPCONVERT ARGS))))) - -(IL-DEFCONV IEQP (X Y) (IL:BQUOTE (EQL (IL:\\\, (CONVERT X)) (IL:\\\, (CONVERT Y))))) - -(IL-DEFCONV FIX (N) (IL:BQUOTE (TRUNCATE (IL:\\\, (CONVERT N))))) - -(IL-DEFCONV FIXR (N) (IL:BQUOTE (ROUND (IL:\\\, (CONVERT N))))) - -(IL-DEFCONV RSH (X N) (IL:BQUOTE (ASH (IL:\\\, (CONVERT X)) (IL:\\\, (SIMP-MINUS (CONVERT N)))))) - -(IL-DEFCONV POWEROFTWOP (X) (IL:BQUOTE (= (LOGCOUNT (IL:\\\, (CONVERT X))) 1))) - -(IL-DEFCONV EVENP (X &OPTIONAL (Y 2)) (IL:BQUOTE (ZEROP (MOD (IL:\\\, (CONVERT X)) (IL:\\\, (CONVERT Y)))))) - -(IL-DEFCONV ODDP (X &OPTIONAL (Y 2)) (IL:BQUOTE (NOT (ZEROP (MOD (IL:\\\, (CONVERT X)) (IL:\\\, (CONVERT Y))))))) - -(IL-DEFCONV BITTEST (N MASK) (IL:BQUOTE (NOT (= 0 (LOGAND (IL:\\\, (CONVERT N)) (IL:\\\, (CONVERT MASK))))))) - -(IL-DEFCONV BITCLEAR (N MASK) (IL:BQUOTE (LOGAND (IL:\\\, (CONVERT N)) (LOGNOT (IL:\\\, (CONVERT MASK)))))) - -(IL-COPYDEF GCD) - -(IL-COPYDEF LOGAND) - -(IL-COPYDEF LOGIOR LOGOR) - -(IL-COPYDEF ASH LSH) - -(IL-COPYDEF INTEGER-LENGTH INTEGERLENGTH) - -(IL-COPYDEF LOGNOT) - -(IL-COPYDEF LOGIOR BITSET) - -(IL-DEFCONV MASK.1\'S (POSITION SIZE) (IL:BQUOTE (ASH (1- (EXPT 2 (IL:\\\, (CONVERT SIZE)))) (IL:\\\, (CONVERT POSITION))))) - -(IL-DEFCONV MASK.0\'S (POSITION SIZE) (IL:BQUOTE (LOGNOT (ASH (1- (EXPT 2 (IL:\\\, (CONVERT SIZE)))) (IL:\\\, (CONVERT POSITION)))))) - -(IL-DEFCONV LOADBYTE (N POS SIZE) (IL:BQUOTE (LDB (BYTE (IL:\\\, (CONVERT SIZE)) (IL:\\\, (CONVERT POS))) (IL:\\\, (CONVERT N))))) - -(IL-DEFCONV DEPOSITBYTE (N POS SIZE VAL) (IL:BQUOTE (DPB (IL:\\\, (CONVERT VAL)) (BYTE (IL:\\\, (CONVERT SIZE)) (IL:\\\, (CONVERT POS))) (IL:\\\, (CONVERT N))))) - -(IL-COPYDEF BYTE) - -(IL-COPYDEF BYTE-SIZE BYTESIZE) - -(IL-COPYDEF BYTE-POSITION BYTEPOSITION) - -(IL-COPYDEF LDB) - -(IL-COPYDEF DPB) - -(IL-WARNINGFORM IL:ROT) - - - -(IL:* IL:|;;| " *** section 7.4 (floating point)") - - - - -(IL:* IL:\| "chapter 8") - - - - -(IL:* IL:|;;| " **** Record stuff in IL-RECORD.lisp *** Changetran...") - - -(IL-DEFCONV |push| (PLACE VALUE) (IL:BQUOTE (PUSH (IL:\\\, (CONVERT VALUE)) (IL:\\\, (CONVERT PLACE))))) - -(IL-DEFCONV |add| (PLACE &OPTIONAL INCREMENT &REST MORE-INCREMENTS) (COND (MORE-INCREMENTS (IL:BQUOTE (INCF (IL:\\\, (CONVERT PLACE)) (+ (IL:\\\, (CONVERT INCREMENT)) (IL:\\\,@ (MAPCONVERT MORE-INCREMENTS)))))) (INCREMENT (IL:BQUOTE (INCF (IL:\\\, (CONVERT PLACE)) (IL:\\\, (CONVERT INCREMENT))))) (T (CONVERT PLACE)))) - -(IL-DEFCONV |change| (PLACE FORM) (COND ((OR (ATOM PLACE) (AND (= (LENGTH PLACE) 2) (ATOM (SECOND PLACE)))) (IL:BQUOTE (SETF (IL:\\\, (CONVERT PLACE)) (IL:\\\, (CONVERT (IL:SUBPAIR (QUOTE IL:DATUM) PLACE FORM)))))) ((= (LENGTH PLACE) 2) (LET ((NEW-PLACE (LIST (FIRST PLACE) (QUOTE $PLACE-ARG$)))) (IL:BQUOTE (LET (($PLACE-ARG$ (IL:\\\, (SECOND PLACE)))) (SETF (IL:\\\, (CONVERT NEW-PLACE)) (IL:\\\, (CONVERT (IL:SUBPAIR (QUOTE IL:DATUM) NEW-PLACE FORM)))))))) (T (IL:BQUOTE (SETF (IL:\\\, (CONVERT PLACE)) (IL:\\\, (CONVERT (IL:SUBPAIR (QUOTE IL:DATUM) PLACE FORM)))))))) - -(IL-DEFCONV |pushnew| (PLACE THING) (IL:BQUOTE (PUSHNEW (IL:\\\, (CONVERT THING)) (IL:\\\, (CONVERT PLACE)) :TEST (QUOTE EQ)))) - -(IL-DEFCONV |pushlist| (PLACE &REST LISTS) (LET ((NEWPLACE (CONVERT PLACE))) (IL:BQUOTE (SETF (IL:\\\, NEWPLACE) (APPEND (IL:\\\,@ (MAPCONVERT LISTS)) (IL:\\\, NEWPLACE)))))) - -(IL-DEFCONV |swap| (PLACE1 PLACE2) (IL:BQUOTE (ROTATEF (IL:\\\, (CONVERT PLACE1)) (IL:\\\, (CONVERT PLACE2))))) - -(IL-COPYCONV |push| PUSH) - -(IL-COPYCONV |add| ADD) - -(IL-COPYCONV |change| CHANGE) - -(IL-COPYCONV |pushnew| PUSHNEW) - -(IL-COPYCONV |pushlist| PUSHLIST) - -(IL-COPYCONV |swap| SWAP) - -(IL-COPYDEF POP) - -(IL-COPYDEF POP |pop|) - - - -(IL:* IL:\| "chapter 9") - - - - -(IL:* IL:\; "**** 9.1") - - -(IL-COPYDEF EQ) - -(IL-COPYDEF NULL) - -(IL-COPYDEF NOT) - -(IL-COPYDEF EQUAL) - -(IL-COPYDEF AND) - -(IL-COPYDEF OR) - -(IL-DEFCONV NEQ (X Y) (IL:BQUOTE (NOT (EQ (IL:\\\, (CONVERT X)) (IL:\\\, (CONVERT Y)))))) - - - -(IL:* IL:\; "EQP is in chapter 7") - - - - -(IL:* IL:\; "***** EQUALALL") - - -(IL-DEFCONV COND (&REST CLAUSES) (IL:BQUOTE (COND (IL:\\\,@ (MAPCAR (FUNCTION (LAMBDA (CLAUSE) (MAPCONVERT CLAUSE))) CLAUSES))))) - - - -(IL:* IL:|;;| " (convert '(il:cond ((il:geq 3 2) (il:times 2 3))))") - - -(IL-DEFCONV |if| (&REST ARGS &AUX (FORM (LIST (QUOTE COND)))) (IL:* IL:|;;| "don't use '(cond) because nreverse will smash it") (DO ((CLAUSE (LIST (CONVERT (POP ARGS)))) ARG) ((ENDP ARGS) (WHEN CLAUSE (PUSH (NREVERSE CLAUSE) FORM))) (CASE (SETQ ARG (POP ARGS)) ((IL:|then| IL:THEN)) ((IL:ELSE IL:|else|) (PUSH (NREVERSE CLAUSE) FORM) (SETQ CLAUSE (LIST (QUOTE T)))) (IL:* IL:|;;| "don't use '(t) because nreverse will smash it") ((IL:ELSEIF IL:|elseif|) (PUSH (NREVERSE CLAUSE) FORM) (SETQ CLAUSE (LIST (CONVERT (POP ARGS))))) (OTHERWISE (PUSH (CONVERT ARG) CLAUSE)))) (NREVERSE FORM)) - -(IL-COPYCONV |if| IF) - - - -(IL:* IL:|;;| -" -(convert '(il:|if| (il:geq a b) il:|then| (foo) - il:|elseif| (il:atom (il:plus 2 3)) il:|then| (bar) - il:|else| (baz))) -") - - -(IL-DEFCONV SELECTQ (X &REST CLAUSES) (IL:BQUOTE (CASE (IL:\\\, (CONVERT X)) (IL:\\\,@ (MAPCAR (FUNCTION (LAMBDA (CLAUSE) (IL:BQUOTE ((IL:\\\, (QUOTE-TREE (FIRST CLAUSE))) (IL:\\\,@ (MAPCONVERT (REST CLAUSE))))))) (BUTLAST CLAUSES))) (OTHERWISE (IL:\\\,@ (MAPCONVERT (LAST CLAUSES))))))) - -(IL-DEFCONV SELECTC (X &REST CLAUSES) (LET* ((DATUM (IF (SYMBOLP X) (CONVERT X) (GENTEMP))) (MAINBODY (IL:BQUOTE (COND (IL:\\\,@ (MAP (QUOTE LIST) (FUNCTION (LAMBDA (CLAUSE) (IL:BQUOTE ((EQL (IL:\\\, DATUM) (IL:\\\, (CONVERT (FIRST CLAUSE)))) (IL:\\\,@ (MAPCONVERT (REST CLAUSE))))))) (BUTLAST CLAUSES))) (T (IL:\\\,@ (MAPCONVERT (LAST CLAUSES)))))))) (IF (SYMBOLP X) MAINBODY (IL:BQUOTE (LET (((IL:\\\, DATUM) (IL:\\\, (CONVERT X)))) (IL:\\\, MAINBODY)))))) - -(IL-DEFCONV CASE (X &REST CLAUSES) (IL:BQUOTE (CASE (IL:\\\, (CONVERT X)) (IL:\\\,@ (MAPCAR (FUNCTION (LAMBDA (CLAUSE) (IL:BQUOTE ((IL:\\\, (QUOTE-TREE (FIRST CLAUSE))) (IL:\\\,@ (MAPCONVERT (REST CLAUSE))))))) CLAUSES))))) - - - -(IL:* IL:|;;| " -(convert '(il:selectq (il:plus 2 3) (a (il:times a b)) (il:plus c d))) -") - - - - -(IL:* IL:\; "***** SELECTC") - - -(IL-COPYDEF PROG1) - -(IL-COPYDEF PROG2) - -(IL-COPYDEF PROGN) - -(IL-COPYDEF RETURN) - -(IL-COPYDEF RETURN-FROM RETFROM) - - - -(IL:* IL:|;;| -"If we were really clever we could keep track of when we were inside a PROG. Then we could treat (top-level) symbols as prog labels and not put them in the IL package. In that case we would want GO to generate `(go ,tag) instead of `(go ,^tag)." -) - - -(IL-DEFCONV GO (TAG) (IL:BQUOTE (GO (IL:\\\, (CONVERT TAG))))) - -(IL-DEFCONV PROG (VARLST &REST FORMS) (DECLARE (SPECIAL *LOCALS*)) (MULTIPLE-VALUE-BIND (NEW-VARLST VARNAMES) (EXPAND-VARLIST VARLST) (IL:BQUOTE (PROG (IL:\\\, NEW-VARLST) (IL:\\\,@ (LET ((*LOCALS* (APPEND VARNAMES *LOCALS*))) (MAPCONVERT FORMS))))))) - -(IL-DEFCONV LET (VARLST &REST FORMS) (DECLARE (SPECIAL *LOCALS*)) (MULTIPLE-VALUE-BIND (NEW-VARLST VARNAMES) (EXPAND-VARLIST VARLST) (IL:BQUOTE (LET (IL:\\\, NEW-VARLST) (IL:\\\,@ (LET ((*LOCALS* (APPEND VARNAMES *LOCALS*))) (MAPCONVERT FORMS))))))) - -(IL-DEFCONV LET* (VARLST &REST FORMS) (DECLARE (SPECIAL *LOCALS*)) (MULTIPLE-VALUE-BIND (NEW-VARLST VARNAMES) (EXPAND-VARLIST VARLST :SEQUENTIAL T) (IL:BQUOTE (LET* (IL:\\\, NEW-VARLST) (IL:\\\,@ (LET ((*LOCALS* (APPEND VARNAMES *LOCALS*))) (MAPCONVERT FORMS))))))) - -(IL-DEFCONV PROG* (VARLST &REST FORMS) (DECLARE (SPECIAL *LOCALS*)) (MULTIPLE-VALUE-BIND (NEW-VARLST VARNAMES) (EXPAND-VARLIST VARLST :SEQUENTIAL T) (IL:BQUOTE (PROG* (IL:\\\, NEW-VARLST) (IL:\\\,@ (LET ((*LOCALS* (APPEND VARNAMES *LOCALS*))) (MAPCONVERT FORMS))))))) - -(DEFUN CONVERT-DO (BINDINGS END-CLAUSES &REST BODY) (DECLARE (SPECIAL *LOCALS*)) (MULTIPLE-VALUE-BIND (NEW-VARLST VARNAMES) (EXPAND-VARLIST BINDINGS) (LET ((*LOCALS* (APPEND VARNAMES *LOCALS*))) (IL:BQUOTE (DO (IL:\\\, NEW-VARLST) (IL:\\\,@ (MAPCONVERT END-CLAUSES)) (IL:\\\,@ (MAPCONVERT BODY))))))) - -(DEFUN CONVERT-DO* (BINDINGS END-CLAUSES &REST BODY) (DECLARE (SPECIAL *LOCALS*)) (MULTIPLE-VALUE-BIND (NEW-VARLST VARNAMES) (EXPAND-VARLIST BINDINGS) (LET ((*LOCALS* (APPEND VARNAMES *LOCALS*))) (IL:BQUOTE (DO* (IL:\\\, NEW-VARLST) (IL:\\\,@ (MAPCONVERT END-CLAUSES)) (IL:\\\,@ (MAPCONVERT BODY))))))) - -(IL:* IL:|;;| "One case where il-defconv won't do what we need...") - -(SETF (GET (QUOTE DO) (QUOTE CONVERT-FORM)) (QUOTE CONVERT-DO) (GET (QUOTE DO*) (QUOTE CONVERT-FORM)) (QUOTE CONVERT-DO*)) - - - -(IL:* IL:|;;| "I.S. stuff - entry is coded into CONVERT") - - -(DEFPARAMETER *ITERATION-CONVERSION-TABLE* (QUOTE ((IL:|for| ((:EXPR-OR-ASSIGNMENT ((IL:|in| :EXPR ((IL:|by| FILTER-LIST-BY) (T . T))) (IL:|on| :EXPR ((IL:|by| FILTER-LIST-BY) (T . T))) (IL:|from| :EXPR ((IL:|to| :EXPR ((IL:|by| :EXPR T) (T . T))) (T . T))) (IL:|to| :EXPR ((IL:|by| :EXPR T) (T . T)) (T . T)) (IL:|by| (THEN) :EXPR T) (IL:|instring| FILTER-INSTRING))))) (IL:|as| ((:EXPR-OR-ASSIGNMENT ((IL:|in| :EXPR ((IL:|by| FILTER-LIST-BY) (T . T))) (IL:|on| :EXPR ((IL:|by| FILTER-LIST-BY) (T . T))) (IL:|from| :EXPR ((IL:|to| :EXPR ((IL:|by| :EXPR T) (T . T))) (T . T))) (IL:|to| :EXPR ((IL:|by| :EXPR T) (T . T)) (T . T)) (IL:|by| :EXPR T) (IL:|instring| FILTER-INSTRING))))) (IL:|to| (REPEAT) :EXPR ((IL:|by| :EXPR T) (T . T))) (IL:|bind| FILTER-BIND) (IL:|collect| FILTER-DO) (IL:|repeatwhile| FILTER-REPEATWHILE/UNTIL) (IL:|repeatuntil| FILTER-REPEATWHILE/UNTIL) (IL:|while| :EXPR T) (IL:|until| :EXPR T) (IL:|when| :EXPR T) (IL:|unless| :EXPR T) (IL:|first| (INITIALLY) FILTER-DO) (IL:|finally| FILTER-DO) (IL:|join| (NCONC) FILTER-DO) (IL:|sum| :EXPR T) (IL:|count| :EXPR T) (IL:|always| :EXPR T) (IL:|never| :EXPR T) (IL:|thereis| :EXPR T) (IL:|largest| (MAXIMIZE) :EXPR T) (IL:|smallest| (MINIMIZE) :EXPR T) (IL:|do| FILTER-DO)))) - -(DEFUN CONVERT-ITERATION-STATEMENT (INITIAL-OPER REST-OF-FORM &AUX (REST REST-OF-FORM) (INITIAL INITIAL-OPER) SO-FAR) (IL:* IL:|;;| "Yeah, this is sort of ugly. So is CLISPIFY.") (LABELS ((LOSE (FMT-STRING &REST FMT-ARGS) (WARN "Couldn't translate I.S. form because ~?" FMT-STRING FMT-ARGS) (LET ((FORM (CONS INITIAL-OPER REST-OF-FORM))) (RETURN-FROM CONVERT-ITERATION-STATEMENT FORM))) (NEXT-STATE (KEY CURRENT-LEVEL) (LET* (CLISPWORD (KEY-IS-IS-OPER-P (AND (SYMBOLP KEY) (EQ (CAR (SETQ CLISPWORD (GET KEY (QUOTE IL:CLISPWORD)))) (QUOTE IL:FORWORD)))) (ASSOC-KEY (IF KEY-IS-IS-OPER-P (CDR CLISPWORD) KEY)) (FOUND (OR (ASSOC ASSOC-KEY CURRENT-LEVEL :TEST (FUNCTION (LAMBDA (A B) (IF (AND (SYMBOLP A) (SYMBOLP B)) (STRING-EQUAL A B) (EQ A B))))) (AND (NOT KEY-IS-IS-OPER-P) (OR (ASSOC (QUOTE :EXPR) CURRENT-LEVEL) (ASSOC (QUOTE :EXPR-OR-ASSIGNMENT) CURRENT-LEVEL))) (ASSOC (QUOTE T) CURRENT-LEVEL))) (CURRENT-ENTRY (CDR FOUND))) (IF CURRENT-ENTRY (COND ((AND (EQ (CAR FOUND) :EXPR-OR-ASSIGNMENT) (CONSP KEY) (EQ (SECOND KEY) (QUOTE IL:_))) (SETQ SO-FAR (LIST* (CONVERT (THIRD KEY)) (MAKE-FAKE-SYMBOL "=") (CONVERT (FIRST KEY)) SO-FAR))) ((MEMBER (CAR FOUND) (QUOTE (T :EXPR :EXPR-OR-ASSIGNMENT))) (PUSH (IF (EQ CURRENT-ENTRY (QUOTE T)) NIL (CONVERT KEY)) SO-FAR)) (T (PUSH (MAKE-FAKE-SYMBOL (STRING-UPCASE (STRING KEY))) SO-FAR))) (LOSE "Key ~a not expected" KEY)) (LOOP (COND ((EQ CURRENT-ENTRY (QUOTE T)) (IL:* IL:\; "(mumble . T)") (PUSH KEY REST) (IL:* IL:\; "means punt this token.") (POP SO-FAR) (RETURN-FROM NEXT-STATE)) ((EQ (CAR CURRENT-ENTRY) (QUOTE T)) (RETURN-FROM NEXT-STATE)) ((CONSP (CAR CURRENT-ENTRY)) (IF (CONSP (CAAR CURRENT-ENTRY)) (IL:* IL:|;;| "Assoc list...") (LET ((NEXT-KEY (POP REST))) (NEXT-STATE NEXT-KEY (CAR CURRENT-ENTRY)) (RETURN-FROM NEXT-STATE)) (IL:* IL:|;;| "substitution...") (SETF (CAR SO-FAR) (MAKE-FAKE-SYMBOL (CAAR CURRENT-ENTRY))))) ((MEMBER (CAR CURRENT-ENTRY) (QUOTE (:EXPR-OR-ASSIGNMENT :EXPR))) (IF (AND (SYMBOLP (CAR REST)) (EQ (CAR (GET (CAR REST) (QUOTE IL:CLISPWORD))) (QUOTE IL:FORWORD))) (LOSE "~a where expression expected" (CAR REST)) (PUSH (CONVERT (COPY-TREE (POP REST))) SO-FAR))) ((NULL (CDR CURRENT-ENTRY)) (MULTIPLE-VALUE-SETQ (SO-FAR REST) (FUNCALL (CAR CURRENT-ENTRY) SO-FAR REST (FUNCTION LOSE))) (RETURN-FROM NEXT-STATE)) (T (IF (EQ (CAR CURRENT-ENTRY) (CAR REST)) (PUSH (CONVERT (COPY-TREE (POP REST))) SO-FAR) (LOSE "Expected ~a" (CAR CURRENT-ENTRY))))) (POP CURRENT-ENTRY))))) (LOOP (NEXT-STATE INITIAL *ITERATION-CONVERSION-TABLE*) (WHEN (NULL REST) (RETURN (CONS (MAKE-FAKE-SYMBOL (QUOTE LOOP)) (NREVERSE SO-FAR)))) (SETQ INITIAL (POP REST))))) - -(DEFUN FILTER-NUMERIC-BY (SO-FAR REST)) - -(DEFUN FILTER-LIST-BY (SO-FAR REST) (LET ((STEP-FORM (POP REST)) (VAR (FOURTH SO-FAR)) (OPERAND (SECOND SO-FAR))) (IF (AND (CONSP STEP-FORM) (= (LENGTH STEP-FORM) 2) (OR (EQ (SECOND STEP-FORM) VAR) (IL:* IL:\; "") (EQ (SECOND STEP-FORM) OPERAND))) (PUSH (IL:BQUOTE (QUOTE (IL:\\\, (FIRST STEP-FORM)))) SO-FAR) (LET ((LAMBDA-VAR (MAKE-FAKE-SYMBOL ".X."))) (PUSH (IL:BQUOTE (FUNCTION (LAMBDA ((IL:\\\, LAMBDA-VAR)) (IL:\\\, (SUBLIS (LIST (CONS VAR LAMBDA-VAR) (CONS OPERAND LAMBDA-VAR)) STEP-FORM))))) SO-FAR)))) (VALUES SO-FAR REST)) - -(DEFUN FILTER-BIND (SO-FAR REST LOSE-CONTINUATION &AUX TOKEN (FIRST T)) (IL:* IL:|;;| "Change BIND to WITH.") (SETQ SO-FAR (CONS (MAKE-FAKE-SYMBOL "WITH") (CDR SO-FAR))) (LOOP (WHEN (NULL REST) (RETURN SO-FAR)) (COND ((EQ (SETQ TOKEN (CAR REST)) (QUOTE IL:OLD)) (FUNCALL LOSE-CONTINUATION "OLD not convertable")) ((CONSP TOKEN) (UNLESS FIRST (PUSH (MAKE-FAKE-SYMBOL "AND") SO-FAR)) (POP REST) (PUSH (CONVERT (CAR TOKEN)) SO-FAR) (WHEN (EQ (SECOND TOKEN) (QUOTE IL:_)) (SETF SO-FAR (LIST* (CONVERT (THIRD TOKEN)) (MAKE-FAKE-SYMBOL "=") SO-FAR)))) ((NOT (SYMBOLP TOKEN)) (FUNCALL LOSE-CONTINUATION "Unknown BIND token ~a" TOKEN)) ((EQ (CAR (GET TOKEN (QUOTE IL:CLISPWORD))) (QUOTE IL:FORWORD)) (RETURN (VALUES SO-FAR REST))) (T (UNLESS FIRST (PUSH (MAKE-FAKE-SYMBOL "AND") SO-FAR)) (PUSH (CONVERT TOKEN) SO-FAR) (POP REST) (WHEN (EQ (CAR REST) (QUOTE IL:_)) (SETF SO-FAR (LIST* (CONVERT (CADR REST)) (MAKE-FAKE-SYMBOL "=") SO-FAR) REST (CDDR REST))))) (SETQ FIRST NIL))) - -(DEFUN FILTER-DO (SO-FAR REST IGNORE &AUX TEM) (DECLARE (IGNORE IGNORE)) (LOOP (WHEN (OR (NULL REST) (AND (SYMBOLP (SETQ TEM (CAR REST))) (EQ (CAR (GET TEM (QUOTE IL:CLISPWORD))) (QUOTE IL:FORWORD)))) (RETURN (VALUES SO-FAR REST))) (PUSH (CONVERT (COPY-TREE TEM)) SO-FAR) (POP REST))) - -(DEFUN FILTER-INSTRING (SO-FAR REST IGNORE) (DECLARE (IGNORE IGNORE)) (VALUES (REVAPPEND (IL:BQUOTE ((IL:\\\, (MAKE-FAKE-SYMBOL "BEING")) (IL:\\\, (MAKE-FAKE-SYMBOL "THE")) (IL:\\\, (MAKE-FAKE-SYMBOL "CHARACTERS")) (IL:\\\, (MAKE-FAKE-SYMBOL "OF")) (IL:\\\, (POP REST)))) (CDR SO-FAR)) REST)) - -(DEFUN FILTER-REPEATWHILE/UNTIL (SO-FAR REST IGNORE) (DECLARE (IGNORE IGNORE)) (LET* ((KEY (STRING (FAKE-SYMBOL-NAME (POP SO-FAR)))) (VALUE (COND ((STRING= KEY "REPEATWHILE") (IL:BQUOTE (DO (UNLESS (IL:\\\, (CONVERT (POP REST))) ((IL:\\\, (MAKE-FAKE-SYMBOL "LOOP-FINISH"))))))) ((STRING= KEY "REPEATUNTIL") (IL:BQUOTE (DO (WHEN (IL:\\\, (CONVERT (POP REST))) ((IL:\\\, (MAKE-FAKE-SYMBOL "LOOP-FINISH"))))))) (T (IL:BQUOTE (DO (IL:\\\, (CONVERT (POP REST))))))))) (UNLESS (OR (NULL REST) (EQ (CAR REST) (QUOTE IL:|finally|))) (LET ((*CURRENT-EXPRESSION* (SECOND VALUE))) (WARN "I.S. oper repeatuntil may need to be moved."))) (VALUES (REVAPPEND VALUE SO-FAR) REST))) - - - -(IL:* IL:\| "chapter 10") - - - - -(IL:* IL:|;;| -"These variables can be set to T to make lambdas come out with &REST IGNORE (equiv.) and &OPTIONAL in their parm. lists." -) - - -(DEFVAR *ADD-REST-ARG* NIL) - -(DEFVAR *PARAMETERS-ALWAYS-OPTIONAL* NIL) - -(DEFUN DEFINEQ1 (DEFINEQ-FORM &AUX (NAME (EXTERN (SYMBOL-NAME (FIRST DEFINEQ-FORM)) *IL-PACKAGE*)) (DEFN (SECOND DEFINEQ-FORM)) (FORMS (CDDR DEFINEQ-FORM)) VARLST) (DECLARE (SPECIAL *LOCALS* *CURRENT-FUNCTION-CALLS* *FUNCTION-CALLS*)) (WHEN FORMS (SETQ DEFN (IL:BQUOTE (LAMBDA (IL:\\\, DEFN) (IL:\\\,@ FORMS))))) (SETQ VARLST (SECOND DEFN)) (SETQ *CURRENT-FUNCTION-CALLS* (LIST NAME)) (PROG1 (CASE (FIRST DEFN) (LAMBDA (IF (LISTP VARLST) (MULTIPLE-VALUE-BIND (NEW-VARLST VARNAMES) (EXPAND-VARLIST VARLST) (LET ((*LOCALS* (APPEND VARNAMES *LOCALS*))) (WHEN NEW-VARLST (PUSH (QUOTE &OPTIONAL) NEW-VARLST)) (IL:BQUOTE (DEFUN (IL:\\\, NAME) ((IL:\\\,@ NEW-VARLST) (IL:\\\,@ (AND *ADD-REST-ARG* (QUOTE (&REST $EXTRA-ARGS$))))) (IL:\\\,@ (AND *ADD-REST-ARG* (QUOTE ((DECLARE (IGNORE $EXTRA-ARGS$)))))) (IL:\\\,@ (MAPCONVERT (CDDR DEFN))))))) (LET ((*LOCALS* (ACONS VARLST :LOCAL *LOCALS*))) (IL:BQUOTE (DEFUN (IL:\\\, NAME) (&REST $ARGS$ &AUX ((IL:\\\, VARLST) (LENGTH $ARGS$))) (IL:\\\,@ (MAPCONVERT (CDDR DEFN)))))))) (NLAMBDA (IF (LISTP VARLST) (MULTIPLE-VALUE-BIND (NEW-VARLST VARNAMES) (EXPAND-VARLIST VARLST :TYPE :MACRO-ARG) (LET ((*LOCALS* (APPEND VARNAMES *LOCALS*))) (WHEN NEW-VARLST (PUSH (QUOTE &OPTIONAL) NEW-VARLST)) (IL:BQUOTE (DEFMACRO (IL:\\\, NAME) ((IL:\\\,@ NEW-VARLST) &REST $EXTRA-ARGS$) (DECLARE (IGNORE $EXTRA-ARGS$)) (IL:\\\, (MAKE-BQ (PROGN-IF-NEEDED (MAPCONVERT (CDDR DEFN))))))))) (LET ((*LOCALS* (ACONS VARLST :MACRO-ARG *LOCALS*))) (IL:BQUOTE (DEFMACRO (IL:\\\, NAME) (&REST (IL:\\\, VARLST)) (IL:\\\, (MAKE-BQ (PROGN-IF-NEEDED (MAPCONVERT (CDDR DEFN)))))))))) (T (ERROR "Unknown DEFINEQ type ~a" (FIRST DEFN)))) (PUSH (REVERSE *CURRENT-FUNCTION-CALLS*) *FUNCTION-CALLS*) (SETQ *CURRENT-FUNCTION-CALLS* NIL))) - -(IL-DEFCONV ARG (VAR M) (DECLARE (IGNORE VAR)) (IL:BQUOTE (NTH (IL:\\\, (SIMP-1- (CONVERT M))) $ARGS$))) - -(IL-DEFCONV SETARG (VAR M X) (DECLARE (IGNORE VAR)) (IL:BQUOTE (SETF (NTH (1- (IL:\\\, (CONVERT M))) $ARGS$) (IL:\\\, (CONVERT X))))) - -(IL-DEFCONV DEFINEQ (&REST ARGS) (PROGN-IF-NEEDED (MAPCAR (QUOTE DEFINEQ1) ARGS))) - - - -(IL:* IL:|;;| -"(convert '(defineq (foo (lambda (a b) (plus a b c))))) (convert '(defineq (foo (nlambda (a b) (plus a b c))))) (convert '(defineq (foo (lambda x (plus (arg x 1) (arg x 2)))))) (convert '(defineq (foo (nlambda x (mapcar 'foo x))))) ***** FNTYP, EXPRP, CCODEP, ARGTYPE, NARGS, ARGLIST, SMARTARGLIST ***** DEFINE ***** UNSAVE.TO.MODIFY.FNS, DFNFLG" -) - - -(IL-DEFCONV PUTD (FN &OPTIONAL DEF &REST EXTRA) (DECLARE (IGNORE EXTRA)) (IL:BQUOTE (IF (NULL (IL:\\\, (CONVERT DEF))) (MAKUNBOUND (IL:\\\, (CONVERT FN))) (SETF (SYMBOL-FUNCTION (IL:\\\, (CONVERT FN))) (IL:\\\, (CONVERT DEF)))))) - -(IL-DEFCONV CCODEP (SYM) (LET ((S (MAKE-FAKE-SYMBOL ".X."))) (IL:BQUOTE (LET (((IL:\\\, S) (IL:\\\, (CONVERT SYM)))) "CCODEP" (AND (FBOUNDP (IL:\\\, S)) (COMPILED-FUNCTION-P (SYMBOL-FUNCTION (IL:\\\, S)))))))) - -(IL-COPYDEF SYMBOL-FUNCTION GETD) - -(IL-COPYDEF APPLY) - -(IL-COPYDEF FUNCALL APPLY*) - -(IL-DEFCONV KWOTE (FORM) (IF (IL:CONSTANTEXPRESSIONP FORM) (CONVERT FORM) (IL:BQUOTE (LIST (QUOTE QUOTE) (IL:\\\, (CONVERT FORM)))))) - - - -(IL:* IL:|;;| -"(il-defconv QUOTE (&rest args) `(quote ,@args)) ***** NLAMBDA.ARGS,^ EVALA,^ DEFEVAL,^ EVALHOOK") - - - - -(IL:* IL:|;;| -" -; is this right? -(il-defconv RPTQ (n &rest forms) - `(do ((IL::RPTN ,^(eval n) (1- IL::RPTN)) - val) - ((<= IL::RPTN 0) val) - (declare (special IL::RPTN)) - (setq val (progn ,@^@forms)))) -") - - - - -(IL:* IL:\; "***** RPTQ, FRPTQ") - - -(IL-DEFCONV MOVD (FROM TO &OPTIONAL COPYFLG DONTCOPY) (SETQ *CURRENT-EXPRESSION* (IL:BQUOTE (SETF (SYMBOL-FUNCTION (IL:\\\, (CONVERT TO))) (SYMBOL-FUNCTION (IL:\\\, (CONVERT FROM)))))) (WHEN (OR COPYFLG DONTCOPY) (WARN "MOVD can't translate argument copyflg or dontcopy")) *CURRENT-EXPRESSION*) - -(IL-DEFCONV MAP (MAPX MAPFN1 &OPTIONAL MAPFN2) (WHEN MAPFN2 (ERROR "MAP does not yet support MAPFN2 arg")) (IL:BQUOTE (MAPL (IL:\\\, (CONVERT MAPFN1)) (IL:\\\, (CONVERT MAPX))))) - -(IL-DEFCONV MAPC (MAPX MAPFN1 &OPTIONAL MAPFN2) (WHEN MAPFN2 (ERROR "MAPC does not yet support MAPFN2 arg")) (IL:BQUOTE (MAPC (IL:\\\, (CONVERT MAPFN1)) (IL:\\\, (CONVERT MAPX))))) - -(IL-DEFCONV MAPLIST (MAPX MAPFN1 &OPTIONAL MAPFN2) (WHEN MAPFN2 (ERROR "MAPLIST does not yet support MAPFN2 arg")) (IL:BQUOTE (MAPLIST (IL:\\\, (CONVERT MAPFN1)) (IL:\\\, (CONVERT MAPX))))) - -(IL-DEFCONV MAPCAR (MAPX MAPFN1 &OPTIONAL MAPFN2) (WHEN MAPFN2 (ERROR "MAPCAR does not yet support MAPFN2 arg")) (IL:BQUOTE (MAPCAR (IL:\\\, (CONVERT MAPFN1)) (IL:\\\, (CONVERT MAPX))))) - -(IL-DEFCONV MAPCON (MAPX MAPFN1 &OPTIONAL MAPFN2) (WHEN MAPFN2 (ERROR "MAPCON does not yet support MAPFN2 arg")) (IL:BQUOTE (MAPCON (IL:\\\, (CONVERT MAPFN1)) (IL:\\\, (CONVERT MAPX))))) - -(IL-DEFCONV MAPCONC (MAPX MAPFN1 &OPTIONAL MAPFN2) (WHEN MAPFN2 (ERROR "MAPCONC does not yet support MAPFN2 arg")) (IL:BQUOTE (MAPCAN (IL:\\\, (CONVERT MAPFN1)) (IL:\\\, (CONVERT MAPX))))) - -(IL-DEFCONV MAP2C (MAPX MAPY MAPFN1 &OPTIONAL MAPFN2) (WHEN MAPFN2 (ERROR "MAP2C does not yet support MAPFN2 arg")) (IL:BQUOTE (MAPC (IL:\\\, (CONVERT MAPFN1)) (IL:\\\, (CONVERT MAPX)) (IL:\\\, (CONVERT MAPY))))) - -(IL-DEFCONV MAP2CAR (MAPX MAPY MAPFN1 &OPTIONAL MAPFN2) (WHEN MAPFN2 (ERROR "MAP2CAR does not yet support MAPFN2 arg")) (IL:BQUOTE (MAPCAR (IL:\\\, (CONVERT MAPFN1)) (IL:\\\, (CONVERT MAPX)) (IL:\\\, (CONVERT MAPY))))) - -(IL-DEFCONV SUBSET (MAPX MAPFN1 &OPTIONAL MAPFN2) (WHEN MAPFN2 (ERROR "SUBSET does not yet support MAPFN2 arg")) (IL:BQUOTE (REMOVE-IF-NOT (IL:\\\, (CONVERT MAPFN1)) (IL:\\\, (CONVERT MAPX))))) - - - -(IL:* IL:\; "***** rest of chapter") - - -(IL-WARNINGFORM IL:MOVD?) - - - -(IL:* IL:\| "chapter 14") - - -(DEFVAR *WARN-ON-ERSETQ-NLSETQ* T "Warn on these for later rewrite.") - -(IL-DEFCONV SHOULDNT (MESS) (IL:BQUOTE (ERROR "Shouldn't happen: ~a" (IL:\\\, (CONVERT MESS))))) - -(IL-DEFCONV ERROR (&OPTIONAL MESS1 MESS2 NOBREAK) (IL:BQUOTE (ERROR "~a ~a" (IL:\\\, (CONVERT MESS1)) (IL:\\\, (CONVERT MESS2))))) - -(IL-DEFCONV NLSETQ (FORM) (LIST (MAKE-FAKE-SYMBOL "IGNORE-ERRORS") (CONVERT FORM))) - -(IL-DEFCONV ERSETQ (&REST FORMS) (LET ((CVAR (MAKE-FAKE-SYMBOL "C"))) (IL:BQUOTE ((IL:\\\, (MAKE-FAKE-SYMBOL "CONDITION-CASE")) (IL:\\\, (IF (NULL (CDR FORMS)) (CONVERT (FIRST FORMS)) (IL:BQUOTE (PROGN (IL:\\\,. (MAPCONVERT FORMS)))))) (ERROR ((IL:\\\, CVAR)) (PRINC (IL:\\\, CVAR)) (VALUES NIL (IL:\\\, CVAR))))))) - - - -(IL:* IL:\| "chapter 17") - - -(DEFVAR *EVAL-WHEN-STATE* (QUOTE (LOAD EVAL))) - -(IL-DEFCONV DECLARE\: (&REST ARGS) (DO ((FORMS NIL) (EVAL-WHEN-EVAL T) (EVAL-WHEN-COMPILE NIL) (EVAL-WHEN-LOAD T) (FIRST NIL) (TMPFORMS NIL) (FIRSTFORMS NIL) ARG) NIL (WHEN (AND TMPFORMS (OR (ENDP ARGS) (ATOM (FIRST ARGS)))) (LET* ((NEW-EVAL-WHEN-STATE (IL:BQUOTE ((IL:\\\,@ (IF EVAL-WHEN-EVAL (QUOTE (EVAL)))) (IL:\\\,@ (IF EVAL-WHEN-COMPILE (QUOTE (COMPILE)))) (IL:\\\,@ (IF EVAL-WHEN-LOAD (QUOTE (LOAD))))))) (OLD-EVAL-WHEN-STATE *EVAL-WHEN-STATE*) (*EVAL-WHEN-STATE* NEW-EVAL-WHEN-STATE)) (SETQ TMPFORMS (IL:BQUOTE ((IL:\\\, (IF (NULL (SET-DIFFERENCE NEW-EVAL-WHEN-STATE *EVAL-WHEN-STATE*)) (QUOTE PROGN) (QUOTE EVAL-WHEN))) (IL:\\\,@ (MAPCONVERT (REVERSE TMPFORMS))))))) (IF FIRST (PUSH TMPFORMS FIRSTFORMS) (PUSH TMPFORMS FORMS)) (SETQ TMPFORMS NIL)) (WHEN (ENDP ARGS) (RETURN (CONS (QUOTE PROGN) (APPEND (REVERSE FIRSTFORMS) (REVERSE FORMS))))) (SETQ ARG (POP ARGS)) (IF (ATOM ARG) (CASE ARG ((EVAL@LOAD DOEVAL@LOAD) (SETQ EVAL-WHEN-EVAL T)) (DONTEVAL@LOAD (SETQ EVAL-WHEN-EVAL NIL)) (EVAL@LOADWHEN (SETQ EVAL-WHEN-EVAL (EVAL (POP ARGS)))) ((EVAL@COMPILE DOEVAL@COMPILE) (SETQ EVAL-WHEN-COMPILE T)) (DONTEVAL@COMPILE (SETQ EVAL-WHEN-COMPILE NIL)) (EVAL@COMPILEWHEN (SETQ EVAL-WHEN-COMPILE (EVAL (POP ARGS)))) ((COPY DOCOPY) (SETQ EVAL-WHEN-LOAD T)) (DONTCOPY (SETQ EVAL-WHEN-LOAD NIL)) (COPYWHEN (SETQ EVAL-WHEN-LOAD (EVAL (POP ARGS)))) (FIRST (SETQ FIRST T)) (NOTFIRST (SETQ FIRST NIL)) (T (WARN "Unknown option ~a in DECLARE:" ARG))) (PUSH ARG TMPFORMS)))) - -(IL-DEFCONV PUTPROPS (ATM &REST VARS) (DECLARE (SPECIAL *LOCALS*)) (PROGN-IF-NEEDED (DO ((VARS VARS (REST (REST VARS))) (FORMS NIL)) ((ENDP VARS) (REVERSE FORMS)) (PUSH (CASE (FIRST VARS) ((MACRO DMACRO) (DEFINE-MACRO (EXTERN (SYMBOL-NAME ATM) *IL-PACKAGE*) (SECOND VARS))) (T (IL:BQUOTE (SETF (GET (IL:\\\, (CONVERT (IL:BQUOTE (QUOTE (IL:\\\, ATM))))) (IL:\\\, (CONVERT (IL:BQUOTE (QUOTE (IL:\\\, (FIRST VARS))))))) (IL:\\\, (CONVERT (IL:BQUOTE (QUOTE (IL:\\\, (SECOND VARS)))))))))) FORMS)))) - -(DEFUN DEFINE-MACRO (NAME DEFN) (COND ((EQ (CAR DEFN) (QUOTE =)) (IL:BQUOTE (SETF (SYMBOL-FUNCTION (QUOTE (IL:\\\, NAME))) (SYMBOL-FUNCTION (QUOTE (IL:\\\, (EXTERN (CDR DEFN) *IL-PACKAGE*))))))) ((MEMBER (FIRST DEFN) (QUOTE (LAMBDA OPENLAMBDA)) :TEST (FUNCTION EQ)) (DEFINE-SUBST-MACRO NAME (REST DEFN))) (T (DEFINE-SUBST-MACRO NAME DEFN)))) - -(DEFUN DEFINE-SUBST-MACRO (NAME DEFN &AUX VARNAMES FORMS ARGLIST) (SETQ VARNAMES (FIRST DEFN)) (SETQ ARGLIST VARNAMES) (SETQ FORMS (REST DEFN)) (WHEN (AND VARNAMES (ATOM VARNAMES)) (SETQ VARNAMES (LIST VARNAMES))) (LET ((*LOCALS* (APPEND (MAPCAR (FUNCTION (LAMBDA (NAME) (IL:BQUOTE ((IL:\\\, NAME) . :MACRO-ARG)))) (MAKE-TRUE-LIST VARNAMES)) *LOCALS*))) (COND ((AND ARGLIST (ATOM ARGLIST)) (IL:BQUOTE (DEFMACRO (IL:\\\, NAME) (&REST (IL:\\\, ARGLIST)) (IL:\\\, (MAKE-BQ (PROGN-IF-NEEDED (MAPCONVERT FORMS))))))) ((TRUE-LIST-P ARGLIST) (WHEN ARGLIST (PUSH (QUOTE &OPTIONAL) ARGLIST)) (IL:BQUOTE (DEFMACRO (IL:\\\, NAME) ((IL:\\\,@ ARGLIST) (IL:\\\,@ (AND *ADD-REST-ARG* (QUOTE (&REST $EXTRA-ARGS$))))) (IL:\\\,@ (AND *ADD-REST-ARG* (QUOTE ((DECLARE (IGNORE $EXTRA-ARGS$)))))) (IL:\\\, (MAKE-BQ (PROGN-IF-NEEDED (MAPCONVERT FORMS))))))) (T (IL:BQUOTE (DEFMACRO (IL:\\\, NAME) (IL:\\\, ARGLIST) (IL:\\\, (MAKE-BQ (PROGN-IF-NEEDED (MAPCONVERT FORMS)))))))))) - -(IL-DEFCONV QUOTE (ARG) (IL:BQUOTE (QUOTE (IL:\\\, (QUOTE-TREE ARG))))) - - - -(IL:* IL:|;;| "(il-defconv * (&rest args) `(il::* ,@args))") - - - - -(IL:* IL:|;;| "what are we supposed to do with (declare (specvars . t)) ?") - - -(DEFVAR *TYPE-CONVERSION-PLIST* (QUOTE (IL:SPECVARS SPECIAL IL:GLOBALVARS NIL))) - -(IL-DEFCONV DECLARE (&REST ARGS) (IL:BQUOTE (DECLARE (IL:\\\,@ (MAPCAN (FUNCTION (LAMBDA (ARG) (LET ((TYPE (GETF *TYPE-CONVERSION-PLIST* (FIRST ARG) :NOT-FOUND))) (WHEN (AND (EQ TYPE :NOT-FOUND) (STRING= (PACKAGE-NAME (SYMBOL-PACKAGE (FIRST ARG))) "INTERLISP")) (WARN "Unknown type in DECLARE ~s" (FIRST ARG)) (SETQ TYPE (FIRST ARG))) (AND TYPE (IL:BQUOTE (((IL:\\\, TYPE) (IL:\\\,@ (IF (CONSP (REST ARG)) (MAPCONVERT (REST ARG)) NIL))))))))) ARGS))))) - -(IL-DEFCONV FILEMAP (&REST ARGS) (DECLARE (IGNORE ARGS)) NIL) - -(IL-DEFCONV ADDTOVAR (VAR &REST ARGS) (IL:BQUOTE (IL:ADDTOVAR (IL:\\\, (CONVERT VAR)) (IL:\\\,@ (QUOTE-TREE ARGS))))) - -(IL-DEFCONV APPENDTOVAR (VAR &REST ARGS) (IL:BQUOTE (IL:APPENDTOVAR (IL:\\\, (CONVERT VAR)) (IL:\\\,@ (QUOTE-TREE ARGS))))) - -(IL-DEFCONV FUNCTION (FN &OPTIONAL ENV) (IL:* IL:|;;| " This should barf on NLAMBDA forms!") (WHEN ENV (WARN "FUNCTION does not support environment")) (COND ((NOT (SYMBOLP FN)) (IL:BQUOTE (FUNCTION (IL:\\\, (CONVERT FN))))) ((GET FN (QUOTE CONVERT-FORM)) (IL:* IL:|;;| "Fake up a way to make it work...") (LET* ((NEW-AL (MAPCAR (FUNCTION (LAMBDA (X) (GENTEMP "G"))) (IL:ARGLIST FN))) (CONVERSION (CONVERT (CONS FN NEW-AL)))) (IF (EQUAL (CDR CONVERSION) NEW-AL) (IL:* IL:|;;| "If it turns into a different fcn with the same args, do it the easy way...") (IL:BQUOTE (FUNCTION (IL:\\\, (CAR CONVERSION)))) (IL:* IL:|;;| "Whole different expression; use full-dress adaptor") (IL:BQUOTE (FUNCTION (LAMBDA (&OPTIONAL (IL:\\\,. NEW-AL)) (IL:\\\, (LIST (QUOTE IL:*) (QUOTE IL:|;;|) (STRING FN))) (IL:\\\, CONVERSION))))))) (T (IL:BQUOTE (FUNCTION (IL:\\\, (NOTE-EXPORTED-SYMBOL FN))))))) - -(IL-DEFCONV LAMBDA (VARLST &REST FORMS) (IF (LISTP VARLST) (MULTIPLE-VALUE-BIND (NEW-VARLST VARNAMES) (EXPAND-VARLIST VARLST) (LET ((*LOCALS* (APPEND VARNAMES *LOCALS*))) (IL:BQUOTE (LAMBDA (&OPTIONAL (IL:\\\,@ NEW-VARLST)) (IL:\\\,@ (MAPCONVERT FORMS)))))) (LET ((*LOCALS* (ACONS VARLST :LOCAL *LOCALS*))) (IL:BQUOTE (LAMBDA (&REST $ARGS$ &AUX ((IL:\\\, VARLST) (LENGTH $ARGS$))) (IL:\\\,@ (MAPCONVERT FORMS))))))) - -(IL-DEFCONV DEFINE-FILE-INFO (&REST IGNORE) NIL) - -(IL-DEFCONV PRETTYCOMPRINT (&REST IGNORE) NIL) - -(SETF (GET (QUOTE FILECREATED) (QUOTE EARLY)) T) - -(IL-DEFCONV FILECREATED (&REST JUNK) (CONVERT (LIST* (QUOTE *) (QUOTE |;;;|) "File Created " JUNK))) - - - -(IL:* IL:\| "chapter 18") - - -(IL-DEFCONV CONSTANT (X) (LIST (QUOTE QUOTE) (MAKE-SHARP-COMMA :CONTENTS (CONVERT X)))) - - - -(IL:* IL:\| "chapter 23") - - -(IL-COPYDEF PROCESSP) - -(IL-DEFCONV CREATE.MONITORLOCK (NAME &OPTIONAL EXCLUSIVE) (SETQ *CURRENT-EXPRESSION* (IL:BQUOTE ((IL:\\\, (MAKE-FAKE-SYMBOL "UE:MAKE-PROCESS-LOCK")) :NAME (IL:\\\, (CONVERT NAME))))) (WHEN EXCLUSIVE (WARN "CREATE.MONITORLOCK cannot handle arg EXCLUSIVE")) *CURRENT-EXPRESSION*) - -(IL-DEFCONV OBTAIN.MONITORLOCK (LOCK &OPTIONAL DONTWAIT UNWINDSAVE) (LET* ((PROCESS-LOCK-LOCKER (MAKE-FAKE-SYMBOL "UE:PROCESS-LOCK-LOCKER")) (CURRENT-PROCESS (MAKE-FAKE-SYMBOL "UE:CURRENT-PROCESS")) (PROCESS-LOCK (MAKE-FAKE-SYMBOL "UE:PROCESS-LOCK")) (WITHOUT-SCHEDULING (MAKE-FAKE-SYMBOL "UE:WITHOUT-SCHEDULING")) (LVAR (MAKE-FAKE-SYMBOL (QUOTE ..L..))) (OVAR (MAKE-FAKE-SYMBOL (QUOTE ..OWNER..))) (BODY (IL:BQUOTE (LET* (((IL:\\\, LVAR) (IL:\\\, (CONVERT LOCK))) ((IL:\\\, OVAR) ((IL:\\\, PROCESS-LOCK-LOCKER) (IL:\\\, LVAR)))) "OBTAIN.MONITORLOCK" (COND ((EQ (IL:\\\, OVAR) ((IL:\\\, CURRENT-PROCESS))) T) ((NULL (IL:\\\, OVAR)) (IF (IL:\\\, (CONVERT DONTWAIT)) ((IL:\\\, WITHOUT-SCHEDULING) (WHEN (NULL ((IL:\\\, PROCESS-LOCK-LOCKER) (IL:\\\, LVAR))) ((IL:\\\, PROCESS-LOCK) (IL:\\\, LVAR)) (IL:\\\, LVAR))) (PROGN ((IL:\\\, PROCESS-LOCK) (IL:\\\, LVAR)) (IL:\\\, LVAR)))) (T (WHEN (NULL (IL:\\\, DONTWAIT)) ((IL:\\\, PROCESS-LOCK) (IL:\\\, LVAR)) (IL:\\\, LVAR)))))))) (IF UNWINDSAVE (IL:BQUOTE (UNWIND-PROTECT (IL:\\\, BODY) (IL:\\\, (CONVERT UNWINDSAVE)))) BODY))) - -(IL-DEFCONV RELEASE.MONITORLOCK (LOCK &OPTIONAL EVENIFNOTMINE) (IL:BQUOTE ((IL:\\\, (MAKE-FAKE-SYMBOL "UE:PROCESS-UNLOCK")) (IL:\\\, (CONVERT LOCK)) ((IL:\\\, (MAKE-FAKE-SYMBOL "UE:CURRENT-PROCESS"))) T))) - -(IL-DEFCONV WITH.MONITOR (LOCK &REST BODY) (IL:BQUOTE ((IL:\\\, (MAKE-FAKE-SYMBOL "UE:WITH-PROCESS-LOCK")) (IL:\\\, (CONVERT LOCK)) (IL:\\\,. (MAPCONVERT BODY))))) - -(IL-DEFCONV NOTIFY.EVENT (EVENT &OPTIONAL ONCEONLY) (SETQ *CURRENT-EXPRESSION* (IL:BQUOTE ((IL:\\\, (MAKE-FAKE-SYMBOL "UE:PROCESS-UNLOCK")) (IL:\\\, (CONVERT EVENT))))) (WHEN ONCEONLY (WARN "NOTIFY.EVENT cannot handle arg ONCEONLY")) *CURRENT-EXPRESSION*) - -(IL-DEFCONV THIS.PROCESS (&REST ARGS) (CONS (MAKE-FAKE-SYMBOL "UE:CURRENT-PROCESS") (MAPCONVERT ARGS))) - -(IL-WARNINGFORM IL:AWAIT.EVENT) - -(IL-WARNINGFORM IL:CREATE.EVENT) - - - -(IL:* IL:\| "chapter 24") - - -(IL-DEFCONV OPENSTRINGSTREAM (STR &OPTIONAL ACCESS) (COND ((OR (NULL ACCESS) (EQUAL ACCESS (QUOTE (QUOTE IL:INPUT)))) (IL:BQUOTE (MAKE-STRING-INPUT-STREAM (IL:\\\, (CONVERT STR))))) ((EQUAL ACCESS (QUOTE (QUOTE IL:OUTPUT))) (LET ((BODY (LIST (QUOTE MAKE-STRING-OUTPUT-STREAM)))) (WHEN STR (LET ((*CURRENT-EXPRESSION* BODY)) (WARN "STRING arg to OPENSTRINGSTREAM not translated; use GET-OUTPUT-STREAM-STRING in the appropriate place"))) BODY)) ((EQUAL ACCESS (QUOTE (QUOTE IL:BOTH))) (WARN "Can't translate OPENSTRINGSTREAM for BOTH.") *CURRENT-EXPRESSION*) (T (WARN "Can't translate OPENSTRINGSTREAM for variable access type.") *CURRENT-EXPRESSION*))) - - - -(IL:* IL:\| "chapter 25") - - -(IL-COPYDEF PRINT) - -(IL-COPYDEF TERPRI) - -(IL-COPYDEF PRIN1 PRIN2) - -(IL-COPYDEF PRINC PRIN1) - -(IL-COPYDEF READ-CHAR BIN) - -(IL-COPYDEF WRITE-CHAR BOUT) - -(DEFVAR *ANNOTATE-PRINTOUT-FORM* NIL "Include the original printout form as an annotation.") - -(IL-DEFCONV PRINTOUT (STREAM &REST ARGS &AUX SUBSTRINGS FMTARGS FORMS (ARGSTAIL ARGS) ARG) (LOOP (WHEN (NULL ARGSTAIL) (RETURN)) (SETF ARG (POP ARGSTAIL)) (TYPECASE ARG (STRING (PUSH ARG SUBSTRINGS)) (INTEGER (PUSH (FORMAT NIL "~~~d~:[~;@~]T" (ABS ARG) (MINUSP ARG)) SUBSTRINGS)) (SYMBOL (LABELS ((MAYBE-NUMERIC-ARG (ARG FORMAT) (PUSH "~" SUBSTRINGS) (IF (INTEGERP ARG) (PUSH (WRITE-TO-STRING ARG :BASE 10) SUBSTRINGS) (PROGN (PUSH "V" SUBSTRINGS) (PUSH (CONVERT ARG) FMTARGS))) (PUSH FORMAT SUBSTRINGS)) (ESCAPE-FORM (FORM) (PUSH (IL:BQUOTE (FORMAT (IL:\\\, (OR STREAM T)) (IL:\\\, (APPLY (FUNCTION CONCATENATE) (QUOTE STRING) (NREVERSE SUBSTRINGS))) (IL:\\\,@ (NREVERSE FMTARGS)))) FORMS) (PUSH FORM FORMS) (SETQ SUBSTRINGS NIL FMTARGS NIL))) (CASE ARG ((T) (PUSH "~%" SUBSTRINGS)) ((IL:\, IL:|,,| IL:|,,,|) (PUSH (MAKE-STRING (LENGTH (STRING ARG)) :INITIAL-ELEMENT #\Space) SUBSTRINGS)) (IL:.SP (MAYBE-NUMERIC-ARG (POP ARGSTAIL) "@T")) (IL:.TAB (MAYBE-NUMERIC-ARG (POP ARGSTAIL) "T")) (IL:.TAB0 (WARN "PRINTOUT command .TAB0 treated like .TAB") (MAYBE-NUMERIC-ARG (POP ARGSTAIL) "T")) (IL:.SKIP (MAYBE-NUMERIC-ARG (POP ARGSTAIL) "%")) (IL:.PAGE (PUSH "~|" SUBSTRINGS)) (IL:|.P2| (PUSH "~s" SUBSTRINGS) (PUSH (CONVERT (POP ARGSTAIL)) FMTARGS)) ((IL:.PPV IL:PPF) (ESCAPE-FORM (IL:BQUOTE (PPRINT (IL:\\\, (CONVERT (POP ARGSTAIL))) (IL:\\\, (CONVERT (OR STREAM T))))))) ((IL:.PPVTL IL:.PPFTL) (ESCAPE-FORM (IL:BQUOTE (DO ((.X. (IL:\\\, (CONVERT (POP ARGSTAIL))) (CDR .X.))) (NIL) (PPRINT (CAR .X.) (IL:\\\, (CONVERT (OR STREAM T)))) (UNLESS (CDR .X.) (RETURN)) (WRITE-CHAR #\Space (OR STREAM T)))))) (IL:\# (ESCAPE-FORM (POP ARGSTAIL))) (OTHERWISE (LET ((SA (SYMBOL-NAME ARG))) (IF (CHAR= (CHAR SA 0) #\.) (WARN "Couldn't translate PRINTOUT command ~a." ARG) (PROGN (PUSH "~a" SUBSTRINGS) (PUSH (CONVERT ARG) FMTARGS)))))))) (T (PUSH "~a" SUBSTRINGS) (PUSH (CONVERT ARG) FMTARGS)))) (WHEN SUBSTRINGS (PUSH (IL:BQUOTE (FORMAT (IL:\\\, (OR STREAM T)) (IL:\\\, (APPLY (FUNCTION CONCATENATE) (QUOTE STRING) (NREVERSE SUBSTRINGS))) (IL:\\\,@ (NREVERSE FMTARGS)))) FORMS)) (IF (OR *ANNOTATE-PRINTOUT-FORM* (> (LENGTH FORMS) 1)) (IL:BQUOTE (PROGN (IL:\\\, (LIST (QUOTE IL:*) (QUOTE IL:|;;|) (LET ((*PACKAGE* (FIND-PACKAGE (QUOTE IL)))) (WRITE-TO-STRING (LIST* (QUOTE IL:PRINTOUT) STREAM ARGS))))) (IL:\\\,@ (NREVERSE FORMS)))) (FIRST FORMS))) - -(IL-DEFCONV READ (STREAM &OPTIONAL RDTBL FLG) (DECLARE (IGNORE FLG)) (IF RDTBL (IL:BQUOTE (LET ((*READTABLE* (IL:\\\, (CONVERT RDTBL)))) (READ (IL:\\\, (CONVERT STREAM))))) (IL:BQUOTE (READ (IL:\\\, (CONVERT STREAM)))))) - -(IL-DEFCONV READP (FILE &OPTIONAL FLG) (DECLARE (IGNORE FLG)) (IL:BQUOTE (LISTEN (IL:\\\, (CONVERT FILE))))) - -(IL-COPYCONV PRINTOUT |printout|) - - - -(IL:* IL:|;;| "Warning forms") - - -(IL-WARNINGFORM IL:INPUT) - -(IL-WARNINGFORM IL:RATOM) - -(IL-WARNINGFORM IL:RSTRING) - -(IL-WARNINGFORM IL:RATOMS) - -(IL-WARNINGFORM IL:RATEST) - -(IL-WARNINGFORM IL:READC) - -(IL-WARNINGFORM IL:PEEKC) - -(IL-WARNINGFORM IL:LASTC) - -(IL-WARNINGFORM IL:READCCODE) - -(IL-WARNINGFORM IL:PEEKCCODE) - -(IL-WARNINGFORM IL:READP) - -(IL-WARNINGFORM IL:EOFP) - -(IL-WARNINGFORM IL:WAITFORINPUT) - -(IL-WARNINGFORM IL:SKREAD) - -(IL-WARNINGFORM IL:SKIPSEPRS) - -(IL-WARNINGFORM IL:OUTPUT) - -(IL-WARNINGFORM IL:PRIN3) - -(IL-WARNINGFORM IL:PRIN4) - -(IL-WARNINGFORM IL:PRINTCCODE) - -(IL-WARNINGFORM IL:TAB) - -(IL-WARNINGFORM IL:SHOWPRIN2) - -(IL-WARNINGFORM IL:SHOWPRINT) - -(IL-WARNINGFORM IL:PRINTBELLS) - -(IL-WARNINGFORM IL:LINELENGTH) - -(IL-WARNINGFORM IL:SETLINELENGTH) - - - -(IL:* IL:\| "Unconvertable things...") - - - - -(IL:* IL:|;;| "Warning forms") - - -(IL-WARNINGFORM IL:WINDOWADDPROP) - -(IL-WARNINGFORM IL:\\PUTBASE) - -(IL-WARNINGFORM IL:\\GETBASE) - -(IL-WARNINGFORM IL:DSPLEFTMARGIN) - -(IL-WARNINGFORM IL:RESETLST) - -(IL-WARNINGFORM IL:WINDOWPROP) - -(IL-WARNINGFORM IL:SMARTARGLIST) - -(IL-WARNINGFORM IL:EDITGETD) - -(IL-WARNINGFORM IL:FIND.PROCESS) - -(IL-WARNINGFORM IL:PROCESS.EVALV) - -(IL-WARNINGFORM IL:PROCESSP) - -(IL-WARNINGFORM IL:PROCESS.EVAL) - -(IL-WARNINGFORM IL:FREEMENU) - -(IL-WARNINGFORM IL:FM.RESETMENU) - -(IL-WARNINGFORM IL:FM.CHANGESTATE) - -(IL-WARNINGFORM IL:FM.CHANGELABEL) - -(IL-WARNINGFORM IL:FM.ITEMPROP) - -(IL-WARNINGFORM IL:FM.EDITITEM) - -(IL-WARNINGFORM IL:FM.GETITEM) - -(IL-WARNINGFORM IL:MAINWINDOW) - -(IL-WARNINGFORM IL:RESETFORM) - -(IL-WARNINGFORM IL:SETTERMTABLE) - -(IL-WARNINGFORM IL:PROCESSPROP) - -(IL-WARNINGFORM IL:TTY.PROCESS) - -(IL-WARNINGFORM IL:CLEARW) - -(IL-WARNINGFORM IL:\\CARET.DOWN) - -(IL-WARNINGFORM IL:\\SMASHSTRING) - -(IL-WARNINGFORM IL:BKSYSBUF) - -(IL-WARNINGFORM IL:CLEARBUF) - -(IL-WARNINGFORM IL:GETSYNTAX) - -(IL-WARNINGFORM IL:OPENWP) - -(IL-WARNINGFORM IL:STRINGWIDTH) - -(IL-WARNINGFORM IL:CHARWIDTH) - -(IL-WARNINGFORM IL:FLASHWINDOW) - -(IL-WARNINGFORM IL:MENU) - -(IL-WARNINGFORM IL:FONTCREATE) - -(IL-WARNINGFORM IL:TTYINPROMPTFORWORD) - -(IL-WARNINGFORM IL:MOUSECONFIRM) - -(IL-WARNINGFORM IL:CLOSEW) - -(IL-WARNINGFORM IL:ATTACHWINDOW) - -(IL-WARNINGFORM IL:SHAPEW) - -(IL-WARNINGFORM IL:CONCATLIST) - -(IL-WARNINGFORM IL:GETPROMPTWINDOW) - -(IL-WARNINGFORM IL:BITBLT) - -(IL-WARNINGFORM IL:BLTSHADE) - -(IL-WARNINGFORM IL:BITMAPWIDTH) - -(IL-WARNINGFORM IL:BITMAPHEIGHT) - -(IL-WARNINGFORM IL:FONTPROP) - -(IL-WARNINGFORM IL:TEDIT.INSERT) - -(IL-WARNINGFORM IL:TEDIT.PARALOOKS) - -(IL-WARNINGFORM IL:DSPCLIPPINGREGION) - -(IL-WARNINGFORM IL:MOVETO) - -(IL-WARNINGFORM IL:RELMOVETO) - -(IL-WARNINGFORM IL:DSPFONT) - -(IL-WARNINGFORM IL:DSPXPOSITION) - -(IL-WARNINGFORM IL:CURSORCREATE) - -(IL-WARNINGFORM IL:WAIT.FOR.TTY) - -(IL-WARNINGFORM IL:\\SAVEVMEMBACKGROUND) - -(IL-WARNINGFORM IL:GETREGION) - -(IL-WARNINGFORM IL:WINDOWREGION) - -(IL-WARNINGFORM IL:EVALV) - -(IL-WARNINGFORM IL:TTY/EDITE) - -(IL-WARNINGFORM IL:CLISPTRAN) - -(IL-WARNINGFORM IL:TTY/EDITL) - -(IL-WARNINGFORM IL:MARKASCHANGED) - -(IL-WARNINGFORM IL:FIXEDITDATE) - -(IL-WARNINGFORM IL:PUTDEF) - -(IL-WARNINGFORM IL:ADDSPELL) - -(IL-WARNINGFORM IL:PROCESS.APPLY) - -(IL-WARNINGFORM IL:STKPOS) - -(IL-WARNINGFORM IL:EDITMODE) - -(IL-WARNINGFORM IL:TOTOPW) - -(IL-WARNINGFORM IL:EXPANDW) - -(IL-WARNINGFORM IL:ADD.PROCESS) - -(IL-WARNINGFORM IL:INSIDEP) - -(IL-WARNINGFORM IL:LASTMOUSEX) - -(IL-WARNINGFORM IL:LASTMOUSEY) - -(IL-WARNINGFORM IL:CREATEW) - -(IL-WARNINGFORM IL:DSPLINEFEED) - -(IL-WARNINGFORM IL:DSPRIGHTMARGIN) - -(IL-WARNINGFORM IL:DOWINDOWCOM) - -(IL-WARNINGFORM IL:TTY.PROCESSP) - -(IL-WARNINGFORM IL:IN/SCROLL/BAR?) - -(IL-WARNINGFORM IL:SCROLL.HANDLER) - -(IL-WARNINGFORM IL:BLOCK) - -(IL-WARNINGFORM IL:CLOCK) - -(IL-WARNINGFORM IL:DSPXOFFSET) - -(IL-WARNINGFORM IL:DSPYOFFSET) - -(IL-WARNINGFORM IL:CREATEREGION) - -(IL-WARNINGFORM IL:HEIGHTIFWINDOW) - -(IL-WARNINGFORM IL:SCROLLW) - -(IL-WARNINGFORM IL:WXOFFSET) - -(IL-WARNINGFORM IL:WYOFFSET) - -(IL-WARNINGFORM IL:KEYDOWNP) - -(IL-WARNINGFORM IL:SHIFTDOWNP) - -(IL-WARNINGFORM IL:UNTILMOUSESTATE) - -(IL-WARNINGFORM IL:FIND-READTABLE) - -(IL-WARNINGFORM IL:NILL) - -(IL-WARNINGFORM IL:FILECOMS) - -(IL-WARNINGFORM IL:ADDFILE) - -(IL-WARNINGFORM IL:ADDTOFILE) - -(IL-WARNINGFORM IL:READTABLEPROP) - -(IL-WARNINGFORM IL:LINELENGTH) - -(IL-WARNINGFORM IL:GETDEF) - - - -(IL:* IL:\| "Filecom converters") - - -(DEFUN CONVERT-FNS (FNS) (CONS (QUOTE PROGN) (MAP-INTO-CONTEXT (QUOTE CONVERT-ONE-FN) FNS))) - -(DEFUN CONVERT-ONE-FN (FN) (COND ((SYMBOLP FN)) ((AND (CONSP FN) (EQ (CAR FN) (QUOTE IL:*))) (RETURN-FROM CONVERT-ONE-FN NIL)) (T (WARN "Unconvertable FNS element: ~s" FN) (RETURN-FROM CONVERT-ONE-FN NIL))) (LET* ((DEFN (IL:VIRGINFN FN)) (NAME FN) (VARLST (SECOND DEFN)) (*CURRENT-DEFINITION* NAME) (*CURRENT-DEFINITION-TYPE* "Function") (*CURRENT-FUNCTION-CALLS* (LIST NAME)) (*CURRENT-FREE-REFERENCES* (LIST NAME)) (CONVERSION (CASE (FIRST DEFN) ((LAMBDA IL:LAMBDA) (IL:* IL:|;;| "cl:lambda may actually want its own clause...") (IF (LISTP VARLST) (MULTIPLE-VALUE-BIND (NEW-VARLST VARNAMES) (EXPAND-VARLIST VARLST) (LET ((*LOCALS* (COPY-LIST VARNAMES))) (WHEN (AND NEW-VARLST *PARAMETERS-ALWAYS-OPTIONAL*) (PUSH (QUOTE &OPTIONAL) NEW-VARLST)) (IL:BQUOTE (DEFUN (IL:\\\, NAME) ((IL:\\\,@ NEW-VARLST) (IL:\\\,@ (AND *ADD-REST-ARG* (QUOTE (&REST $EXTRA-ARGS$))))) (IL:\\\,@ (AND *ADD-REST-ARG* (QUOTE ((DECLARE (IGNORE $EXTRA-ARGS$)))))) (IL:\\\,@ (MAPCONVERT (CDDR DEFN))))))) (LET ((*LOCALS* (ACONS VARLST :LOCAL NIL))) (IL:BQUOTE (DEFUN (IL:\\\, NAME) (&REST $ARGS$ &AUX ((IL:\\\, VARLST) (LENGTH $ARGS$))) (IL:\\\,@ (MAPCONVERT (CDDR DEFN)))))))) (IL:NLAMBDA (IF (LISTP VARLST) (MULTIPLE-VALUE-BIND (NEW-VARLST VARNAMES) (EXPAND-VARLIST VARLST :TYPE :MACRO-ARG) (LET ((*LOCALS* (COPY-LIST VARNAMES))) (WHEN NEW-VARLST (PUSH (QUOTE &OPTIONAL) NEW-VARLST)) (IL:BQUOTE (DEFMACRO (IL:\\\, NAME) ((IL:\\\,@ NEW-VARLST) &REST $EXTRA-ARGS$) (DECLARE (IGNORE $EXTRA-ARGS$)) (IL:\\\, (MAKE-BQ (PROGN-IF-NEEDED (MAPCONVERT (CDDR DEFN))))))))) (LET ((*LOCALS* (ACONS VARLST :MACRO-ARG NIL))) (IL:BQUOTE (DEFMACRO (IL:\\\, NAME) (&REST (IL:\\\, VARLST)) (IL:\\\, (MAKE-BQ (PROGN-IF-NEEDED (MAPCONVERT (CDDR DEFN)))))))))) (T (ERROR "Unknown DEFINEQ type ~a" (FIRST DEFN)))))) (VALUES CONVERSION (NREVERSE *CURRENT-FUNCTION-CALLS*) (NREVERSE *CURRENT-FREE-REFERENCES*)))) - -(DEFUN CONVERT-CONSTANTS (VARS &OPTIONAL (MAPPING-FN (QUOTE MAPCAR))) (CONS (QUOTE PROGN) (MAP-INTO-CONTEXT (FUNCTION (LAMBDA (V) (IF (CONSP V) (IL:BQUOTE (DEFCONSTANT (IL:\\\, (FIRST V)) (IL:\\\, (SECOND V)))) (IL:BQUOTE (DEFCONSTANT (IL:\\\, V) (IL:\\\, (IL:KWOTE (SYMBOL-VALUE V)))))))) VARS))) - -(DEFUN CONVERT-INITVARS (VARS &OPTIONAL (MAPPING-FN (QUOTE MAPCAR))) (CONS (QUOTE PROGN) (MAP-INTO-CONTEXT (FUNCTION (LAMBDA (V) (IF (CONSP V) (AND (NOT (EQ (CAR V) (QUOTE IL:*))) (IL:BQUOTE (DEFVAR (IL:\\\, (FIRST V)) (IL:\\\, (SECOND V))))) (IL:BQUOTE (DEFVAR (IL:\\\, V) NIL))))) VARS))) - -(DEFUN CONVERT-VARS (VARS &OPTIONAL (MAPPING-FN (QUOTE MAPCAR))) (LET ((*CURRENT-DEFINTION-TYPE* "Variable")) (CONS (QUOTE PROGN) (DELETE (QUOTE NIL) (MAP-INTO-CONTEXT (FUNCTION (LAMBDA (V) (LET ((*CURRENT-DEFINITION* V)) (IF (CONSP V) (AND (NOT (EQ (CAR V) (QUOTE IL:*))) (IL:BQUOTE (DEFPARAMETER (IL:\\\, (NOTE-EXPORTED-SYMBOL (FIRST V))) (IL:\\\, (CONVERT (SECOND V)))))) (IF (BOUNDP V) (IL:BQUOTE (DEFPARAMETER (IL:\\\, (NOTE-EXPORTED-SYMBOL V)) (IL:\\\, (IL:KWOTE (SYMBOL-VALUE V))))) (PROGN (WARN "Var ~s not bound; no form dumped." V) NIL)))))) VARS))))) - -(DEFUN CONVERT-MACROS (FNS &OPTIONAL (MAPPING-FN (QUOTE MAPCAR))) (CONS (QUOTE PROGN) (DELETE (QUOTE NIL) (MAP-INTO-CONTEXT (FUNCTION (LAMBDA (F &AUX TEMPLATE) (WHEN (OR (SETQ TEMPLATE (GET F (QUOTE IL:MACRO))) (SETQ TEMPLATE (GET F (QUOTE IL:DMACRO)))) (LET ((*CURRENT-DEFINITION* F) (*CURRENT-DEFINITION-TYPE* "Macro")) (DEFINE-MACRO F TEMPLATE))))) FNS)))) - -(DEFUN CONVERT-ADDVARS (LISTS &OPTIONAL (MAPPING-FN (QUOTE MAPCAR))) (CONS (QUOTE PROGN) (MAP-INTO-CONTEXT (FUNCTION (LAMBDA (L) (IL:BQUOTE (SETQ (IL:\\\, (CAR L)) (LIST* (QUOTE (IL:\\\, (CDR L))) (AND (BOUNDP (QUOTE (IL:\\\, (CAR L)))) (IL:\\\, (CAR L)))))))) LISTS))) - -(DEFUN CONVERT-APPENDVARS (LISTS &OPTIONAL (MAPPING-FN (QUOTE MAPCAR))) (CONS (QUOTE PROGN) (MAP-INTO-CONTEXT (FUNCTION (LAMBDA (L) (IL:BQUOTE (SETQ (IL:\\\, (CAR L)) (APPEND (AND (BOUNDP (QUOTE (IL:\\\, (CAR L)))) (IL:\\\, (CAR L))) (QUOTE (IL:\\\, (CDR L)))))))) LISTS))) - -(DEFUN CONVERT-ALISTS (LISTS &OPTIONAL (MAPPING-FN (QUOTE MAPCAR))) (CONS (QUOTE PROGN) (MAP-INTO-CONTEXT (FUNCTION (LAMBDA (L &AUX (SYM (CAR L)) (KEYS (CDR L))) (LABELS ((DOTAIL (TAIL) (IL:BQUOTE (ACONS (QUOTE (IL:\\\, (CAR TAIL))) (QUOTE (IL:\\\, (CDR (ASSOC (CAR TAIL) (SYMBOL-VALUE SYM))))) (IL:\\\, (IF (ENDP (CDR TAIL)) (IL:BQUOTE (AND (BOUNDP (QUOTE (IL:\\\, SYM))) (IL:\\\, SYM))) (DOTAIL (CDR TAIL)))))))) (IL:BQUOTE (SETQ (IL:\\\, SYM) (IL:\\\, (DOTAIL KEYS))))))) LISTS))) - -(DEFUN CONVERT-PROP (STUFF &OPTIONAL MAPPING-FN-IGNORED) (DECLARE (IGNORE MAPPING-FN-IGNORED)) (LET* ((INDICATOR (FIRST STUFF)) (INDICATORS (IF (CONSP INDICATOR) INDICATOR (CONS INDICATOR NIL))) (SYMS (CDR STUFF)) (FORM (SECOND SYMS)) (IL:* IL:\; "if indirect...") (NOPROPVALUE (CONS NIL NIL))) (WHEN (EQ (FIRST SYMS) (QUOTE IL:*)) (IL:* IL:|;;| "indirect...") (SETQ SYMS (IL:EVAL FORM))) (MAPCAN-INTO-CONTEXT (QUOTE SETF) (FUNCTION (LAMBDA (S) (MAPCAN (FUNCTION (LAMBDA (I) (LET ((VALUE (GET S I NOPROPVALUE))) (WHEN (EQ VALUE NOPROPVALUE) (WARN "No ~s property for ~s" I S) (SETQ VALUE NIL)) (IL:BQUOTE ((GET (QUOTE (IL:\\\, S)) (QUOTE (IL:\\\, I))) (IL:\\\, (IL:KWOTE VALUE))))))) INDICATORS))) SYMS))) - -(DEFUN CONVERT-PROPS (PAIRS &AUX (NOPROPVALUE (CONS NIL NIL))) (DECLARE (IGNORE MAPPING-FN-IGNORED)) (MAPCAN-INTO-CONTEXT (QUOTE SETF) (FUNCTION (LAMBDA (P) (LET ((S (FIRST P)) (I (SECOND P))) (LET ((VALUE (GET S I NOPROPVALUE))) (WHEN (EQ VALUE NOPROPVALUE) (WARN "No ~s property for ~s" I S) (SETQ VALUE NIL)) (IL:BQUOTE ((GET (QUOTE (IL:\\\, S)) (QUOTE (IL:\\\, I))) (IL:\\\, (IL:KWOTE VALUE)))))))) PAIRS)) - -(DEFUN CONVERT-IFPROP (STUFF &OPTIONAL MAPPING-FN-IGNORED) (DECLARE (IGNORE MAPPING-FN-IGNORED)) (LET* ((INDICATOR (FIRST STUFF)) (INDICATORS (IF (CONSP INDICATOR) INDICATOR (CONS INDICATOR NIL))) (SYMS (CDR STUFF)) (FORM (SECOND SYMS)) (IL:* IL:\; "if indirect") (NOPROPVALUE (CONS NIL NIL))) (WHEN (EQ (FIRST SYMS) (QUOTE IL:*)) (SETQ SYMS (IL:EVAL FORM))) (MAPCAN (QUOTE SETF) (FUNCTION (LAMBDA (S) (MAPCAN (FUNCTION (LAMBDA (I) (BLOCK NIL (LET ((VALUE (GET S I NOPROPVALUE))) (WHEN (EQ VALUE NOPROPVALUE) (WARN "No ~s property for ~s" I S) (RETURN NIL)) (IL:BQUOTE ((GET (QUOTE (IL:\\\, S)) (QUOTE (IL:\\\, I))) (IL:\\\, (IL:KWOTE VALUE)))))))) INDICATORS))) SYMS))) - -(DEFUN CONVERT-RECORDS (RECS &OPTIONAL (MAPPING-FN (QUOTE MAPCAR))) (DECLARE (SPECIAL IL:USERRECLST)) (CONS (QUOTE PROGN) (MAP-INTO-CONTEXT (FUNCTION (LAMBDA (R) (LET* ((DECL (CAR (IL:\\RECORDBLOCK/RECLOOK1 R IL:USERRECLST)))) (CONVERT DECL)))) RECS))) - -(DEFUN CONVERT-FILES-FILECOM (FILES &AUX (NOERRORS)) (WHEN (MEMBER (QUOTE COMPILE) *EVAL-WHEN-STATE*) (IL:DOFILESLOAD FILES)) (UNLESS (NULL (INTERSECTION (QUOTE (LOAD EVAL)) *EVAL-WHEN-STATE*)) (CONS (QUOTE PROGN) (MAP-INTO-CONTEXT (FUNCTION (LAMBDA (F) (COND ((CONSP F) (WHEN (MEMBER (QUOTE IL:NOERRORS) F) (SETQ NOERRORS T)) (LET ((UNSUP (REMOVE (QUOTE IL:NOERRORS) F))) (WHEN UNSUP (WARN "FILES options not supported: ~:@(~{~A ~}~)" UNSUP)))) (T (TRANSLATOR-NOTE-ADDITIONAL-FILE F) (IL:BQUOTE (LOAD (IL:\\\, (STRING F)) (IL:\\\,@ (AND NOERRORS (QUOTE (:IF-DOES-NOT-EXIST NIL)))))))))) FILES)))) - -(DEFUN CONVERT-TOP-LEVEL-FORM-FILECOM (FORMS &OPTIONAL (MAPPING-FN (QUOTE MAPCAR))) (CONS (QUOTE PROGN) (MAP-INTO-CONTEXT (QUOTE CONVERT) FORMS))) - -(DEFUN CONVERT-COMMENT-FILECOM (BODY) (MAP-INTO-CONTEXT (FUNCTION (LAMBDA (B) (CONS (QUOTE IL:*) BODY))) (LIST BODY))) - -(DEFUN CONVERT-COMS-FILECOM (COMS) (MAPC (QUOTE CONVERT-ONE-FILECOM) COMS)) - -(DEFUN CONVERT-DECLARE-FILECOM (ARGS) (DO ((FORMS NIL) (EVAL-WHEN-EVAL (MEMBER (QUOTE EVAL) *EVAL-WHEN-STATE*)) (EVAL-WHEN-COMPILE (MEMBER (QUOTE COMPILE) *EVAL-WHEN-STATE*)) (EVAL-WHEN-LOAD (MEMBER (QUOTE LOAD) *EVAL-WHEN-STATE*)) (FIRST NIL) (TMPFORMS NIL) (FIRSTFORMS NIL) ARG) NIL (WHEN (AND TMPFORMS (OR (ENDP ARGS) (ATOM (FIRST ARGS)))) (LET* ((NEW-EVAL-WHEN-STATE (IL:BQUOTE ((IL:\\\,@ (IF EVAL-WHEN-EVAL (QUOTE (EVAL)))) (IL:\\\,@ (IF EVAL-WHEN-COMPILE (QUOTE (COMPILE)))) (IL:\\\,@ (IF EVAL-WHEN-LOAD (QUOTE (LOAD))))))) (OLD-EVAL-WHEN-STATE *EVAL-WHEN-STATE*) (*EVAL-WHEN-STATE* NEW-EVAL-WHEN-STATE) (OLD-LAST-CONS (AND *FILE-CONTEXT* (FILE-CONTEXT-DEFINITIONS-LAST-CONS *FILE-CONTEXT*)))) (IL:* IL:|;;| "The way things are dropped directly into the context, we need to re-group them by performing some micro-surgery on the list structure on the fly.") (MAPC (QUOTE CONVERT-ONE-FILECOM) (NREVERSE TMPFORMS)) (WHEN *FILE-CONTEXT* (IF (NULL OLD-LAST-CONS) (IL:* IL:|;;| "This com was the first one... special case...") (LET ((NEW-FORM (CONS (IL:BQUOTE (EVAL-WHEN (IL:\\\, NEW-EVAL-WHEN-STATE) (IL:\\\,@ (FILE-CONTEXT-DEFINITIONS *FILE-CONTEXT*)))) NIL))) (SETF (FILE-CONTEXT-DEFINITIONS *FILE-CONTEXT*) NEW-FORM) (FILE-CONTEXT-DEFINITIONS-LAST-CONS *FILE-CONTEXT*) NEW-FORM) (IL:* IL:|;;| " Not the first com in the file...") (SETF (CDR OLD-LAST-CONS) (IL:BQUOTE ((EVAL-WHEN (IL:\\\, NEW-EVAL-WHEN-STATE) (IL:\\\,@ (CDR OLD-LAST-CONS))))) (FILE-CONTEXT-DEFINITIONS-LAST-CONS *FILE-CONTEXT*) (LAST OLD-LAST-CONS))))) (IF FIRST (PUSH TMPFORMS FIRSTFORMS) (PUSH TMPFORMS FORMS)) (SETQ TMPFORMS NIL)) (WHEN (ENDP ARGS) (RETURN)) (SETQ ARG (POP ARGS)) (IF (ATOM ARG) (CASE ARG ((IL:EVAL@LOAD IL:DOEVAL@LOAD) (SETQ EVAL-WHEN-EVAL T)) (IL:DONTEVAL@LOAD (SETQ EVAL-WHEN-EVAL NIL)) (IL:EVAL@LOADWHEN (SETQ EVAL-WHEN-EVAL (EVAL (POP ARGS)))) ((IL:EVAL@COMPILE IL:DOEVAL@COMPILE) (SETQ EVAL-WHEN-COMPILE T)) (IL:DONTEVAL@COMPILE (SETQ EVAL-WHEN-COMPILE NIL)) (IL:EVAL@COMPILEWHEN (SETQ EVAL-WHEN-COMPILE (EVAL (POP ARGS)))) ((IL:COPY IL:DOCOPY) (SETQ EVAL-WHEN-LOAD T)) (IL:DONTCOPY (SETQ EVAL-WHEN-LOAD NIL)) (IL:COPYWHEN (SETQ EVAL-WHEN-LOAD (EVAL (POP ARGS)))) (IL:FIRST (WARN "\"FIRST\" option in DECLARE: was ignored.")) (IL:NOTFIRST (SETQ FIRST NIL)) (T (WARN "Unknown option ~:@(~a~) in DECLARE:" ARG))) (PUSH ARG TMPFORMS)))) - -(DEFUN CONVERT-EXPORT-FILECOM (COM &OPTIONAL MAPPING-FN-IGNORED) (DECLARE (IGNORE MAPPING-FN-IGNORED)) NIL) - -(DEFUN CONVERT-FUNCTIONS-FILECOM (FUNCTIONS) (IL:* IL:|;;| "Use the Code-Walker (stolen from Gregor's PCL) to hunt down any lingering IL code in CL functions...") (FLET ((CONVERT-FUNCTION (F) (LET* ((DEF (FUNCALL (GET (QUOTE IL:FUNCTIONS) (QUOTE IL:GETDEF)) F (QUOTE IL:FUNCTIONS))) (IL:* IL:|;;| " The def name will be added by the template walker...") (*CURRENT-FUNCTION-CALLS* NIL) (*CURRENT-FREE-REFERENCES* NIL) (*CURRENT-DEFINITION* NIL) (*CURRENT-DEFINITION-TYPE* "Function") (CONVERSION (WALK-FORM-INTERNAL DEF))) (VALUES CONVERSION (NREVERSE *CURRENT-FUNCTION-CALLS*) (NREVERSE *CURRENT-FREE-REFERENCES*))))) (CONS (QUOTE PROGN) (MAP-INTO-CONTEXT (FUNCTION CONVERT-FUNCTION) FUNCTIONS)))) - -(DEFUN CONVERT-ONE-BITMAP (VARNAME) (LET* ((B (SYMBOL-VALUE VARNAME)) (A (MAKE-ARRAY (LIST (IL:BITMAPHEIGHT B) (IL:BITMAPWIDTH B)) :ELEMENT-TYPE (QUOTE BIT)))) (IL:* IL:|;;| "Oughta be a better way...") (IL:FOR J IL:TO (IL:BITMAPWIDTH B) IL:DO (IL:FOR I IL:TO (IL:BITMAPHEIGHT B) IL:DO (SETF (AREF A (1- I) (1- J)) (IL:BITMAPBIT B J I)))) (IL:* IL:|;;| "This must print out with *print-array* on.") (IL:BQUOTE (DEFPARAMETER (IL:\\\, VARNAME) (QUOTE (IL:\\\, A)))))) - -(DEFUN CONVERT-BITMAPS (VARS) (CONS (QUOTE PROGN) (MAP-INTO-CONTEXT (QUOTE CONVERT-ONE-BITMAP) VARS))) - -(DEFUN CONVERT-VARIABLES-FILECOM (VARS &OPTIONAL (MAPPING-FN (QUOTE MAPCAR)) &AUX (GETD (GET (QUOTE IL:VARIABLES) (QUOTE IL:GETDEF)))) (CONS (QUOTE PROGN) (MAP-INTO-CONTEXT (FUNCTION (LAMBDA (V) (FUNCALL GETD V (QUOTE IL:VARIABLES)))) VARS))) - -(DEFUN CONVERT-STRUCTURES-FILECOM (STRUCTURES &OPTIONAL (MAPPING-FN (QUOTE MAPCAR)) &AUX (GETD (GET (QUOTE IL:STRUCTURES) (QUOTE IL:GETDEF)))) (CONS (QUOTE PROGN) (MAP-INTO-CONTEXT (FUNCTION (LAMBDA (S) (FUNCALL GETD S (QUOTE IL:STRUCTURES)))) STRUCTURES))) - - - -(IL:* IL:|;;| "Conversion functions for filecom types are noted on the plists of their names.") - - -(IL:PUTPROPS IL:FNS CONVERT-COM CONVERT-FNS) - -(IL:PUTPROPS IL:CONSTANTS CONVERT-COM CONVERT-CONSTANTS) - -(IL:PUTPROPS IL:INITVARS CONVERT-COM CONVERT-INITVARS) - -(IL:PUTPROPS IL:VARS CONVERT-COM CONVERT-VARS) - -(IL:PUTPROPS IL:MACROS CONVERT-COM CONVERT-MACROS) - -(IL:PUTPROPS IL:ADDVARS CONVERT-COM CONVERT-ADDVARS) - -(IL:PUTPROPS IL:APPENDVARS CONVERT-COM CONVERT-APPENDVARS) - -(IL:PUTPROPS IL:ALISTS CONVERT-COM CONVERT-ALISTS) - -(IL:PUTPROPS IL:PROP CONVERT-COM CONVERT-PROP) - -(IL:PUTPROPS IL:PROPS CONVERT-COM CONVERT-PROPS) - -(IL:PUTPROPS IL:IFPROP CONVERT-COM CONVERT-IFPROP) - -(IL:PUTPROPS IL:RECORDS CONVERT-COM CONVERT-RECORDS) - -(IL:PUTPROPS IL:INITRECORDS CONVERT-COM CONVERT-RECORDS) - -(IL:PUTPROPS IL:FILES CONVERT-COM CONVERT-FILES-FILECOM) - -(IL:PUTPROPS IL:P CONVERT-COM CONVERT-TOP-LEVEL-FORM-FILECOM) - -(IL:PUTPROPS IL:* CONVERT-COM CONVERT-COMMENT-FILECOM) - -(IL:PUTPROPS IL:COMS CONVERT-COM CONVERT-COMS-FILECOM) - -(IL:PUTPROPS IL:DECLARE\: CONVERT-COM CONVERT-DECLARE-FILECOM) - -(IL:PUTPROPS EXPORT CONVERT-COM CONVERT-COMS-FILECOM) - -(IL:PUTPROPS IL:FUNCTIONS CONVERT-COM CONVERT-FUNCTIONS-FILECOM) - -(IL:PUTPROPS IL:VARIABLES CONVERT-COM CONVERT-VARIABLES-FILECOM) - -(IL:PUTPROPS IL:STRUCTURES CONVERT-COM CONVERT-STRUCTURES-FILECOM) - -(IL:PUTPROPS IL:SETFS CONVERT-COM CONVERT-SETFS-FILECOM) - -(IL:PUTPROPS IL:BITMAPS CONVERT-COM CONVERT-BITMAPS) - - - -(IL:* IL:|;;| "Magic to make comments print out in the usual way...") - - -(DEFSTRUCT (IL-COMMENT-STRUCT (:PRINT-FUNCTION PRINT-IL-COMMENT-STRUCT)) STUFF) - -(DEFUN PRINT-IL-COMMENT-STRUCT (O S D) (LET ((STUFF (IL-COMMENT-STRUCT-STUFF O))) (COND ((SOME (FUNCTION (LAMBDA (X) (AND (CONSP X) (SOME (QUOTE CONSP) X)))) STUFF) (IL:* IL:|;;| "Commenting out a form? Try it this way...") (PRINC "#||" S) (PRIN1 STUFF S) (PRINC "||#" S)) (T (UNLESS (AND (TYPEP (FIRST STUFF) (QUOTE (OR SYMBOL STRING))) (EQL (CHAR (STRING (FIRST STUFF)) 0) #\;)) (PRINC "; " S)) (DOLIST (I STUFF) (PRINC I S) (WRITE-CHAR #\Space S)) (TERPRI S))))) - -(IL-DEFCONV * (&REST STUFF) (IF (AND (MEMBER (CAR STUFF) (QUOTE (IL:\; IL:|;;| IL:|;;;| IL:|;;;;| IL:\#\|))) (STRINGP (SECOND STUFF)) (NULL (CDDR STUFF))) (CONS (QUOTE IL:*) STUFF) (LET ((STR (FORMAT NIL "~{~a ~}" STUFF))) (LIST (QUOTE IL:*) (IF (< (LENGTH STR) 32) (QUOTE IL:\;) (QUOTE IL:|;;|)) STR)))) - -(IL:PUTPROPS IL:IL-SIM IL:MAKEFILE-ENVIRONMENT (:READTABLE "XCL" :PACKAGE (LET ((*PACKAGE* *PACKAGE*)) (IN-PACKAGE "IL-CONVERT") *PACKAGE*) :BASE 10) -) - -(IL:PUTPROPS IL:IL-SIM IL:FILETYPE :COMPILE-FILE) -(IL:PUTPROPS IL:IL-SIM IL:COPYRIGHT ("ENVOS Corporation" 1989 1990)) -(IL:DECLARE\: IL:DONTCOPY - (IL:FILEMAP (NIL))) -IL:STOP diff --git a/lispusers/migration/IL-SIM.gz b/lispusers/migration/IL-SIM.gz new file mode 100644 index 0000000000000000000000000000000000000000..6bfbf7f758e321844471630ad511bb726ac54e6f GIT binary patch literal 20079 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 WKAg7+x$|)J+5ZKsc}2q1Spfjn+a@6Z literal 0 HcmV?d00001