diff options
-rw-r--r-- | src/interp/Makefile.in | 58 | ||||
-rw-r--r-- | src/interp/Makefile.pamphlet | 62 | ||||
-rw-r--r-- | src/interp/axext_l.lisp (renamed from src/interp/axext_l.lisp.pamphlet) | 53 | ||||
-rw-r--r-- | src/interp/bits.lisp | 2 | ||||
-rw-r--r-- | src/interp/boot-pkg.lisp | 2 | ||||
-rw-r--r-- | src/interp/bootlex.lisp | 2 | ||||
-rw-r--r-- | src/interp/cfuns.lisp (renamed from src/interp/cfuns.lisp.pamphlet) | 24 | ||||
-rw-r--r-- | src/interp/comp.lisp | 2 | ||||
-rw-r--r-- | src/interp/daase.lisp (renamed from src/interp/daase.lisp.pamphlet) | 669 | ||||
-rw-r--r-- | src/interp/debug.lisp (renamed from src/interp/debug.lisp.pamphlet) | 453 | ||||
-rw-r--r-- | src/interp/def.lisp | 2 | ||||
-rw-r--r-- | src/interp/fname.lisp | 2 | ||||
-rw-r--r-- | src/interp/fnewmeta.lisp (renamed from src/interp/fnewmeta.lisp.pamphlet) | 423 | ||||
-rw-r--r-- | src/interp/foam_l.lisp (renamed from src/interp/foam_l.lisp.pamphlet) | 278 | ||||
-rw-r--r-- | src/interp/ggreater.lisp | 2 | ||||
-rw-r--r-- | src/interp/hash.lisp (renamed from src/interp/hash.lisp.pamphlet) | 58 | ||||
-rw-r--r-- | src/interp/interp-proclaims.lisp | 3391 | ||||
-rw-r--r-- | src/interp/intint.lisp (renamed from src/interp/intint.lisp.pamphlet) | 38 | ||||
-rw-r--r-- | src/interp/macros.lisp (renamed from src/interp/macros.lisp.pamphlet) | 259 | ||||
-rw-r--r-- | src/interp/metalex.lisp | 2 | ||||
-rw-r--r-- | src/interp/monitor.lisp (renamed from src/interp/monitor.lisp.pamphlet) | 336 | ||||
-rw-r--r-- | src/interp/newaux.lisp (renamed from src/interp/newaux.lisp.pamphlet) | 148 | ||||
-rw-r--r-- | src/interp/nlib.lisp (renamed from src/interp/nlib.lisp.pamphlet) | 291 | ||||
-rw-r--r-- | src/interp/nocompil.lisp (renamed from src/interp/nocompil.lisp.pamphlet) | 67 | ||||
-rw-r--r-- | src/interp/nspadaux.lisp | 2 | ||||
-rw-r--r-- | src/interp/obey.lisp | 2 | ||||
-rw-r--r-- | src/interp/parsing.lisp | 2 | ||||
-rw-r--r-- | src/interp/patches.lisp (renamed from src/interp/patches.lisp.pamphlet) | 99 | ||||
-rw-r--r-- | src/interp/postprop.lisp | 2 | ||||
-rw-r--r-- | src/interp/preparse.lisp (renamed from src/interp/preparse.lisp.pamphlet) | 129 | ||||
-rw-r--r-- | src/interp/property.lisp (renamed from src/interp/property.lisp.pamphlet) | 104 | ||||
-rw-r--r-- | src/interp/setq.lisp (renamed from src/interp/setq.lisp.pamphlet) | 170 | ||||
-rw-r--r-- | src/interp/sfsfun-l.lisp (renamed from src/interp/sfsfun-l.lisp.pamphlet) | 28 | ||||
-rw-r--r-- | src/interp/sockio.lisp (renamed from src/interp/sockio.lisp.pamphlet) | 54 | ||||
-rw-r--r-- | src/interp/spad.lisp (renamed from src/interp/spad.lisp.pamphlet) | 282 | ||||
-rw-r--r-- | src/interp/spaderror.lisp (renamed from src/interp/spaderror.lisp.pamphlet) | 82 | ||||
-rw-r--r-- | src/interp/union.lisp | 2 | ||||
-rw-r--r-- | src/interp/unlisp.lisp (renamed from src/interp/unlisp.lisp.pamphlet) | 106 | ||||
-rw-r--r-- | src/interp/util.lisp | 1118 | ||||
-rw-r--r-- | src/interp/util.lisp.pamphlet | 1557 | ||||
-rw-r--r-- | src/interp/vmlisp.lisp (renamed from src/interp/vmlisp.lisp.pamphlet) | 298 |
41 files changed, 2754 insertions, 7907 deletions
diff --git a/src/interp/Makefile.in b/src/interp/Makefile.in index 827626b3..9d742924 100644 --- a/src/interp/Makefile.in +++ b/src/interp/Makefile.in @@ -21,29 +21,11 @@ LISPSYS= $(axiom_build_bindir)/lisp BOOTSYS= $(axiom_build_bindir)/bootsys DEPSYS = ./depsys -depsys_lisp_compiled_sources += parsing.lisp metalex.lisp bootlex.lisp \ - newaux.lisp preparse.lisp postprop.lisp def.lisp \ - fnewmeta.lisp - -depsys_lisp_sources = $(depsys_lisp_noncompiled_sources) \ - $(depsys_lisp_compiled_sources) - -depsys_boot_sources = postpar.boot parse.boot clam.boot slam.boot \ - g-boot.boot g-error.boot c-util.boot g-util.boot -DEP= spaderror.lisp debug.lisp \ - spad.lisp \ - setq.lisp property.lisp \ - unlisp.lisp foam_l.lisp \ - axext_l.lisp - -depsys_lisp_macro_sources = vmlisp.lisp ggreater.lisp hash.lisp \ - union.lisp nlib.lisp macros.lisp \ - comp.lisp spaderror.lisp debug.lisp \ - spad.lisp bits.lisp setq.lisp property.lisp \ - unlisp.lisp foam_l.lisp axext_l.lisp - -depsys_lisp_noncompiled_sources += $(depsys_lisp_macro_sources) -depsys_lisp_SOURCES = $(addsuffix .pamphlet, $(depsys_lisp_sources)) +DEP= $(srcdir)/spaderror.lisp $(srcdir)/debug.lisp \ + $(srcdir)/spad.lisp \ + $(srcdir)/setq.lisp $(srcdir)/property.lisp \ + $(srcdir)/unlisp.lisp $(srcdir)/foam_l.lisp \ + $(srcdir)/axext_l.lisp LOADSYS= $(axiom_build_bindir)/lisp$(EXEEXT) SAVESYS= interpsys$(EXEEXT) AXIOMSYS= $(axiom_target_bindir)/AXIOMsys$(EXEEXT) @@ -108,36 +90,6 @@ OBJS= vmlisp.$(FASLEXT) hash.$(FASLEXT) \ $(BROBJS) interpsys_modules = $(patsubst %.$(FASLEXT), "%", $(OBJS)) - -AXIOMsys_noncompiled_lisp_sources = nocompil.lisp \ - postprop.lisp property.lisp setq.lisp - -AXIOMsys_compiled_lisp_sources = bits.lisp \ - bootlex.lisp cfuns.lisp comp.lisp construc.lisp daase.lisp \ - debug.lisp def.lisp fname.lisp fnewmeta.lisp ggreater.lisp \ - hash.lisp macros.lisp metalex.lisp monitor.lisp newaux.lisp \ - nlib.lisp nspadaux.lisp parsing.lisp \ - patches.lisp preparse.lisp \ - sockio.lisp spad.lisp spaderror.lisp \ - union.lisp util.lisp vmlisp.lisp obey.lisp \ - unlisp.lisp intint.lisp sfsfun-l.lisp \ - axext_l.lisp foam_l.lisp - -AXIOMsys_boot_sources = astr.boot alql.boot buildom.boot cattable.boot \ - cformat.boot clam.boot clammed.boot compat.boot compress.boot \ - cparse.boot cstream.boot database.boot dq.boot format.boot \ - g-boot.boot g-cndata.boot g-error.boot g-opt.boot g-timer.boot \ - g-util.boot hypertex.boot i-analy.boot i-code.boot i-coerce.boot \ - i-coerfn.boot i-eval.boot i-funsel.boot i-intern.boot i-map.boot \ - i-output.boot i-resolv.boot i-spec1.boot i-spec2.boot \ - i-syscmd.boot i-toplev.boot i-util.boot incl.boot int-top.boot \ - intfile.boot lisplib.boot macex.boot match.boot msg.boot \ - msgdb.boot newfort.boot nrunfast.boot nrungo.boot nrunopt.boot \ - nruntime.boot osyscmd.boot packtran.boot pathname.boot \ - pf2sex.boot pile.boot posit.boot ptrees.boot \ - record.boot rulesets.boot scan.boot serror.boot server.boot \ - setvars.boot sfsfun.boot simpbool.boot slam.boot template.boot \ - termrw.boot trace.boot fortcall.boot INOBJS= varini.$(FASLEXT) \ setvart.$(FASLEXT) intint.$(FASLEXT) \ xrun.$(FASLEXT) interop.$(FASLEXT) \ diff --git a/src/interp/Makefile.pamphlet b/src/interp/Makefile.pamphlet index 54889009..9843fcc5 100644 --- a/src/interp/Makefile.pamphlet +++ b/src/interp/Makefile.pamphlet @@ -247,19 +247,6 @@ The [[depsys]] image is made of the following Lisp source files \end{description} -% -<<environment>>= -depsys_lisp_compiled_sources += parsing.lisp metalex.lisp bootlex.lisp \ - newaux.lisp preparse.lisp postprop.lisp def.lisp \ - fnewmeta.lisp - -depsys_lisp_sources = $(depsys_lisp_noncompiled_sources) \ - $(depsys_lisp_compiled_sources) - -depsys_boot_sources = postpar.boot parse.boot clam.boot slam.boot \ - g-boot.boot g-error.boot c-util.boot g-util.boot -@ - The {\bf DEP} variable contains the list of files that will be loaded into {\bf DEPSYS}. Notice that these files are loaded in interpreted form. We are not concerned about @@ -268,20 +255,11 @@ We do, however, care about the macros as these will be expanded in later compiles. All macros are assumed to be in this list of files. <<environment>>= -DEP= spaderror.lisp debug.lisp \ - spad.lisp \ - setq.lisp property.lisp \ - unlisp.lisp foam_l.lisp \ - axext_l.lisp - -depsys_lisp_macro_sources = vmlisp.lisp ggreater.lisp hash.lisp \ - union.lisp nlib.lisp macros.lisp \ - comp.lisp spaderror.lisp debug.lisp \ - spad.lisp bits.lisp setq.lisp property.lisp \ - unlisp.lisp foam_l.lisp axext_l.lisp - -depsys_lisp_noncompiled_sources += $(depsys_lisp_macro_sources) -depsys_lisp_SOURCES = $(addsuffix .pamphlet, $(depsys_lisp_sources)) +DEP= $(srcdir)/spaderror.lisp $(srcdir)/debug.lisp \ + $(srcdir)/spad.lisp \ + $(srcdir)/setq.lisp $(srcdir)/property.lisp \ + $(srcdir)/unlisp.lisp $(srcdir)/foam_l.lisp \ + $(srcdir)/axext_l.lisp @ Once we've compile all of the Common Lisp files we fire up @@ -381,36 +359,6 @@ OBJS= vmlisp.$(FASLEXT) hash.$(FASLEXT) \ $(BROBJS) interpsys_modules = $(patsubst %.$(FASLEXT), "%", $(OBJS)) - -AXIOMsys_noncompiled_lisp_sources = nocompil.lisp \ - postprop.lisp property.lisp setq.lisp - -AXIOMsys_compiled_lisp_sources = bits.lisp \ - bootlex.lisp cfuns.lisp comp.lisp construc.lisp daase.lisp \ - debug.lisp def.lisp fname.lisp fnewmeta.lisp ggreater.lisp \ - hash.lisp macros.lisp metalex.lisp monitor.lisp newaux.lisp \ - nlib.lisp nspadaux.lisp parsing.lisp \ - patches.lisp preparse.lisp \ - sockio.lisp spad.lisp spaderror.lisp \ - union.lisp util.lisp vmlisp.lisp obey.lisp \ - unlisp.lisp intint.lisp sfsfun-l.lisp \ - axext_l.lisp foam_l.lisp - -AXIOMsys_boot_sources = astr.boot alql.boot buildom.boot cattable.boot \ - cformat.boot clam.boot clammed.boot compat.boot compress.boot \ - cparse.boot cstream.boot database.boot dq.boot format.boot \ - g-boot.boot g-cndata.boot g-error.boot g-opt.boot g-timer.boot \ - g-util.boot hypertex.boot i-analy.boot i-code.boot i-coerce.boot \ - i-coerfn.boot i-eval.boot i-funsel.boot i-intern.boot i-map.boot \ - i-output.boot i-resolv.boot i-spec1.boot i-spec2.boot \ - i-syscmd.boot i-toplev.boot i-util.boot incl.boot int-top.boot \ - intfile.boot lisplib.boot macex.boot match.boot msg.boot \ - msgdb.boot newfort.boot nrunfast.boot nrungo.boot nrunopt.boot \ - nruntime.boot osyscmd.boot packtran.boot pathname.boot \ - pf2sex.boot pile.boot posit.boot ptrees.boot \ - record.boot rulesets.boot scan.boot serror.boot server.boot \ - setvars.boot sfsfun.boot simpbool.boot slam.boot template.boot \ - termrw.boot trace.boot fortcall.boot @ Before we save the {\bf SAVESYS} image we need to run some diff --git a/src/interp/axext_l.lisp.pamphlet b/src/interp/axext_l.lisp index 3d03127c..27bad9cc 100644 --- a/src/interp/axext_l.lisp.pamphlet +++ b/src/interp/axext_l.lisp @@ -1,25 +1,7 @@ -%% Oh Emacs, this is a -*- Lisp -*- file despite apperance. -\documentclass{article} -\usepackage{axiom} - -\title{\File{src/interp/axext\_l.lisp} Pamphlet} -\author{Timothy Daly} - -\begin{document} -\maketitle - -\begin{abstract} -\end{abstract} - - -\tableofcontents -\eject - -\section{License} - -<<license>>= ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are @@ -49,9 +31,6 @@ ;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -@ -<<*>>= -<<license>> ;; File containing primitives needed by exextend in order to interop with axiom ;; This file could do with some declares @@ -62,7 +41,7 @@ (defun H-integer (l e) (|AXL-LiteralToInteger| l)) - + (defun H-string (l e) (|AXL-LiteralToString| l)) @@ -70,9 +49,9 @@ (|AXL-error| l)) (eval-when (load eval) - (defconstant |G-axclique_string_305639517| (cons #'H-String nil)) - (defconstant |G-axclique_integer_685864888| (cons #'H-integer nil)) - (defconstant |G-axclique_error_011667951| (cons #'H-error nil))) + (defconstant |G-axclique_string_305639517| (cons #'H-String nil)) + (defconstant |G-axclique_integer_685864888| (cons #'H-integer nil)) + (defconstant |G-axclique_error_011667951| (cons #'H-error nil))) ;; Literals should be null-terminated strings @@ -86,7 +65,7 @@ (defmacro |AXL-LiteralToDoubleFloat| (l) `(read-from-string ,l nil (|DFlo0|) - :preserve-whitespace t)) + :preserve-whitespace t)) (defmacro |AXL-LiteralToString| (l) `(subseq ,l 0 (- (length ,l) 1))) @@ -105,15 +84,15 @@ (defmacro |AXL-plusInteger| (a b) `(the |BInt| (+ (the |BInt| ,a) - (the |BInt| ,b)))) + (the |BInt| ,b)))) (defmacro |AXL-minusInteger| (a b) `(the |BInt| (- (the |BInt| ,a) - (the |BInt| ,b)))) + (the |BInt| ,b)))) (defmacro |AXL-timesInteger| (a b) `(the |BInt| (* (the |BInt| ,a) - (the |BInt| ,b)))) + (the |BInt| ,b)))) (defmacro |AXL-eqInteger| (a b) `(= (the |BInt| ,a) @@ -137,15 +116,15 @@ (defmacro |AXL-plusSingleInteger| (a b) `(the |SInt| (+ (the |SInt| ,a) - (the |SInt| ,b)))) + (the |SInt| ,b)))) (defmacro |AXL-minusSingleInteger| (a b) `(the |SInt| (- (the |SInt| ,a) - (the |SInt| ,b)))) + (the |SInt| ,b)))) (defmacro |AXL-timesSingleInteger| (a b) `(the |SInt| (* (the |SInt| ,a) - (the |SInt| ,b)))) + (the |SInt| ,b)))) (defmacro |AXL-eqSingleInteger| (a b) `(= (the |SInt| ,a) @@ -222,9 +201,3 @@ (defun |AXL-spitSInt| (x) (print x)) -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/interp/bits.lisp b/src/interp/bits.lisp index d6f26708..efff9357 100644 --- a/src/interp/bits.lisp +++ b/src/interp/bits.lisp @@ -1,5 +1,7 @@ ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are diff --git a/src/interp/boot-pkg.lisp b/src/interp/boot-pkg.lisp index 596b2c15..3d4dc57c 100644 --- a/src/interp/boot-pkg.lisp +++ b/src/interp/boot-pkg.lisp @@ -1,5 +1,7 @@ ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are diff --git a/src/interp/bootlex.lisp b/src/interp/bootlex.lisp index 35be2eaa..6fae9513 100644 --- a/src/interp/bootlex.lisp +++ b/src/interp/bootlex.lisp @@ -1,5 +1,7 @@ ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are diff --git a/src/interp/cfuns.lisp.pamphlet b/src/interp/cfuns.lisp index d9bf72d5..5e0ab54d 100644 --- a/src/interp/cfuns.lisp.pamphlet +++ b/src/interp/cfuns.lisp @@ -1,18 +1,7 @@ -\documentclass{article} -\usepackage{axiom} -\begin{document} -\title{\$SPAD/src/interp cfuns.lisp} -\author{Timothy Daly} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{License} -<<license>>= ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are @@ -42,9 +31,6 @@ ;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -@ -<<*>>= -<<license>> (in-package "BOOT") @@ -115,9 +101,3 @@ (defun |hashCombine| (x y) (system:|hashCombine| x y)) -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/interp/comp.lisp b/src/interp/comp.lisp index 66d56e7a..2c88d43f 100644 --- a/src/interp/comp.lisp +++ b/src/interp/comp.lisp @@ -1,5 +1,7 @@ ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are diff --git a/src/interp/daase.lisp.pamphlet b/src/interp/daase.lisp index 018e6758..3d6b715c 100644 --- a/src/interp/daase.lisp.pamphlet +++ b/src/interp/daase.lisp @@ -1,85 +1,7 @@ -\documentclass{article} -\usepackage{axiom} -\begin{document} -\title{\$SPAD/src/interp daase.lisp} -\author{Timothy Daly} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{Database structure} -In order to understand this program you need to understand some details -of the structure of the databases it reads. Axiom has 5 databases, -the interp.daase, operation.daase, category.daase, compress.daase, and -browse.daase. The compress.daase is special and does not follow the -normal database format. - -\subsection{KAF File Format} -This documentation refers to KAF files which are random access files. -NRLIB files are KAF files (look for NRLIB/index.KAF) -The format of a random access file is -\begin{verbatim} -byte-offset-of-key-table -first-entry -second-entry -... -last-entry -((key1 . first-entry-byte-address) - (key2 . second-entry-byte-address) - ... - (keyN . last-entry-byte-address)) -\end{verbatim} -The key table is a standard lisp alist. - -To open a database you fetch the first number, seek to that location, -and (read) which returns the key-data alist. To look up data you -index into the key-data alist, find the ith-entry-byte-address, -seek to that address, and (read). - -For instance, see src/share/algebra/USERS.DAASE/index.KAF - -One existing optimization is that if the data is a simple thing like a -symbol then the nth-entry-byte-address is replaced by immediate data. - -Another existing one is a compression algorithm applied to the -data so that the very long names don't take up so much space. -We could probably remove the compression algorithm as 64k is no -longer considered 'huge'. The database-abbreviation routine -handles this on read and write-compress handles this on write. -The squeeze routine is used to compress the keys, the unsqueeze -routine uncompresses them. Making these two routines disappear -should remove all of the compression. - -Indeed, a faster optimization is to simply read the whole database -into the image before it is saved. The system would be easier to -understand and the interpreter would be faster. - -The system uses another optimization: database contains a stamp -(consisting of offset to the main list and build time). Before -saving the image selected data is fetched to memory. When the -saved image starts it checks if the stamp of saved data matches -in-core data -- in case of agreement in-core data is used. -Parts of the datatabase which was not pre-loaded is still -(lazily) fetched from the filesystem. - -\subsection{Database Files} - -Database files are very similar to KAF files except that there -is an optimization (currently broken) which makes the first -item a pair of two numbers. The first number in the pair is -the offset of the key-value table, the second is a time stamp. -If the time stamp in the database matches the time stamp in -the image the database is not needed (since the internal hash -tables already contain all of the information). When the database -is built the time stamp is saved in both the gcl image and the -database. - -\section{License} -<<license>>= ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are @@ -109,9 +31,70 @@ database. ;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -@ -<<*>>= -<<license>> + +;; In order to understand this program you need to understand some details +;; of the structure of the databases it reads. Axiom has 5 databases, +;; the interp.daase, operation.daase, category.daase, compress.daase, and +;; browse.daase. The compress.daase is special and does not follow the +;; normal database format. +;; +;; This documentation refers to KAF files which are random access files. +;; NRLIB files are KAF files (look for NRLIB/index.KAF) +;; The format of a random access file is +;; \begin{verbatim} +;; byte-offset-of-key-table +;; first-entry +;; second-entry +;; ... +;; last-entry +;; ((key1 . first-entry-byte-address) +;; (key2 . second-entry-byte-address) +;; ... +;; (keyN . last-entry-byte-address)) +;; \end{verbatim} +;; The key table is a standard lisp alist. +;; +;; To open a database you fetch the first number, seek to that location, +;; and (read) which returns the key-data alist. To look up data you +;; index into the key-data alist, find the ith-entry-byte-address, +;; seek to that address, and (read). +;; +;; For instance, see src/share/algebra/USERS.DAASE/index.KAF +;; +;; One existing optimization is that if the data is a simple thing like a +;; symbol then the nth-entry-byte-address is replaced by immediate data. +;; +;; Another existing one is a compression algorithm applied to the +;; data so that the very long names don't take up so much space. +;; We could probably remove the compression algorithm as 64k is no +;; longer considered 'huge'. The database-abbreviation routine +;; handles this on read and write-compress handles this on write. +;; The squeeze routine is used to compress the keys, the unsqueeze +;; routine uncompresses them. Making these two routines disappear +;; should remove all of the compression. +;; +;; Indeed, a faster optimization is to simply read the whole database +;; into the image before it is saved. The system would be easier to +;; understand and the interpreter would be faster. +;; +;; The system uses another optimization: database contains a stamp +;; (consisting of offset to the main list and build time). Before +;; saving the image selected data is fetched to memory. When the +;; saved image starts it checks if the stamp of saved data matches +;; in-core data -- in case of agreement in-core data is used. +;; Parts of the datatabase which was not pre-loaded is still +;; (lazily) fetched from the filesystem. +;; +;; Database files are very similar to KAF files except that there +;; is an optimization (currently broken) which makes the first +;; item a pair of two numbers. The first number in the pair is +;; the offset of the key-value table, the second is a time stamp. +;; If the time stamp in the database matches the time stamp in +;; the image the database is not needed (since the internal hash +;; tables already contain all of the information). When the database +;; is built the time stamp is saved in both the gcl image and the +;; database. + ;;TTT 7/2/97 ; Regarding the 'ancestors field for a category: At database build @@ -438,17 +421,17 @@ database. ; (constructor-name ; operationalist ; constructormodemap -; modemaps -- this should not be needed. eliminate it. -; object -- the name of the object file to load for this con. +; modemaps -- this should not be needed. eliminate it. +; object -- the name of the object file to load for this con. ; constructorcategory -- note that this info is the cadar of the -; constructormodemap for domains and packages so it is stored -; as NIL for them. it is valid for categories. -; niladic -- t or nil directly +; constructormodemap for domains and packages so it is stored +; as NIL for them. it is valid for categories. +; niladic -- t or nil directly ; unused -; cosig -- kept directly -; constructorkind -- kept directly -; defaultdomain -- a short list, for %i -; ancestors -- used to compute new category updates +; cosig -- kept directly +; constructorkind -- kept directly +; defaultdomain -- a short list, for %i +; ancestors -- used to compute new category updates ; ) (defun interpOpen () "open the interpreter database and hash the keys" @@ -759,7 +742,7 @@ database. (when (setq struct (get constructor 'database)) (setq data (database-dependents struct)))) (otherwise (warn "~%(GETDATABASE ~a ~a) failed~%" constructor key))) - (when (numberp data) ;fetch the real data + (when (numberp data) ;fetch the real data (when *miss* (format t "getdatabase miss: ~20a ~a~%" key constructor)) (file-position stream data) (setq data (unsqueeze (read stream))) @@ -788,19 +771,19 @@ database. (case key ; fixup the special cases (sourcefile (when (and data (string= (directory-namestring data) "") - (string= (pathname-type data) "spad")) + (string= (pathname-type data) "spad")) (setq data (concatenate 'string (|systemRootDirectory|) "/../../src/algebra/" data)))) (asharp? ; is this asharp code? (if (consp data) (setq data (cdr data)) (setq data nil))) - (object ; fix up system object pathname + (object ; fix up system object pathname (if (consp data) (setq data - (if (string= (directory-namestring (car data)) "") - (concatenate 'string (|systemRootDirectory|) "/algebra/" (car data) ".o") - (car data))) + (if (string= (directory-namestring (car data)) "") + (concatenate 'string (|systemRootDirectory|) "/algebra/" (car data) ".o") + (car data))) (when (and data (string= (directory-namestring data) "")) (setq data (concatenate 'string (|systemRootDirectory|) "/algebra/" data ".o"))))))) data)) @@ -892,14 +875,14 @@ database. (mapcan #'(lambda (f) (when (string-equal (pathname-type f) "NRLIB") (list (concatenate 'string (namestring f) "/" - *index-filename*)))) allfiles) + *index-filename*)))) allfiles) (mapcan #'(lambda (f) (when (string= (pathname-type f) "asy") (push (pathname-name f) skipasos) (list (namestring f)))) allfiles) (mapcan #'(lambda (f) (when (and (string= (pathname-type f) "ao") - (not (member (pathname-name f) skipasos :test #'string=))) + (not (member (pathname-name f) skipasos :test #'string=))) (list (namestring f)))) allfiles) ;; At the moment we will only look for user.lib: others are taken care @@ -922,7 +905,7 @@ database. (when dir (multiple-value-setq (nrlibs asys asos libs) (processDir dir thisdir))) (dolist (file filelist) (let ((filename (pathname-name file)) - (namedir (directory-namestring file))) + (namedir (directory-namestring file))) (unless namedir (setq thisdir (concatenate 'string thisdir "/"))) (cond ((setq file (probe-file @@ -970,19 +953,19 @@ database. (setq key (first domain)) (setq alist (rest domain)) (setq asharp-name - (foam::axiomxl-global-name (pathname-name object) key - (lassoc '|typeCode| alist))) + (foam::axiomxl-global-name (pathname-name object) key + (lassoc '|typeCode| alist))) (if (< (length alist) 4) ;we have a naked function object - (let ((opname key) - (modemap (car (LASSOC '|modemaps| alist))) ) - (setq oldmaps (getdatabase opname 'operation)) - (setf (gethash opname *operation-hash*) - (adjoin (subst asharp-name opname (cdr modemap)) - oldmaps :test #'equal)) - (asharpMkAutoloadFunction object asharp-name)) + (let ((opname key) + (modemap (car (LASSOC '|modemaps| alist))) ) + (setq oldmaps (getdatabase opname 'operation)) + (setf (gethash opname *operation-hash*) + (adjoin (subst asharp-name opname (cdr modemap)) + oldmaps :test #'equal)) + (asharpMkAutoloadFunction object asharp-name)) (when (if (null only) (not (eq key '%%)) (member key only)) - (setq *allOperations* nil) ; force this to recompute - (setq oldmaps (getdatabase key 'modemaps)) + (setq *allOperations* nil) ; force this to recompute + (setq oldmaps (getdatabase key 'modemaps)) (setq dbstruct (make-database)) (setf (get key 'database) dbstruct) (setq *allconstructors* (adjoin key *allconstructors*)) @@ -993,10 +976,10 @@ database. (setf (database-constructormodemap dbstruct) (fetchdata alist "constructorModemap")) (unless (setf (database-abbreviation dbstruct) - (fetchdata alist "abbreviation")) - (setf (database-abbreviation dbstruct) key)) ; default - (setq abbrev (database-abbreviation dbstruct)) - (setf (get abbrev 'abbreviationfor) key) + (fetchdata alist "abbreviation")) + (setf (database-abbreviation dbstruct) key)) ; default + (setq abbrev (database-abbreviation dbstruct)) + (setf (get abbrev 'abbreviationfor) key) (setf (database-constructorcategory dbstruct) (fetchdata alist "constructorCategory")) (setf (database-attributes dbstruct) @@ -1013,23 +996,23 @@ database. (fetchdata alist "predicates")) (setf (database-niladic dbstruct) (fetchdata alist "NILADIC")) - (addoperations key oldmaps) - (setq cname (|opOf| (database-constructorform dbstruct))) - (setq kind (database-constructorkind dbstruct)) - (if (null noexpose) (|setExposeAddConstr| (cons cname nil))) - (unless make-database? + (addoperations key oldmaps) + (setq cname (|opOf| (database-constructorform dbstruct))) + (setq kind (database-constructorkind dbstruct)) + (if (null noexpose) (|setExposeAddConstr| (cons cname nil))) + (unless make-database? (|updateDatabase| key cname systemdir?) ;makes many hashtables??? (|installConstructor| cname kind) ;; following can break category database build - (if (eq kind '|category|) - (setf (database-ancestors dbstruct) - (fetchdata alist "ancestors"))) - (if (eq kind '|domain|) - (dolist (pair (cdr (assoc "ancestors" alist :test #'string=))) - (setf (gethash (cons cname (caar pair)) *hascategory-hash*) - (cdr pair)))) - (if |$InteractiveMode| (setq |$CategoryFrame| |$EmptyEnvironment|))) - (setf (database-cosig dbstruct) + (if (eq kind '|category|) + (setf (database-ancestors dbstruct) + (fetchdata alist "ancestors"))) + (if (eq kind '|domain|) + (dolist (pair (cdr (assoc "ancestors" alist :test #'string=))) + (setf (gethash (cons cname (caar pair)) *hascategory-hash*) + (cdr pair)))) + (if |$InteractiveMode| (setq |$CategoryFrame| |$EmptyEnvironment|))) + (setf (database-cosig dbstruct) (cons nil (mapcar #'|categoryForm?| (cddar (database-constructormodemap dbstruct))))) (setf (database-object dbstruct) (cons object asharp-name)) @@ -1038,7 +1021,7 @@ database. (database-cosig dbstruct)) (asharpMkAutoLoadFunctor object cname asharp-name (database-cosig dbstruct))) - (|sayKeyedMsg| 'S2IU0001 (list cname object)))))))) + (|sayKeyedMsg| 'S2IU0001 (list cname object)))))))) (defun localnrlib (key nrlib object make-database? noexpose) "given a string pathname of an index.KAF and the object update the database" @@ -1062,7 +1045,7 @@ database. (setq *allconstructors* (adjoin key *allconstructors*)) (setf (get key 'database) dbstruct) ; store the struct, side-effect it... (setf (database-constructorform dbstruct) constructorform) - (setq *allOperations* nil) ; force this to recompute + (setq *allOperations* nil) ; force this to recompute (setf (database-object dbstruct) object) (setq abbrev (intern (pathname-name (first (last (pathname-directory object)))))) @@ -1094,7 +1077,7 @@ database. (unless make-database? (if (eq kind '|category|) (setf (database-ancestors dbstruct) - (SUBLISLIS |$FormalMapVariableList| (cdr constructorform) (fetchdata alist in "ancestors")))) + (SUBLISLIS |$FormalMapVariableList| (cdr constructorform) (fetchdata alist in "ancestors")))) (|updateDatabase| key key systemdir?) ;makes many hashtables??? (|installConstructor| key kind) ;used to be key cname ... (|updateCategoryTable| key kind) @@ -1183,12 +1166,12 @@ database. (list (list '|dir| (namestring (truename "./")) )) 'make-database) (dolist (dir dirlist) - (localdatabase nil - (list (list '|dir| - (namestring (probe-file - (format nil "./~a" - dir))))) - 'make-database)) + (localdatabase nil + (list (list '|dir| + (namestring (probe-file + (format nil "./~a" + dir))))) + 'make-database)) #+:AKCL (|mkTopicHashTable|) (setq |$constructorList| nil) ;; affects buildLibdb (|buildLibdb|) @@ -1209,37 +1192,37 @@ database. (dolist (con (|allConstructors|)) (let (dbstruct) (when (setq dbstruct (get con 'database)) - (setf (database-cosig dbstruct) - (cons nil (mapcar #'|categoryForm?| - (cddar (database-constructormodemap dbstruct))))) - (when (and (|categoryForm?| con) - (= (length (setq d (|domainsOf| (list con) NIL NIL))) 1)) - (setq d (caar d)) - (when (= (length d) (length (|getConstructorForm| con))) - (format t " ~a has a default domain of ~a~%" con (car d)) - (setf (database-defaultdomain dbstruct) (car d))))))) - ; note: genCategoryTable creates *ancestors-hash*. write-interpdb - ; does gethash calls into it rather than doing a getdatabase call. + (setf (database-cosig dbstruct) + (cons nil (mapcar #'|categoryForm?| + (cddar (database-constructormodemap dbstruct))))) + (when (and (|categoryForm?| con) + (= (length (setq d (|domainsOf| (list con) NIL NIL))) 1)) + (setq d (caar d)) + (when (= (length d) (length (|getConstructorForm| con))) + (format t " ~a has a default domain of ~a~%" con (car d)) + (setf (database-defaultdomain dbstruct) (car d))))))) + ; note: genCategoryTable creates *ancestors-hash*. write-interpdb + ; does gethash calls into it rather than doing a getdatabase call. (write-interpdb) #+:AKCL (write-warmdata) (create-initializers) (when (probe-file (final-name "compress")) - (delete-file (final-name "compress"))) + (delete-file (final-name "compress"))) (rename-file "compress.build" (final-name "compress")) (when (probe-file (final-name "interp")) - (delete-file (final-name "interp"))) + (delete-file (final-name "interp"))) (rename-file "interp.build" (final-name "interp")) (when (probe-file (final-name "operation")) - (delete-file (final-name "operation"))) + (delete-file (final-name "operation"))) (rename-file "operation.build" (final-name "operation")) (when (probe-file (final-name "browse")) - (delete-file (final-name "browse"))) + (delete-file (final-name "browse"))) (rename-file "browse.build" - (final-name "browse")) + (final-name "browse")) (when (probe-file (final-name "category")) - (delete-file (final-name "category"))) + (delete-file (final-name "category"))) (rename-file "category.build" - (final-name "category"))))) + (final-name "category"))))) (defun DaaseName (name erase?) (let (daase filename) @@ -1248,9 +1231,9 @@ database. (setq filename (concatenate 'string daase name)) (format t " Using local database ~a.." filename)) (setq filename (concatenate 'string - (|systemRootDirectory|) - "/algebra/" - name))) + (|systemRootDirectory|) + "/algebra/" + name))) (when erase? (system::system (concatenate 'string "rm -f " filename))) filename)) @@ -1266,16 +1249,6 @@ database. ;; (when erase? (system::system (concatenate 'string "rm -f " filename))) ;; filename)) -@ -\subsection{compress.daase} -The compress database is special. It contains a list of symbols. -The character string name of a symbol in the other databases is -represented by a negative number. To get the real symbol back you -take the absolute value of the number and use it as a byte index -into the compress database. In this way long symbol names become -short negative numbers. - -<<*>>= (defun compressOpen () (let (lst stamp pos) @@ -1300,7 +1273,7 @@ short negative numbers. (finish-output out) (setq masterpos (file-position out)) (setq compresslist - (append (|allConstructors|) (|allOperations|) *attributes*)) + (append (|allConstructors|) (|allOperations|) *attributes*)) (push "algebra" compresslist) (push "failed" compresslist) (push 'signature compresslist) @@ -1329,221 +1302,12 @@ short negative numbers. (finish-output out) (close out))) -@ -\subsubsection{interp.daase} -\begin{verbatim} - format of an entry in interp.daase: - (constructor-name - operationalist - constructormodemap - modemaps -- this should not be needed. eliminate it. - object -- the name of the object file to load for this con. - constructorcategory -- note that this info is the cadar of the - constructormodemap for domains and packages so it is stored - as NIL for them. it is valid for categories. - niladic -- t or nil directly - unused - cosig -- kept directly - constructorkind -- kept directly - defaultdomain -- a short list, for %i - ancestors -- used to compute new category updates - ) -\end{verbatim} - -Here I'll try to outline the interp database write procedure - -\begin{verbatim} -(defun write-interpdb () - "build interp.daase from hash tables" - (declare (special *ancestors-hash*)) - (let (opalistpos modemapspos cmodemappos master masterpos obj *print-pretty* - concategory categorypos kind niladic cosig abbrev defaultdomain - ancestors ancestorspos out) - (declare (special *print-pretty*)) - (print "building interp.daase") - -; 1. We open the file we're going to create - - (setq out (open "interp.build" :direction :output)) - -; 2. We reserve some space at the top of the file for the key-time pair -; We will overwrite these spaces just before we close the file. - - (princ " " out) - -; 3. Make sure we write it out - (finish-output out) - -; 4. For every constructor in the system we write the parts: - - (dolist (constructor (|allConstructors|)) - (let (struct) - -; 4a. Each constructor has a property list. A property list is a list -; of (key . value) pairs. The property we want is called 'database -; so there is a ('database . something) in the property list - - (setq struct (get constructor 'database)) - -; 5 We write the "operationsalist" -; 5a. We remember the current file position before we write -; We need this information so we can seek to this position on read - - (setq opalistpos (file-position out)) - -; 5b. We get the "operationalist", compress it, and write it out - - (print (squeeze (database-operationalist struct)) out) - -; 5c. We make sure it was written - - (finish-output out) - -; 6 We write the "constructormodemap" -; 6a. We remember the current file position before we write - - (setq cmodemappos (file-position out)) - -; 6b. We get the "constructormodemap", compress it, and write it out - - (print (squeeze (database-constructormodemap struct)) out) - -; 6c. We make sure it was written - - (finish-output out) - -; 7. We write the "modemaps" -; 7a. We remember the current file position before we write - - (setq modemapspos (file-position out)) - -; 7b. We get the "modemaps", compress it, and write it out - - (print (squeeze (database-modemaps struct)) out) - -; 7c. We make sure it was written - - (finish-output out) - -; 8. We remember source file pathnames in the obj variable - - (if (consp (database-object struct)) ; if asharp code ... - (setq obj - (cons (pathname-name (car (database-object struct))) - (cdr (database-object struct)))) - (setq obj - (pathname-name - (first (last (pathname-directory (database-object struct))))))) - -; 9. We write the "constructorcategory", if it is a category, else nil -; 9a. Get the constructorcategory and compress it - - (setq concategory (squeeze (database-constructorcategory struct))) - -; 9b. If we have any data we write it out, else we don't write it -; Note that if there is no data then the byte index for the -; constructorcatagory will not be a number but will be nil. - - (if concategory ; if category then write data else write nil - (progn - (setq categorypos (file-position out)) - (print concategory out) - (finish-output out)) - (setq categorypos nil)) - -; 10. We get a set of properties which are kept as "immediate" data -; This means that the key table will hold this data directly -; rather than as a byte index into the file. -; 10a. niladic data - - (setq niladic (database-niladic struct)) - -; 10b. abbreviation data (e.g. POLY for polynomial) - - (setq abbrev (database-abbreviation struct)) - -; 10c. cosig data - - (setq cosig (database-cosig struct)) - -; 10d. kind data - - (setq kind (database-constructorkind struct)) - -; 10e. defaultdomain data - - (setq defaultdomain (database-defaultdomain struct)) - -; 11. The ancestor data might exist. If it does we fetch it, -; compress it, and write it out. If it does not we place -; and immediate value of nil in the key-value table - - (setq ancestors (squeeze (gethash constructor *ancestors-hash*))) ;cattable.boot - (if ancestors - (progn - (setq ancestorspos (file-position out)) - (print ancestors out) - (finish-output out)) - (setq ancestorspos nil)) - -; 12. "master" is an alist. Each element of the alist has the name of -; the constructor and all of the above attributes. When the loop -; finishes we will have constructed all of the data for the key-value -; table - - (push (list constructor opalistpos cmodemappos modemapspos - obj categorypos niladic abbrev cosig kind defaultdomain - ancestorspos) master))) - -; 13. The loop is done, we make sure all of the data is written - - (finish-output out) - -; 14. We remember where the key-value table will be written in the file - - (setq masterpos (file-position out)) - -; 15. We compress and print the key-value table - - (print (mapcar #'squeeze master) out) - -; 16. We make sure we write the table - - (finish-output out) - -; 17. We go to the top of the file - - (file-position out 0) - -; 18. We write out the (master-byte-position . universal-time) pair -; Note that if the universal-time value matches the value of -; *interp-stream-stamp* then there is no reason to read the -; interp database because all of the data is already cached in -; the image. This happens if you build a database and immediatly -; save the image. The saved image already has the data since we -; just wrote it out. If the *interp-stream-stamp* and the database -; time stamp differ we "reread" the database on startup. Actually -; we just open the database and fetch as needed. You can see fetches -; by setting the *miss* variable non-nil. - - (print (cons masterpos (get-universal-time)) out) - -; 19. We make sure we write it. - - (finish-output out) - -; 20 And we are done - - (close out))) -\end{verbatim} - -<<*>>= (defun write-interpdb () "build interp.daase from hash tables" (declare (special *ancestors-hash*)) (let (opalistpos modemapspos cmodemappos master masterpos obj *print-pretty* - concategory categorypos kind niladic cosig abbrev defaultdomain - ancestors ancestorspos out) + concategory categorypos kind niladic cosig abbrev defaultdomain + ancestors ancestorspos out) (declare (special *print-pretty*)) (print "building interp.daase") (setq out (open "interp.build" :direction :output)) @@ -1599,29 +1363,6 @@ Here I'll try to outline the interp database write procedure (finish-output out) (close out))) -@ -\subsubsection{browse.daase} -\begin{verbatim} - format of an entry in browse.daase: - ( constructorname - sourcefile - constructorform - documentation - attributes - predicates - ) -\end{verbatim} -This is essentially the same overall process as write-interpdb. - -We reserve some space for the (key-table-byte-position . timestamp) - -We loop across the list of constructors dumping the data and -remembering the byte positions in a key-value pair table. - -We dump the final key-value pair table, write the byte position and -time stamp at the top of the file and close the file. - -<<*>>= (defun write-browsedb () "make browse.daase from hash tables" (let (master masterpos src formpos docpos attpos predpos *print-pretty* out) @@ -1657,11 +1398,6 @@ time stamp at the top of the file and close the file. (finish-output out) (close out))) -@ -\subsubsection{category.daase} -This is a single table of category hash table information, dumped in the -database format. -<<*>>= (defun write-categorydb () "make category.daase from scratch. contains the *hasCategory-hash* table" (let (out master pos *print-pretty*) @@ -1690,12 +1426,12 @@ database format. (defun unsqueeze (expr) (cond ((atom expr) - (cond ((and (numberp expr) (<= expr 0)) - (svref *compressVector* (- expr))) - (t expr))) - (t (rplaca expr (unsqueeze (car expr))) - (rplacd expr (unsqueeze (cdr expr))) - expr))) + (cond ((and (numberp expr) (<= expr 0)) + (svref *compressVector* (- expr))) + (t expr))) + (t (rplaca expr (unsqueeze (car expr))) + (rplacd expr (unsqueeze (cdr expr))) + expr))) (defun squeeze (expr) (let (leaves pos (bound (length *compressvector*))) @@ -1718,11 +1454,6 @@ database format. (nsubst (- pos) leaf expr))) expr))) -@ -\subsubsection{operation.daase} -This is a single table of operations hash table information, dumped in the -database format. -<<*>>= (defun write-operationdb () (let (pos master out) (declare (special leaves)) @@ -1772,8 +1503,8 @@ database format. ;; (dolist (con (|allConstructors|)) ;; (let ((sourcefile (getdatabase con 'sourcefile))) ;; (if sourcefile -;; (set (foam::axiomxl-file-init-name (pathname-name sourcefile)) -;; NOPfuncall)))) +;; (set (foam::axiomxl-file-init-name (pathname-name sourcefile)) +;; NOPfuncall)))) (set (foam::axiomxl-file-init-name "axiom") NOPfuncall) ;; (set (foam::axiomxl-file-init-name "axclique") NOPfuncall) (set (foam::axiomxl-file-init-name "filecliq") NOPfuncall) @@ -1814,8 +1545,8 @@ database format. (let ((ccc (gensym)) (cfun (gensym)) (cenv (gensym))) `(let ((,ccc ,fun)) (let ((,cfun (|ClosFun| ,ccc)) - (,cenv (|ClosEnv| ,ccc))) - (funcall ,cfun ,@args ,cenv ))))) + (,cenv (|ClosEnv| ,ccc))) + (funcall ,cfun ,@args ,cenv ))))) (defmacro |ClosFun| (x) `(car ,x)) (defmacro |ClosEnv| (x) `(cdr ,x)) @@ -1845,7 +1576,7 @@ database format. (defun wrapDomArgs (obj type?) (cond ((not type?) obj) - (t (|makeOldAxiomDispatchDomain| obj)))) + (t (|makeOldAxiomDispatchDomain| obj)))) ;; CCL doesn't have closures, so we use an intermediate function in ;; asharpMkAutoLoadFunctor. @@ -1921,15 +1652,15 @@ database format. (let ((func (getconstructor (eval (file-getter-name file)) asharp-name))) (setf (symbol-function packname) (if (vectorp (car func)) - #'(lambda (self) - (|CCall| (elt (car func) 5) (cdr func) (wrapDomArgs self t))) ;; constant category - #'(lambda (self &rest args) - (let ((precat - (apply (|ClosFun| func) - (nconc - (mapcar #'wrapDomArgs args (cdr cosig)) - (list (|ClosEnv| func)))))) - (|CCall| (elt (car precat) 5) (cdr precat) (wrapDomArgs self t)))))) + #'(lambda (self) + (|CCall| (elt (car func) 5) (cdr func) (wrapDomArgs self t))) ;; constant category + #'(lambda (self &rest args) + (let ((precat + (apply (|ClosFun| func) + (nconc + (mapcar #'wrapDomArgs args (cdr cosig)) + (list (|ClosEnv| func)))))) + (|CCall| (elt (car precat) 5) (cdr precat) (wrapDomArgs self t)))))) (apply packname self args)))))) #+:CCL @@ -1947,10 +1678,10 @@ database format. (set asharpname (cons #'(lambda (&rest l) - (let ((args (butlast l)) - (func (getconstructor (eval (file-getter-name file)) asharpname))) - (apply (car func) (append args (list (cdr func)))))) - ()))) + (let ((args (butlast l)) + (func (getconstructor (eval (file-getter-name file)) asharpname))) + (apply (car func) (append args (list (cdr func)))))) + ()))) ; this function will return the internal name of the file object getter @@ -1963,11 +1694,11 @@ database format. (defun set-file-getter (filename) (let ((getter-name (file-getter-name filename))) (set getter-name - (cons #'init-file-getter (cons getter-name filename))))) + (cons #'init-file-getter (cons getter-name filename))))) (defun init-file-getter (env) (let ((getter-name (car env)) - (filename (cdr env))) + (filename (cdr env))) #-:CCL (load filename) #+:CCL @@ -1977,12 +1708,12 @@ database format. (defun set-lib-file-getter (filename cname) (let ((getter-name (file-getter-name filename))) (set getter-name - (cons #'init-lib-file-getter (cons getter-name cname))))) + (cons #'init-lib-file-getter (cons getter-name cname))))) (defun init-lib-file-getter (env) (let* ((getter-name (car env)) - (cname (cdr env)) - (filename (getdatabase cname 'object))) + (cname (cdr env)) + (filename (getdatabase cname 'object))) #-:CCL (load filename) #+:CCL @@ -1992,36 +1723,36 @@ database format. ;; following 2 functions are called by file-exports and file-imports macros (defun foam::process-import-entry (entry) (let* ((asharpname (car entry)) - (stringname (cadr entry)) - (hcode (caddr entry)) - (libname (cadddr entry)) - (bootname (intern stringname 'boot))) + (stringname (cadr entry)) + (hcode (caddr entry)) + (libname (cadddr entry)) + (bootname (intern stringname 'boot))) (declare (ignore libname)) (if (and (eq hcode 'foam-user::|initializer|) (not (boundp asharpname))) - (error (format nil "AxiomXL file ~s is missing!" stringname))) + (error (format nil "AxiomXL file ~s is missing!" stringname))) (unless (or (not (numberp hcode)) (zerop hcode) (boundp asharpname)) - (when (|constructor?| bootname) - (set asharpname - (if (getdatabase bootname 'niladic) - (|makeLazyOldAxiomDispatchDomain| (list bootname)) - (cons '|runOldAxiomFunctor| bootname)))) - (when (|attribute?| bootname) - (set asharpname (|makeLazyOldAxiomDispatchDomain| bootname)))))) - - + (when (|constructor?| bootname) + (set asharpname + (if (getdatabase bootname 'niladic) + (|makeLazyOldAxiomDispatchDomain| (list bootname)) + (cons '|runOldAxiomFunctor| bootname)))) + (when (|attribute?| bootname) + (set asharpname (|makeLazyOldAxiomDispatchDomain| bootname)))))) + + ;(defun foam::process-export-entry (entry) ; (let* ((asharpname (car entry)) -; (stringname (cadr entry)) -; (hcode (caddr entry)) -; (libname (cadddr entry)) -; (bootname (intern stringname 'boot))) +; (stringname (cadr entry)) +; (hcode (caddr entry)) +; (libname (cadddr entry)) +; (bootname (intern stringname 'boot))) ; (declare (ignore libname)) ; (when (numberp hcode) -; (setf (get bootname 'asharp-name) -; (cons (cons *this-file* asharpname) -; (get bootname 'asharp-name))) -; ))) +; (setf (get bootname 'asharp-name) +; (cons (cons *this-file* asharpname) +; (get bootname 'asharp-name))) +; ))) @@ -2029,9 +1760,3 @@ database format. -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/interp/debug.lisp.pamphlet b/src/interp/debug.lisp index b4ceeed3..88896531 100644 --- a/src/interp/debug.lisp.pamphlet +++ b/src/interp/debug.lisp @@ -1,80 +1,7 @@ -%% Oh Emacs, this is a -*- Lisp -*- file despite apperance. -\documentclass{article} -\usepackage{axiom} - -\title{\File{src/interp/debug.lisp} Pamphlet} -\author{Timothy Daly} - -\begin{document} -\maketitle - -\begin{abstract} -\end{abstract} - -\tableofcontents -\eject - -\section{interrupt} - -A "resumable" break loop for use in trace etc. Unfortunately this -only works for CCL. We need to define a Common Lisp version. For -now the function is defined but does nothing. -<<interrupt>>= -#-:CCL -(defun interrupt (&rest ignore)) - -#+:CCL -(defun interrupt (&rest ignore) - (prog (prompt ifile ofile u v) - (setq ifile (rds *debug-io*)) - (setq ofile (wrs *debug-io*)) - (setq prompt (setpchar "Break loop (:? for help)> ")) -top (setq u (read)) - (cond - ((equal u ':x) (go exit)) - ((equal u ':r) (go resume)) - ((equal u ':q) - (progn (lisp::enable-backtrace nil) - (princ "Backtrace now disabled") - (terpri))) - ((equal u ':v) - (progn (lisp::enable-backtrace t) - (princ "Backtrace now enabled") - (terpri))) - ((equal u ':?) - (progn - (princ ":Q disables backtrace") - (terpri) - (princ ":V enables backtrace") - (terpri) - (princ ":R resumes from break") - (terpri) - (princ ":X exits from break loop") - (terpri) - (princ "else enter LISP expressions for evaluation") - (terpri))) - ((equal u #\eof) - (go exit)) - (t (progn - (setq v (errorset u nil nil)) - (if (listp v) (progn (princ "=> ") (prinl (car v)) (terpri))))) ) - (go top) -resume (rds ifile) - (wrs ofile) - (setpchar prompt) - (return nil) -exit (rds ifile) - (wrs ofile) - (setpchar prompt) - (lisp::unwind))) - -@ - -\section{License} - -<<license>>= ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are @@ -104,11 +31,14 @@ exit (rds ifile) ;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -@ -<<*>>= -<<license>> -;;; @(#)debug.lisp 2.5 90/02/15 10:27:33 + +;; A "resumable" break loop for use in trace etc. Unfortunately this +;; only works for CCL. We need to define a Common Lisp version. For +;; now the function is defined but does nothing. + + +;;; @(#)debug.lisp 2.5 90/02/15 10:27:33 ; NAME: Debugging Package ; PURPOSE: Debugging hooks for Boot code @@ -141,7 +71,7 @@ exit (rds ifile) (MAKEPROP 'SPAD '/TRAN '/TRANSPAD) (defmacro |/C,LIB| (&rest L &aux optionlist /editfile - ($prettyprint 't) ($reportCompilation 't)) + ($prettyprint 't) ($reportCompilation 't)) (declare (special optionlist /editfile $prettyprint $reportComilation)) `',(|compileConstructorLib| L (/COMP) NIL NIL)) @@ -182,7 +112,7 @@ exit (rds ifile) (SETQ OUTSTREAM (if TO (DEFSTREAM TO 'OUTPUT) CUROUTSTREAM)) (RETURN (mapcar #'(lambda (fn) (/D-2 FN INFILE OUTSTREAM OP EFLG TFLG)) - (or fnl (list /fn))))))) + (or fnl (list /fn))))))) (DEFUN |/D,2,LIB| (FN INFILE CUROUTSTREAM OP EDITFLAG TRACEFLAG) (declare (special CUROUTSTREAM)) @@ -194,38 +124,38 @@ exit (rds ifile) (DEFUN /D-2 (FN INFILE OUTPUTSTREAM OP EDITFLAG TRACEFLAG) (declare (special OUTPUTSTREAM)) (PROG (FT oft SFN X EDINFILE FILE DEF KEY RECNO U W SOURCEFILES - ECHOMETA SINGLINEMODE XCAPE XTOKENREADER INPUTSTREAM SPADERRORSTREAM - ISID NBLNK COMMENTCHR $TOKSTACK (/SOURCEFILES |$sourceFiles|) - METAKEYLST DEFINITION_NAME (|$sourceFileTypes| '(|spad| |boot| |lisp| |lsp| |meta|)) - ($FUNCTION FN) $BOOT $NEWSPAD $LINESTACK $LINENUMBER STACK STACKX BACK OK - TRAPFLAG |$InteractiveMode| TOK COUNT ERRCOL COLUMN *QUERY CHR LINE - (*COMP370-APPLY* (if (eq op 'define) #'eval-defun #'compile-defun))) - (declare (special ECHOMETA SINGLINEMODE XCAPE XTOKENREADER INPUTSTREAM - SPADERRORSTREAM ISID NBLNK COMMENTCHR $TOKSTACK /SOURCEFILES - METAKEYLST DEFINITION_NAME |$sourceFileTypes| - $FUNCTION $BOOT $NEWSPAD $LINESTACK $LINENUMBER STACK STACKX BACK OK - TRAPFLAG |$InteractiveMode| TOK COUNT ERRCOL COLUMN *QUERY CHR LINE)) + ECHOMETA SINGLINEMODE XCAPE XTOKENREADER INPUTSTREAM SPADERRORSTREAM + ISID NBLNK COMMENTCHR $TOKSTACK (/SOURCEFILES |$sourceFiles|) + METAKEYLST DEFINITION_NAME (|$sourceFileTypes| '(|spad| |boot| |lisp| |lsp| |meta|)) + ($FUNCTION FN) $BOOT $NEWSPAD $LINESTACK $LINENUMBER STACK STACKX BACK OK + TRAPFLAG |$InteractiveMode| TOK COUNT ERRCOL COLUMN *QUERY CHR LINE + (*COMP370-APPLY* (if (eq op 'define) #'eval-defun #'compile-defun))) + (declare (special ECHOMETA SINGLINEMODE XCAPE XTOKENREADER INPUTSTREAM + SPADERRORSTREAM ISID NBLNK COMMENTCHR $TOKSTACK /SOURCEFILES + METAKEYLST DEFINITION_NAME |$sourceFileTypes| + $FUNCTION $BOOT $NEWSPAD $LINESTACK $LINENUMBER STACK STACKX BACK OK + TRAPFLAG |$InteractiveMode| TOK COUNT ERRCOL COLUMN *QUERY CHR LINE)) (if (PAIRP FN) (SETQ FN (QCAR FN))) (SETQ INFILE (OR INFILE (|getFunctionSourceFile| FN))) - ;; $FUNCTION is freely set in getFunctionSourceFile - (IF (PAIRP $FUNCTION) (SETQ $FUNCTION (QCAR $FUNCTION))) + ;; $FUNCTION is freely set in getFunctionSourceFile + (IF (PAIRP $FUNCTION) (SETQ $FUNCTION (QCAR $FUNCTION))) (SETQ FN $FUNCTION) (SETQ /FN $FUNCTION) LOOP (SETQ SOURCEFILES (cond ( INFILE - (SETQ /SOURCEFILES (CONS INFILE (REMOVE INFILE /SOURCEFILES))) - (LIST INFILE)) - ( /EDITFILE - (|insert| (|pathname| /EDITFILE) /SOURCEFILES)) - ( 't /SOURCEFILES))) + (SETQ /SOURCEFILES (CONS INFILE (REMOVE INFILE /SOURCEFILES))) + (LIST INFILE)) + ( /EDITFILE + (|insert| (|pathname| /EDITFILE) /SOURCEFILES)) + ( 't /SOURCEFILES))) (SETQ RECNO (dolist (file sourcefiles) (SETQ INPUTSTREAM (DEFSTREAM FILE 'INPUT)) ;;?(REMFLAG S-SPADKEY 'KEY) ; hack !! - (SETQ FT (|pathnameType| FILE)) - (SETQ oft (|object2Identifier| (UPCASE FT))) - (SETQ XCAPE (OR (GET oft '/XCAPE) #\|)) + (SETQ FT (|pathnameType| FILE)) + (SETQ oft (|object2Identifier| (UPCASE FT))) + (SETQ XCAPE (OR (GET oft '/XCAPE) #\|)) (SETQ COMMENTCHR (GET oft '/COMMENTCHR)) (SETQ XTOKENREADER (OR (GET oft '/NXTTOK) 'METATOK)) (SETQ DEFINITION_NAME FN) @@ -238,7 +168,7 @@ exit (rds ifile) (PNAME FN))) (SETQ SFN (GET oFT '/READFUN)) (SETQ RECNO (/LOCATE FN KEY FILE 0)) - (SHUT INPUTSTREAM) + (SHUT INPUTSTREAM) (cond ((NUMBERP RECNO) (SETQ /SOURCEFILES (CONS FILE (REMOVE FILE /SOURCEFILES))) (SETQ INFILE FILE) @@ -247,9 +177,9 @@ exit (rds ifile) (if (SETQ INFILE (/MKINFILENAM '(NIL))) (GO LOOP) (UNWIND))) (TERPRI) (TERPRI) - (SETQ INFILE (|pathname| INFILE)) - (COND - ( EDITFLAG + (SETQ INFILE (|pathname| INFILE)) + (COND + ( EDITFLAG ;;%% next form is used because $FINDFILE seems to screw up ;;%% sometimes. The stream is opened and closed several times ;;%% in case the filemode has changed during editing. @@ -265,81 +195,81 @@ exit (rds ifile) (STRINGIMAGE $LINENUMBER))) (SHUT INPUTSTREAM) ;(COND - ; ( (EQ (READ ERRORINSTREAM) 'ABORTPROCESS) - ; (RETURN 'ABORT) ) ) + ; ( (EQ (READ ERRORINSTREAM) 'ABORTPROCESS) + ; (RETURN 'ABORT) ) ) ;;%% next is done in case the diskmode changed ;;(SETQ INFILE (|pathname| (IFCAR - ;; (QSORT ($LISTFILE INFILE))))) + ;; (QSORT ($LISTFILE INFILE))))) (SETQ INPUTSTREAM (DEFSTREAM INFILE 'INPUT)) (SETQ RECNO (/LOCATE FN KEY INFILE RECNO)) - - (COND ((NOT RECNO) - (|sayBrightly| (LIST " Warning: function" "%b" /FN "%d" - "was not found in the file" "%l" " " "%b" - (|namestring| INFILE) "%d" "after editing.")) - (RETURN NIL))) - ;; next is done in case the diskmode changed - (SHUT INPUTSTREAM) )) - ;;(SETQ INFILE (|pathname| (IFCAR ($LISTFILE INFILE)))) - (SETQ INFILE (make-input-filename INFILE)) - (MAKEPROP /FN 'DEFLOC - (CONS RECNO INFILE)) - (SETQ oft (|object2Identifier| (UPCASE (|pathnameType| INFILE)))) - (COND - ( (NULL OP) - (RETURN /FN) ) ) - (COND - ( (EQ TRACEFLAG 'TRACELET) - (RETURN (/TRACELET-1 (LIST FN) NIL)) ) ) - (SETQ INPUTSTREAM (DEFSTREAM INFILE 'INPUT)) - (|sayBrightly| - (LIST " Reading file" '|%b| (|namestring| INFILE) '|%d|)) - (TERPRI) - (SETQ $BOOT (EQ oft 'BOOT)) - (SETQ $NEWSPAD (OR $BOOT (EQ oft 'SPAD))) - (SETQ DEF - (COND - ( SFN - ;(+VOL 'METABASE) - (POINT RECNO INPUTSTREAM) - ;(SETQ CHR (CAR INPUTSTREAM)) - ;(SETQ ERRCOL 0) - ;(SETQ COUNT 0) - ;(SETQ COLUMN 0) - ;(SETQ TRAPFLAG NIL) - (SETQ OK 'T) - ;(NXTTOK) - ;(SETQ LINE (CURINPUTLINE)) - ;(SETQ SPADERRORSTREAM CUROUTSTREAM) - ;(AND /ECHO (SETQ ECHOMETA 'T) (PRINTEXP LINE) (TERPRI)) - ;(SFN) - (SETQ DEF (BOOT-PARSE-1 INPUTSTREAM)) - (SETQ DEBUGMODE 'YES) - (COND - ( (NULL OK) - (FUNCALL (GET oft 'SYNTAX_ERROR)) - NIL ) - ( 'T - DEF ) ) ) - ( 'T - (let* ((mode-line (read-line inputstream)) - (pacpos (search "package:" mode-line :test #'equalp)) - (endpos (search "-*-" mode-line :from-end t)) - (*package* *package*) - (newpac nil)) - (when pacpos - (setq newpac (read-from-string mode-line nil nil - :start (+ pacpos 8) - :end endpos)) - (setq *package* - (cond ((find-package newpac)) - (t *package*)))) - (POINT RECNO INPUTSTREAM) - (READ INPUTSTREAM))))) + + (COND ((NOT RECNO) + (|sayBrightly| (LIST " Warning: function" "%b" /FN "%d" + "was not found in the file" "%l" " " "%b" + (|namestring| INFILE) "%d" "after editing.")) + (RETURN NIL))) + ;; next is done in case the diskmode changed + (SHUT INPUTSTREAM) )) + ;;(SETQ INFILE (|pathname| (IFCAR ($LISTFILE INFILE)))) + (SETQ INFILE (make-input-filename INFILE)) + (MAKEPROP /FN 'DEFLOC + (CONS RECNO INFILE)) + (SETQ oft (|object2Identifier| (UPCASE (|pathnameType| INFILE)))) + (COND + ( (NULL OP) + (RETURN /FN) ) ) + (COND + ( (EQ TRACEFLAG 'TRACELET) + (RETURN (/TRACELET-1 (LIST FN) NIL)) ) ) + (SETQ INPUTSTREAM (DEFSTREAM INFILE 'INPUT)) + (|sayBrightly| + (LIST " Reading file" '|%b| (|namestring| INFILE) '|%d|)) + (TERPRI) + (SETQ $BOOT (EQ oft 'BOOT)) + (SETQ $NEWSPAD (OR $BOOT (EQ oft 'SPAD))) + (SETQ DEF + (COND + ( SFN + ;(+VOL 'METABASE) + (POINT RECNO INPUTSTREAM) + ;(SETQ CHR (CAR INPUTSTREAM)) + ;(SETQ ERRCOL 0) + ;(SETQ COUNT 0) + ;(SETQ COLUMN 0) + ;(SETQ TRAPFLAG NIL) + (SETQ OK 'T) + ;(NXTTOK) + ;(SETQ LINE (CURINPUTLINE)) + ;(SETQ SPADERRORSTREAM CUROUTSTREAM) + ;(AND /ECHO (SETQ ECHOMETA 'T) (PRINTEXP LINE) (TERPRI)) + ;(SFN) + (SETQ DEF (BOOT-PARSE-1 INPUTSTREAM)) + (SETQ DEBUGMODE 'YES) + (COND + ( (NULL OK) + (FUNCALL (GET oft 'SYNTAX_ERROR)) + NIL ) + ( 'T + DEF ) ) ) + ( 'T + (let* ((mode-line (read-line inputstream)) + (pacpos (search "package:" mode-line :test #'equalp)) + (endpos (search "-*-" mode-line :from-end t)) + (*package* *package*) + (newpac nil)) + (when pacpos + (setq newpac (read-from-string mode-line nil nil + :start (+ pacpos 8) + :end endpos)) + (setq *package* + (cond ((find-package newpac)) + (t *package*)))) + (POINT RECNO INPUTSTREAM) + (READ INPUTSTREAM))))) #+Lucid(system::compiler-options :messages t :warnings t) - (COND - ( (SETQ U (GET oft '/TRAN)) - (SETQ DEF (FUNCALL U DEF)) ) ) + (COND + ( (SETQ U (GET oft '/TRAN)) + (SETQ DEF (FUNCALL U DEF)) ) ) (/WRITEUPDATE /FN (|pathnameName| INFILE) @@ -352,8 +282,8 @@ exit (rds ifile) (PRETTYPRINT DEF OUTPUTSTREAM) ) ) (COND ( (EQ oft 'LISP) - (if (EQ OP 'DEFINE) (EVAL DEF) - (compile (EVAL DEF)))) + (if (EQ OP 'DEFINE) (EVAL DEF) + (compile (EVAL DEF)))) ( DEF (FUNCALL OP (LIST DEF)) ) ) #+Lucid(system::compiler-options :messages nil :warnings nil) @@ -375,37 +305,37 @@ exit (rds ifile) (if (AND (NOT (eq 'FROMWRITEUPDATE (|pathnameName| INFILE))) (NOT (make-input-filename INFILE))) (RETURN NIL)) - (SETQ FT (UPCASE (|object2Identifier| (|pathnameType| INFILE)))) + (SETQ FT (UPCASE (|object2Identifier| (|pathnameType| INFILE)))) (SETQ KEYLENGTH (STRINGLENGTH KEY)) - (WHEN (> INITRECNO 1) ;; we think we know where it is - (POINT INITRECNO INPUTSTREAM) - (SETQ LN (READ-LINE INPUTSTREAM NIL NIL)) - (IF (AND LN (MATCH-FUNCTION-DEF FN KEY KEYLENGTH LN FT)) - (RETURN INITRECNO))) - (SETQ $LINENUMBER 0) - (POINT 0 INPUTSTREAM) + (WHEN (> INITRECNO 1) ;; we think we know where it is + (POINT INITRECNO INPUTSTREAM) + (SETQ LN (READ-LINE INPUTSTREAM NIL NIL)) + (IF (AND LN (MATCH-FUNCTION-DEF FN KEY KEYLENGTH LN FT)) + (RETURN INITRECNO))) + (SETQ $LINENUMBER 0) + (POINT 0 INPUTSTREAM) EXAMINE (SETQ RECNO (NOTE INPUTSTREAM)) - (SETQ LN (READ-LINE INPUTSTREAM NIL NIL)) - (INCF $LINENUMBER) - (if (NULL LN) (RETURN NIL)) - (IF (MATCH-FUNCTION-DEF FN KEY KEYLENGTH LN FT) - (RETURN RECNO)) + (SETQ LN (READ-LINE INPUTSTREAM NIL NIL)) + (INCF $LINENUMBER) + (if (NULL LN) (RETURN NIL)) + (IF (MATCH-FUNCTION-DEF FN KEY KEYLENGTH LN FT) + (RETURN RECNO)) (GO EXAMINE))) (DEFUN MATCH-FUNCTION-DEF (fn key keylength line type) (if (eq type 'LISP) (match-lisp-tag fn line "(def") - (let ((n (mismatch key line))) - (and (= n keylength) - (or (= n (length line)) - (member (elt line n) - (or (get type '/termchr) '(#\space )))))))) + (let ((n (mismatch key line))) + (and (= n keylength) + (or (= n (length line)) + (member (elt line n) + (or (get type '/termchr) '(#\space )))))))) (define-function '|/D,1| #'/D-1) (DEFUN /INITUPDATES (/VERSION) (SETQ FILENAME (STRINGIMAGE /VERSION)) (SETQ /UPDATESTREAM (open (strconc "/tmp/update." FILENAME) :direction :output - :if-exists :append :if-does-not-exist :create)) + :if-exists :append :if-does-not-exist :create)) (PRINTEXP " Function Name Filename Date Time" /UPDATESTREAM) @@ -417,7 +347,7 @@ EXAMINE (SETQ RECNO (NOTE INPUTSTREAM)) (defun /UPDATE (&rest ARGS) (LET (( FILENAME (OR (KAR ARGS) - (strconc "/tmp/update." (STRINGIMAGE /VERSION)))) + (strconc "/tmp/update." (STRINGIMAGE /VERSION)))) (|$createUpdateFiles| NIL)) (DECLARE (SPECIAL |$createUpdateFiles|)) (CATCH 'FILENAM (/UPDATE-1 FILENAME '(/COMP))) @@ -425,7 +355,7 @@ EXAMINE (SETQ RECNO (NOTE INPUTSTREAM)) (defun /DUPDATE (&rest ARGS) (LET (( FILENAME (OR (KAR ARGS) - (strconc "/tmp/update." (STRINGIMAGE /VERSION)))) + (strconc "/tmp/update." (STRINGIMAGE /VERSION)))) (|$createUpdateFiles| NIL)) (DECLARE (SPECIAL |$createUpdateFiles|)) (CATCH 'FILENAM (/UPDATE-1 FILENAME 'DEFINE)) @@ -464,7 +394,7 @@ EXAMINE (SETQ RECNO (NOTE INPUTSTREAM)) ; ((SAY "A disk is not read-write. Update file not modified") ; (RETURN NIL))) (if (OR (NOT (BOUNDP '/UPDATESTREAM)) - (NOT (STREAMP /UPDATESTREAM))) + (NOT (STREAMP /UPDATESTREAM))) (/INITUPDATES /VERSION)) ; (SETQ IFT (INTERN (STRINGIMAGE /VERSION))) ; (SETQ INPUTSTREAM (open (strconc IFT /WSNAME) :direction :input)) @@ -482,32 +412,32 @@ EXAMINE (SETQ RECNO (NOTE INPUTSTREAM)) ; (COND ((NUMBERP RECNO) ; (SETQ ORECNO (NOTE /UPDATESTREAM)) ; (POINTW RECNO /UPDATESTREAM) )) - (SETQ DATETIME (|getDateAndTime|)) - (SETQ DATE (CAR DATETIME)) - (SETQ TIME (CDR DATETIME)) + (SETQ DATETIME (|getDateAndTime|)) + (SETQ DATE (CAR DATETIME)) + (SETQ TIME (CDR DATETIME)) (PRINTEXP (STRCONC (COND ((NOT FUN) " QUAD ") ((STRINGPAD (PNAME FUN) 28))) " " - (STRINGIMAGE FM) - (STRINGIMAGE FN) "." (STRINGIMAGE FT) + (STRINGIMAGE FM) + (STRINGIMAGE FN) "." (STRINGIMAGE FT) " " DATE " " TIME) /UPDATESTREAM) (TERPRI /UPDATESTREAM) ; (if (NUMBERP RECNO) (POINTW ORECNO /UPDATESTREAM)) - )) + )) (defun |getDateAndTime| () (MULTIPLE-VALUE-BIND (sec min hour day mon year) (get-decoded-time) (CONS (STRCONC (LENGTH2STR mon) "/" - (LENGTH2STR day) "/" - (LENGTH2STR year) ) - (STRCONC (LENGTH2STR hour) ":" - (LENGTH2STR min))))) + (LENGTH2STR day) "/" + (LENGTH2STR year) ) + (STRCONC (LENGTH2STR hour) ":" + (LENGTH2STR min))))) (DEFUN LENGTH2STR (X &aux XLEN) (cond ( (= 1 (SETQ XLEN (LENGTH (SETQ X (STRINGIMAGE X))))) (STRCONC "0" X)) - ( (= 2 XLEN) X) - ( (subseq x (- XLEN 2))))) + ( (= 2 XLEN) X) + ( (subseq x (- XLEN 2))))) (defmacro /T (&rest L) (CONS '/TRACE (OR L (LIST /FN)))) @@ -570,8 +500,8 @@ EXAMINE (SETQ RECNO (NOTE INPUTSTREAM)) (T (|sayBrightly| (format nil "~A is not a function" FN)))) (RETURN NIL))) (if (and (symbolp fn) (boundp FN) - (|isDomainOrPackage| (SETQ FNVAL (EVAL FN)))) - (RETURN (|spadTrace| FNVAL OPTIONS))) + (|isDomainOrPackage| (SETQ FNVAL (EVAL FN)))) + (RETURN (|spadTrace| FNVAL OPTIONS))) (if (SETQ U (/GETTRACEOPTIONS OPTIONS 'MASK=)) (MAKEPROP FN '/TRANSFORM (CADR U))) (SETQ /TRACENAMES @@ -622,7 +552,7 @@ EXAMINE (SETQ RECNO (NOTE INPUTSTREAM)) (SETQ COUNT_CONDITION (COND ((SETQ U (/GETTRACEOPTIONS OPTIONS 'COUNT)) (SETQ /COUNTLIST (adjoin TRACENAME /COUNTLIST - :test 'equal)) + :test 'equal)) (if (AND (CDR U) (integerp (CADR U))) `(cond ((<= ,COUNTNAM ,(CADR U)) t) (t (/UNTRACE-2 ,(MKQ FN) NIL) NIL)) @@ -634,8 +564,8 @@ EXAMINE (SETQ RECNO (NOTE INPUTSTREAM)) (SETQ DEPTH_CONDITION (if (SETQ U (/GETTRACEOPTIONS OPTIONS 'DEPTH)) (if (AND (CDR U) (integerp (CADR U))) - (LIST 'LE 'FUNDEPTH (CADR U)) - (TRACE_OPTION_ERROR 'DEPTH)) + (LIST 'LE 'FUNDEPTH (CADR U)) + (TRACE_OPTION_ERROR 'DEPTH)) T)) (SETQ CONDITION (MKPF @@ -728,17 +658,17 @@ EXAMINE (SETQ RECNO (NOTE INPUTSTREAM)) (|untraceDomainConstructor| X)) ((OR (|isDomainOrPackage| (SETQ U X)) (and (symbolp X) (boundp X) - (|isDomain| (SETQ U (EVAL X))))) + (|isDomain| (SETQ U (EVAL X))))) (|spadUntrace| U OPTIONS)) ((EQCAR OPTIONS 'ALIAS) (if |$traceNoisely| (|sayBrightly| (LIST '|%b| (CADR OPTIONS) '|%d| '**untraced))) (SETQ /TIMERLIST - (REMOVE (STRINGIMAGE (CADR OPTIONS)) /TIMERLIST :test 'equal)) + (REMOVE (STRINGIMAGE (CADR OPTIONS)) /TIMERLIST :test 'equal)) (SETQ /COUNTLIST - (REMOVE (STRINGIMAGE (CADR OPTIONS)) /COUNTLIST :test 'equal)) + (REMOVE (STRINGIMAGE (CADR OPTIONS)) /COUNTLIST :test 'equal)) (SETQ |$mathTraceList| - (REMOVE (CADR OPTIONS) |$mathTraceList| :test 'equal)) + (REMOVE (CADR OPTIONS) |$mathTraceList| :test 'equal)) (UNEMBED X)) ((AND (NOT (MEMBER X /TRACENAMES)) (NOT (|isSubForRedundantMapName| X))) @@ -771,16 +701,16 @@ EXAMINE (SETQ RECNO (NOTE INPUTSTREAM)) (COND ((setq U (GET NAME '/TRANSFORM)) (COND ((EQCAR U '&) - (PRINC "//" CURSTRM) (PRIN1 VAL CURSTRM) (TERPRI CURSTRM)) - (T (PRINC "! " CURSTRM) - (PRIN1 (EVAL (SUBST (MKQ VAL) '* (CAR U))) CURSTRM) - (TERPRI CURSTRM)) )) + (PRINC "//" CURSTRM) (PRIN1 VAL CURSTRM) (TERPRI CURSTRM)) + (T (PRINC "! " CURSTRM) + (PRIN1 (EVAL (SUBST (MKQ VAL) '* (CAR U))) CURSTRM) + (TERPRI CURSTRM)) )) (T - (PRINC ": " CURSTRM) + (PRINC ": " CURSTRM) (COND ((NOT (SMALL-ENOUGH VAL)) (|F,PRINT-ONE| VAL CURSTRM)) (/PRETTY (PRETTYPRINT VAL CURSTRM)) (T (COND (|$mathTrace| (TERPRI))) - (PRINMATHOR0 VAL CURSTRM))))))) + (PRINMATHOR0 VAL CURSTRM))))))) (DEFUN MONITOR-BLANKS (N) (PRINC (MAKE-FULL-CVEC N " ") CURSTRM)) @@ -831,7 +761,7 @@ EXAMINE (SETQ RECNO (NOTE INPUTSTREAM)) (mapcar #'(lambda (x y) (COND ((EQ Y '*) - (PRINC "\\ " CURSTRM) + (PRINC "\\ " CURSTRM) (MONITOR-PRINT X CURSTRM)) ((EQ Y '&) (PRINC "\\\\" CURSTRM) @@ -839,18 +769,18 @@ EXAMINE (SETQ RECNO (NOTE INPUTSTREAM)) (PRINT X CURSTRM)) ((NOT Y) (PRINC "! " CURSTRM)) (T - (PRINC "! " CURSTRM) + (PRINC "! " CURSTRM) (MONITOR-PRINT (EVAL (SUBST (MKQ X) '* Y)) CURSTRM)))) - L (cdr /transform))) - (T (PRINC ": " CURSTRM) + L (cdr /transform))) + (T (PRINC ": " CURSTRM) (COND ((NOT (ATOM L)) (if |$mathTrace| (TERPRI CURSTRM)) (MONITOR-PRINT (CAR L) CURSTRM) (SETQ L (CDR L)))) (mapcar #'monitor-printrest L)))) ((do ((istep 2 (+ istep 1)) (k (maxindex code))) - ((> istep k) nil) + ((> istep k) nil) (when (not (= 0 (SETQ N (digit-char-p (elt CODE ISTEP))))) (PRINC "\\" CURSTRM) (PRINMATHOR0 N CURSTRM) @@ -1032,9 +962,9 @@ EXAMINE (SETQ RECNO (NOTE INPUTSTREAM)) (/DEPTH (if (and (BOUNDP '/DEPTH) (numberp /depth)) (1+ /DEPTH) 1)) (|depthAlist| (if (BOUNDP '|depthAlist|) (COPY-TREE |depthAlist|) NIL)) FUNDEPTH NAMEID YES (|$tracedSpadModemap| TRACEDMODEMAP) (|$mathTrace| NIL) - /caller /name /value /breakcondition curdepth) + /caller /name /value /breakcondition curdepth) (declare (special curstrm /depth fundepth |$tracedSpadModemap| |$mathTrace| - /caller /name /value /breakcondition |depthAlist|)) + /caller /name /value /breakcondition |depthAlist|)) (SETQ /NAME NAME) (SETQ NAME1 (PNAME (|rassocSub| (INTERN NAME) |$mapSubNameAlist|))) (SETQ /BREAKCONDITION BREAKCONDITION) @@ -1234,11 +1164,52 @@ exit (rds ifile) (boot::|handleLispBreakLoop| boot::|$BreakMode|)) #+:CCL (setq lisp:*break-loop* 'boot::lisp-break-from-axiom) -<<interrupt>> +#-:CCL +(defun interrupt (&rest ignore)) + +#+:CCL +(defun interrupt (&rest ignore) + (prog (prompt ifile ofile u v) + (setq ifile (rds *debug-io*)) + (setq ofile (wrs *debug-io*)) + (setq prompt (setpchar "Break loop (:? for help)> ")) +top (setq u (read)) + (cond + ((equal u ':x) (go exit)) + ((equal u ':r) (go resume)) + ((equal u ':q) + (progn (lisp::enable-backtrace nil) + (princ "Backtrace now disabled") + (terpri))) + ((equal u ':v) + (progn (lisp::enable-backtrace t) + (princ "Backtrace now enabled") + (terpri))) + ((equal u ':?) + (progn + (princ ":Q disables backtrace") + (terpri) + (princ ":V enables backtrace") + (terpri) + (princ ":R resumes from break") + (terpri) + (princ ":X exits from break loop") + (terpri) + (princ "else enter LISP expressions for evaluation") + (terpri))) + ((equal u #\eof) + (go exit)) + (t (progn + (setq v (errorset u nil nil)) + (if (listp v) (progn (princ "=> ") (prinl (car v)) (terpri))))) ) + (go top) +resume (rds ifile) + (wrs ofile) + (setpchar prompt) + (return nil) +exit (rds ifile) + (wrs ofile) + (setpchar prompt) + (lisp::unwind))) + -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/interp/def.lisp b/src/interp/def.lisp index 799034ee..146d65de 100644 --- a/src/interp/def.lisp +++ b/src/interp/def.lisp @@ -1,5 +1,7 @@ ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are diff --git a/src/interp/fname.lisp b/src/interp/fname.lisp index 1d54a0d9..926aba92 100644 --- a/src/interp/fname.lisp +++ b/src/interp/fname.lisp @@ -1,5 +1,7 @@ ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are diff --git a/src/interp/fnewmeta.lisp.pamphlet b/src/interp/fnewmeta.lisp index be041a6a..1abd09dc 100644 --- a/src/interp/fnewmeta.lisp.pamphlet +++ b/src/interp/fnewmeta.lisp @@ -1,300 +1,285 @@ -\documentclass{article} -\usepackage{axiom} -\begin{document} -\title{\$SPAD/src/interp fnewmeta.lisp} -\author{William Burge} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -<<fnew.meta>>= -% Scratchpad II Boot Language Grammar, Common Lisp Version -% IBM Thomas J. Watson Research Center -% Summer, 1986 -% -% NOTE: Substantially different from VM/LISP version, due to -% different parser and attempt to render more within META proper. +;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. +;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. +;; +;; Redistribution and use in source and binary forms, with or without +;; modification, are permitted provided that the following conditions are +;; met: +;; +;; - Redistributions of source code must retain the above copyright +;; notice, this list of conditions and the following disclaimer. +;; +;; - Redistributions in binary form must reproduce the above copyright +;; notice, this list of conditions and the following disclaimer in +;; the documentation and/or other materials provided with the +;; distribution. +;; +;; - Neither the name of The Numerical ALgorithms Group Ltd. nor the +;; names of its contributors may be used to endorse or promote products +;; derived from this software without specific prior written permission. +;; +;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +;; IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +;; TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +;; PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER +;; OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +;; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +;; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +;; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -.META(New NewExpr Process) -.PACKAGE 'BOOT' -.DECLARE(tmptok TOK ParseMode DEFINITION_NAME LABLASOC) -.PREFIX 'PARSE-' -NewExpr: =')' .(processSynonyms) Command - / .(SETQ DEFINITION_NAME (CURRENT-SYMBOL)) Statement ; +;; % Scratchpad II Boot Language Grammar, Common Lisp Version +;; % IBM Thomas J. Watson Research Center +;; % Summer, 1986 +;; % +;; % NOTE: Substantially different from VM/LISP version, due to +;; % different parser and attempt to render more within META proper. -Command: ')' SpecialKeyWord SpecialCommand +() ; +;; .META(New NewExpr Process) +;; .PACKAGE 'BOOT' +;; .DECLARE(tmptok TOK ParseMode DEFINITION_NAME LABLASOC) +;; .PREFIX 'PARSE-' -SpecialKeyWord: =(MATCH-CURRENT-TOKEN "IDENTIFIER) - .(SETF (TOKEN-SYMBOL (CURRENT-TOKEN)) (unAbbreviateKeyword (CURRENT-SYMBOL))) ; +;; NewExpr: =')' .(processSynonyms) Command +;; / .(SETQ DEFINITION_NAME (CURRENT-SYMBOL)) Statement ; -SpecialCommand: 'show' <'?' / Expression>! +(show #1) CommandTail - / ?(MEMBER (CURRENT-SYMBOL) \$noParseCommands) - .(FUNCALL (CURRENT-SYMBOL)) - / ?(MEMBER (CURRENT-SYMBOL) \$tokenCommands) TokenList - TokenCommandTail - / PrimaryOrQM* CommandTail ; +;; Command: ')' SpecialKeyWord SpecialCommand +() ; -TokenList: (^?(isTokenDelimiter) +=(CURRENT-SYMBOL) .(ADVANCE-TOKEN))* ; +;; SpecialKeyWord: =(MATCH-CURRENT-TOKEN "IDENTIFIER) +;; .(SETF (TOKEN-SYMBOL (CURRENT-TOKEN)) (unAbbreviateKeyword (CURRENT-SYMBOL))) ; -TokenCommandTail: - <TokenOption*>! ?(atEndOfLine) +(#2 -#1) .(systemCommand #1) ; +;; SpecialCommand: 'show' <'?' / Expression>! +(show #1) CommandTail +;; / ?(MEMBER (CURRENT-SYMBOL) \$noParseCommands) +;; .(FUNCALL (CURRENT-SYMBOL)) +;; / ?(MEMBER (CURRENT-SYMBOL) \$tokenCommands) TokenList +;; TokenCommandTail +;; / PrimaryOrQM* CommandTail ; -TokenOption: ')' TokenList ; +;; TokenList: (^?(isTokenDelimiter) +=(CURRENT-SYMBOL) .(ADVANCE-TOKEN))* ; -CommandTail: <Option*>! ?(atEndOfLine) +(#2 -#1) .(systemCommand #1) ; +;; TokenCommandTail: +;; <TokenOption*>! ?(atEndOfLine) +(#2 -#1) .(systemCommand #1) ; -PrimaryOrQM: '?' +\? / Primary ; +;; TokenOption: ')' TokenList ; -Option: ')' PrimaryOrQM* ; +;; CommandTail: <Option*>! ?(atEndOfLine) +(#2 -#1) .(systemCommand #1) ; -Statement: Expr{0} <(',' Expr{0})* +(Series #2 -#1)>; +;; PrimaryOrQM: '?' +\? / Primary ; -InfixWith: With +(Join #2 #1) ; +;; Option: ')' PrimaryOrQM* ; -With: 'with' Category +(with #1) ; +;; Statement: Expr{0} <(',' Expr{0})* +(Series #2 -#1)>; -Category: 'if' Expression 'then' Category <'else' Category>! +(if #3 #2 #1) - / '(' Category <(';' Category)*>! ')' +(CATEGORY #2 -#1) - / .(SETQ $1 (LINE-NUMBER CURRENT-LINE)) Application - ( ':' Expression +(Signature #2 #1) - .(recordSignatureDocumentation ##1 $1) - / +(Attribute #1) - .(recordAttributeDocumentation ##1 $1)); +;; InfixWith: With +(Join #2 #1) ; -Expression: Expr{(PARSE-rightBindingPowerOf (MAKE-SYMBOL-OF PRIOR-TOKEN) ParseMode)} - +#1 ; +;; With: 'with' Category +(with #1) ; -Import: 'import' Expr{1000} <(',' Expr{1000})*>! +(import #2 -#1) ; +;; Category: 'if' Expression 'then' Category <'else' Category>! +(if #3 #2 #1) +;; / '(' Category <(';' Category)*>! ')' +(CATEGORY #2 -#1) +;; / .(SETQ $1 (LINE-NUMBER CURRENT-LINE)) Application +;; ( ':' Expression +(Signature #2 #1) +;; .(recordSignatureDocumentation ##1 $1) +;; / +(Attribute #1) +;; .(recordAttributeDocumentation ##1 $1)); -Infix: =TRUE +=(CURRENT-SYMBOL) .(ADVANCE-TOKEN) <TokTail> - Expression +(#2 #2 #1) ; +;; Expression: Expr{(PARSE-rightBindingPowerOf (MAKE-SYMBOL-OF PRIOR-TOKEN) ParseMode)} +;; +#1 ; -Prefix: =TRUE +=(CURRENT-SYMBOL) .(ADVANCE-TOKEN) <TokTail> - Expression +(#2 #1) ; +;; Import: 'import' Expr{1000} <(',' Expr{1000})*>! +(import #2 -#1) ; -Suffix: +=(CURRENT-SYMBOL) .(ADVANCE-TOKEN) <TokTail> +(#1 #1) ; +;; Infix: =TRUE +=(CURRENT-SYMBOL) .(ADVANCE-TOKEN) <TokTail> +;; Expression +(#2 #2 #1) ; -TokTail: ?(AND (NULL \$BOOT) (EQ (CURRENT-SYMBOL) "\$) - (OR (ALPHA-CHAR-P (CURRENT-CHAR)) - (CHAR-EQ (CURRENT-CHAR) '$') - (CHAR-EQ (CURRENT-CHAR) '\%') - (CHAR-EQ (CURRENT-CHAR) '('))) - .(SETQ $1 (COPY-TOKEN PRIOR-TOKEN)) Qualification - .(SETQ PRIOR-TOKEN $1) ; +;; Prefix: =TRUE +=(CURRENT-SYMBOL) .(ADVANCE-TOKEN) <TokTail> +;; Expression +(#2 #1) ; -Qualification: '$' Primary1 +=(dollarTran #1 #1) ; +;; Suffix: +=(CURRENT-SYMBOL) .(ADVANCE-TOKEN) <TokTail> +(#1 #1) ; -SemiColon: ';' (Expr{82} / + \/throwAway) +(\; #2 #1) ; +;; TokTail: ?(AND (NULL \$BOOT) (EQ (CURRENT-SYMBOL) "\$) +;; (OR (ALPHA-CHAR-P (CURRENT-CHAR)) +;; (CHAR-EQ (CURRENT-CHAR) '$') +;; (CHAR-EQ (CURRENT-CHAR) '\%') +;; (CHAR-EQ (CURRENT-CHAR) '('))) +;; .(SETQ $1 (COPY-TOKEN PRIOR-TOKEN)) Qualification +;; .(SETQ PRIOR-TOKEN $1) ; -Return: 'return' Expression +(return #1) ; +;; Qualification: '$' Primary1 +=(dollarTran #1 #1) ; -Exit: 'exit' (Expression / +\$NoValue) +(exit #1) ; +;; SemiColon: ';' (Expr{82} / + \/throwAway) +(\; #2 #1) ; -Leave: 'leave' ( Expression / +\$NoValue ) - ('from' Label +(leaveFrom #1 #1) / +(leave #1)) ; +;; Return: 'return' Expression +(return #1) ; -Seg: GliphTok{"\.\.} <Expression>! +(SEGMENT #2 #1) ; +;; Exit: 'exit' (Expression / +\$NoValue) +(exit #1) ; -Conditional: 'if' Expression 'then' Expression <'else' ElseClause>! - +(if #3 #2 #1) ; +;; Leave: 'leave' ( Expression / +\$NoValue ) +;; ('from' Label +(leaveFrom #1 #1) / +(leave #1)) ; -ElseClause: ?(EQ (CURRENT-SYMBOL) "if) Conditional / Expression ; +;; Seg: GliphTok{"\.\.} <Expression>! +(SEGMENT #2 #1) ; -Loop: Iterator* 'repeat' Expr{110} +(REPEAT -#2 #1) - / 'repeat' Expr{110} +(REPEAT #1) ; +;; Conditional: 'if' Expression 'then' Expression <'else' ElseClause>! +;; +(if #3 #2 #1) ; -Iterator: 'for' Primary 'in' Expression - ( 'by' Expr{200} +(INBY #3 #2 #1) / +(IN #2 #1) ) - < '\|' Expr{111} +(\| #1) > - / 'while' Expr{190} +(WHILE #1) - / 'until' Expr{190} +(UNTIL #1) ; +;; ElseClause: ?(EQ (CURRENT-SYMBOL) "if) Conditional / Expression ; -Expr{RBP}: NudPart{RBP} <LedPart{RBP}>* +#1; +;; Loop: Iterator* 'repeat' Expr{110} +(REPEAT -#2 #1) +;; / 'repeat' Expr{110} +(REPEAT #1) ; -LabelExpr: Label Expr{120} +(LABEL #2 #1) ; +;; Iterator: 'for' Primary 'in' Expression +;; ( 'by' Expr{200} +(INBY #3 #2 #1) / +(IN #2 #1) ) +;; < '\|' Expr{111} +(\| #1) > +;; / 'while' Expr{190} +(WHILE #1) +;; / 'until' Expr{190} +(UNTIL #1) ; -Label: '<<' Name '>>' ; +;; Expr{RBP}: NudPart{RBP} <LedPart{RBP}>* +#1; -LedPart{RBP}: Operation{"Led RBP} +#1; +;; LabelExpr: Label Expr{120} +(LABEL #2 #1) ; -NudPart{RBP}: (Operation{"Nud RBP} / Reduction / Form) +#1 ; +;; Label: '<<' Name '>>' ; -Operation{ParseMode RBP}: - ^?(MATCH-CURRENT-TOKEN "IDENTIFIER) - ?(GETL (SETQ tmptok (CURRENT-SYMBOL)) ParseMode) - ?(LT RBP (PARSE-leftBindingPowerOf tmptok ParseMode)) - .(SETQ RBP (PARSE-rightBindingPowerOf tmptok ParseMode)) - getSemanticForm{tmptok ParseMode (ELEMN (GETL tmptok ParseMode) 5 NIL)} ; +;; LedPart{RBP}: Operation{"Led RBP} +#1; -% Binding powers stored under the Led and Red properties of an operator -% are set up by the file BOTTOMUP.LISP. The format for a Led property -% is <Operator Left-Power Right-Power>, and the same for a Nud, except that -% it may also have a fourth component <Special-Handler>. ELEMN attempts to -% get the Nth indicator, counting from 1. +;; NudPart{RBP}: (Operation{"Nud RBP} / Reduction / Form) +#1 ; -leftBindingPowerOf{X IND}: =(LET ((Y (GETL X IND))) (IF Y (ELEMN Y 3 0) 0)) ; +;; Operation{ParseMode RBP}: +;; ^?(MATCH-CURRENT-TOKEN "IDENTIFIER) +;; ?(GETL (SETQ tmptok (CURRENT-SYMBOL)) ParseMode) +;; ?(LT RBP (PARSE-leftBindingPowerOf tmptok ParseMode)) +;; .(SETQ RBP (PARSE-rightBindingPowerOf tmptok ParseMode)) +;; getSemanticForm{tmptok ParseMode (ELEMN (GETL tmptok ParseMode) 5 NIL)} ; -rightBindingPowerOf{X IND}: =(LET ((Y (GETL X IND))) (IF Y (ELEMN Y 4 105) 105)) ; +;; % Binding powers stored under the Led and Red properties of an operator +;; % are set up by the file BOTTOMUP.LISP. The format for a Led property +;; % is <Operator Left-Power Right-Power>, and the same for a Nud, except that +;; % it may also have a fourth component <Special-Handler>. ELEMN attempts to +;; % get the Nth indicator, counting from 1. -getSemanticForm{X IND Y}: - ?(AND Y (EVAL Y)) / ?(EQ IND "Nud) Prefix / ?(EQ IND "Led) Infix ; +;; leftBindingPowerOf{X IND}: =(LET ((Y (GETL X IND))) (IF Y (ELEMN Y 3 0) 0)) ; +;; rightBindingPowerOf{X IND}: =(LET ((Y (GETL X IND))) (IF Y (ELEMN Y 4 105) 105)) ; -Reduction: ReductionOp Expr{1000} +(Reduce #2 #1) ; +;; getSemanticForm{X IND Y}: +;; ?(AND Y (EVAL Y)) / ?(EQ IND "Nud) Prefix / ?(EQ IND "Led) Infix ; -ReductionOp: ?(AND (GETL (CURRENT-SYMBOL) "Led) - (MATCH-NEXT-TOKEN "SPECIAL-CHAR (CODE-CHAR 47))) % Forgive me! - +=(CURRENT-SYMBOL) .(ADVANCE-TOKEN) .(ADVANCE-TOKEN) ; -Form: 'iterate' < 'from' Label +(#1) >! +(iterate -#1) - / 'yield' Application +(yield #1) - / Application ; +;; Reduction: ReductionOp Expr{1000} +(Reduce #2 #1) ; -Application: Primary <Selector>* <Application +(#2 #1)>; +;; ReductionOp: ?(AND (GETL (CURRENT-SYMBOL) "Led) +;; (MATCH-NEXT-TOKEN "SPECIAL-CHAR (CODE-CHAR 47))) % Forgive me! +;; +=(CURRENT-SYMBOL) .(ADVANCE-TOKEN) .(ADVANCE-TOKEN) ; -Selector: ?NONBLANK ?(EQ (CURRENT-SYMBOL) "\.) ?(CHAR-NE (CURRENT-CHAR) "\ ) - '.' PrimaryNoFloat (=\$BOOT +(ELT #2 #1)/ +(#2 #1)) - / (Float /'.' Primary) (=\$BOOT +(ELT #2 #1)/ +(#2 #1)); +;; Form: 'iterate' < 'from' Label +(#1) >! +(iterate -#1) +;; / 'yield' Application +(yield #1) +;; / Application ; -PrimaryNoFloat: Primary1 <TokTail> ; +;; Application: Primary <Selector>* <Application +(#2 #1)>; -Primary: Float /PrimaryNoFloat ; +;; Selector: ?NONBLANK ?(EQ (CURRENT-SYMBOL) "\.) ?(CHAR-NE (CURRENT-CHAR) "\ ) +;; '.' PrimaryNoFloat (=\$BOOT +(ELT #2 #1)/ +(#2 #1)) +;; / (Float /'.' Primary) (=\$BOOT +(ELT #2 #1)/ +(#2 #1)); -Primary1: VarForm <=(AND NONBLANK (EQ (CURRENT-SYMBOL) "\()) Primary1 +(#2 #1)> - /Quad - /String - /IntegerTok - /FormalParameter - /='\'' (?\$BOOT Data / '\'' Expr{999} +(QUOTE #1)) - /Sequence - /Enclosure ; +;; PrimaryNoFloat: Primary1 <TokTail> ; -Float: FloatBase (?NONBLANK FloatExponent / +0) +=(MAKE-FLOAT #4 #2 #2 #1) ; +;; Primary: Float /PrimaryNoFloat ; -FloatBase: ?(FIXP (CURRENT-SYMBOL)) ?(CHAR-EQ (CURRENT-CHAR) '.') - ?(CHAR-NE (NEXT-CHAR) '.') - IntegerTok FloatBasePart - /?(FIXP (CURRENT-SYMBOL)) ?(CHAR-EQ (CHAR-UPCASE (CURRENT-CHAR)) "E) - IntegerTok +0 +0 - /?(DIGITP (CURRENT-CHAR)) ?(EQ (CURRENT-SYMBOL) "\.) - +0 FloatBasePart ; +;; Primary1: VarForm <=(AND NONBLANK (EQ (CURRENT-SYMBOL) "\()) Primary1 +(#2 #1)> +;; /Quad +;; /String +;; /IntegerTok +;; /FormalParameter +;; /='\'' (?\$BOOT Data / '\'' Expr{999} +(QUOTE #1)) +;; /Sequence +;; /Enclosure ; -FloatBasePart: '.' - (?(DIGITP (CURRENT-CHAR)) +=(TOKEN-NONBLANK (CURRENT-TOKEN)) IntegerTok - / +0 +0); +;; Float: FloatBase (?NONBLANK FloatExponent / +0) +=(MAKE-FLOAT #4 #2 #2 #1) ; +;; FloatBase: ?(FIXP (CURRENT-SYMBOL)) ?(CHAR-EQ (CURRENT-CHAR) '.') +;; ?(CHAR-NE (NEXT-CHAR) '.') +;; IntegerTok FloatBasePart +;; /?(FIXP (CURRENT-SYMBOL)) ?(CHAR-EQ (CHAR-UPCASE (CURRENT-CHAR)) "E) +;; IntegerTok +0 +0 +;; /?(DIGITP (CURRENT-CHAR)) ?(EQ (CURRENT-SYMBOL) "\.) +;; +0 FloatBasePart ; -FloatExponent: =(AND (MEMBER (CURRENT-SYMBOL) "(E e)) - (FIND (CURRENT-CHAR) '+-')) - .(ADVANCE-TOKEN) - (IntegerTok/'+' IntegerTok/'-' IntegerTok +=(MINUS #1)/+0) - /?(IDENTP (CURRENT-SYMBOL)) =(SETQ $1 (FLOATEXPID (CURRENT-SYMBOL))) - .(ADVANCE-TOKEN) +=$1 ; +;; FloatBasePart: '.' +;; (?(DIGITP (CURRENT-CHAR)) +=(TOKEN-NONBLANK (CURRENT-TOKEN)) IntegerTok +;; / +0 +0); -Enclosure: '(' ( Expr{6} ')' / ')' +(Tuple) ) - / '{' ( Expr{6} '}' +(brace (construct #1)) / '}' +(brace)) ; -IntegerTok: NUMBER ; +;; FloatExponent: =(AND (MEMBER (CURRENT-SYMBOL) "(E e)) +;; (FIND (CURRENT-CHAR) '+-')) +;; .(ADVANCE-TOKEN) +;; (IntegerTok/'+' IntegerTok/'-' IntegerTok +=(MINUS #1)/+0) +;; /?(IDENTP (CURRENT-SYMBOL)) =(SETQ $1 (FLOATEXPID (CURRENT-SYMBOL))) +;; .(ADVANCE-TOKEN) +=$1 ; -FloatTok: NUMBER +=(IF \$BOOT #1 (BFP- #1)) ; +;; Enclosure: '(' ( Expr{6} ')' / ')' +(Tuple) ) +;; / '{' ( Expr{6} '}' +(brace (construct #1)) / '}' +(brace)) ; -FormalParameter: FormalParameterTok ; +;; IntegerTok: NUMBER ; -FormalParameterTok: ARGUMENT-DESIGNATOR ; +;; FloatTok: NUMBER +=(IF \$BOOT #1 (BFP- #1)) ; -Quad: '$' +\$ / ?\$BOOT GliphTok{"\.} +\. ; +;; FormalParameter: FormalParameterTok ; -String: SPADSTRING ; +;; FormalParameterTok: ARGUMENT-DESIGNATOR ; -VarForm: Name <Scripts +(Scripts #2 #1) > +#1 ; +;; Quad: '$' +\$ / ?\$BOOT GliphTok{"\.} +\. ; -Scripts: ?NONBLANK '[' ScriptItem ']' ; +;; String: SPADSTRING ; -ScriptItem: Expr{90} <(';' ScriptItem)* +(\; #2 -#1)> - / ';' ScriptItem +(PrefixSC #1) ; +;; VarForm: Name <Scripts +(Scripts #2 #1) > +#1 ; -Name: IDENTIFIER +#1 ; +;; Scripts: ?NONBLANK '[' ScriptItem ']' ; -Data: .(SETQ LABLASOC NIL) Sexpr +(QUOTE =(TRANSLABEL #1 LABLASOC)) ; +;; ScriptItem: Expr{90} <(';' ScriptItem)* +(\; #2 -#1)> +;; / ';' ScriptItem +(PrefixSC #1) ; -Sexpr: .(ADVANCE-TOKEN) Sexpr1 ; +;; Name: IDENTIFIER +#1 ; -Sexpr1: AnyId - < NBGliphTok{"\=} Sexpr1 - .(SETQ LABLASOC (CONS (CONS #2 ##1) LABLASOC))> - / '\'' Sexpr1 +(QUOTE #1) - / IntegerTok - / '-' IntegerTok +=(MINUS #1) - / String - / '<' <Sexpr1*>! '>' +=(LIST2VEC #1) - / '(' <Sexpr1* <GliphTok{"\.} Sexpr1 +=(NCONC #2 #1)>>! ')' ; +;; Data: .(SETQ LABLASOC NIL) Sexpr +(QUOTE =(TRANSLABEL #1 LABLASOC)) ; -NBGliphTok{tok}: ?(AND (MATCH-CURRENT-TOKEN "GLIPH tok) NONBLANK) - .(ADVANCE-TOKEN) ; +;; Sexpr: .(ADVANCE-TOKEN) Sexpr1 ; -GliphTok{tok}: ?(MATCH-CURRENT-TOKEN "GLIPH tok) .(ADVANCE-TOKEN) ; +;; Sexpr1: AnyId +;; < NBGliphTok{"\=} Sexpr1 +;; .(SETQ LABLASOC (CONS (CONS #2 ##1) LABLASOC))> +;; / '\'' Sexpr1 +(QUOTE #1) +;; / IntegerTok +;; / '-' IntegerTok +=(MINUS #1) +;; / String +;; / '<' <Sexpr1*>! '>' +=(LIST2VEC #1) +;; / '(' <Sexpr1* <GliphTok{"\.} Sexpr1 +=(NCONC #2 #1)>>! ')' ; -AnyId: IDENTIFIER - / (='$' +=(CURRENT-SYMBOL) .(ADVANCE-TOKEN) / KEYWORD) ; +;; NBGliphTok{tok}: ?(AND (MATCH-CURRENT-TOKEN "GLIPH tok) NONBLANK) +;; .(ADVANCE-TOKEN) ; -Sequence: OpenBracket Sequence1 ']' - / OpenBrace Sequence1 '}' +(brace #1) ; +;; GliphTok{tok}: ?(MATCH-CURRENT-TOKEN "GLIPH tok) .(ADVANCE-TOKEN) ; -Sequence1: (Expression +(#2 #1) / +(#1)) <IteratorTail +(COLLECT -#1 #1)> ; +;; AnyId: IDENTIFIER +;; / (='$' +=(CURRENT-SYMBOL) .(ADVANCE-TOKEN) / KEYWORD) ; -OpenBracket: =(EQ (getToken (SETQ $1 (CURRENT-SYMBOL))) "\[ ) - (=(EQCAR $1 "elt) +(elt =(CADR $1) construct) - / +construct) .(ADVANCE-TOKEN) ; +;; Sequence: OpenBracket Sequence1 ']' +;; / OpenBrace Sequence1 '}' +(brace #1) ; -OpenBrace: =(EQ (getToken (SETQ $1 (CURRENT-SYMBOL))) "\{ ) - (=(EQCAR $1 "elt) +(elt =(CADR $1) brace) - / +construct) .(ADVANCE-TOKEN) ; +;; Sequence1: (Expression +(#2 #1) / +(#1)) <IteratorTail +(COLLECT -#1 #1)> ; -IteratorTail: ('repeat' <Iterator*>! / Iterator*) ; +;; OpenBracket: =(EQ (getToken (SETQ $1 (CURRENT-SYMBOL))) "\[ ) +;; (=(EQCAR $1 "elt) +(elt =(CADR $1) construct) +;; / +construct) .(ADVANCE-TOKEN) ; -.FIN ; +;; OpenBrace: =(EQ (getToken (SETQ $1 (CURRENT-SYMBOL))) "\{ ) +;; (=(EQCAR $1 "elt) +(elt =(CADR $1) brace) +;; / +construct) .(ADVANCE-TOKEN) ; +;; IteratorTail: ('repeat' <Iterator*>! / Iterator*) ; + +;; .FIN ; -@ -\section{License} -<<license>>= -;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. -;; All rights reserved. -;; -;; Redistribution and use in source and binary forms, with or without -;; modification, are permitted provided that the following conditions are -;; met: -;; -;; - Redistributions of source code must retain the above copyright -;; notice, this list of conditions and the following disclaimer. -;; -;; - Redistributions in binary form must reproduce the above copyright -;; notice, this list of conditions and the following disclaimer in -;; the documentation and/or other materials provided with the -;; distribution. -;; -;; - Neither the name of The Numerical ALgorithms Group Ltd. nor the -;; names of its contributors may be used to endorse or promote products -;; derived from this software without specific prior written permission. -;; -;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -;; IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED -;; TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -;; PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER -;; OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -;; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -;; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -;; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -@ -<<*>>= -<<license>> (IMPORT-MODULE "parsing") (IN-PACKAGE "BOOT" ) @@ -1004,9 +989,3 @@ IteratorTail: ('repeat' <Iterator*>! / Iterator*) ; (OPTIONAL (STAR REPEATOR (|PARSE-Iterator|))))) (STAR REPEATOR (|PARSE-Iterator|)))) -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/interp/foam_l.lisp.pamphlet b/src/interp/foam_l.lisp index 7bf48022..57e0f5bd 100644 --- a/src/interp/foam_l.lisp.pamphlet +++ b/src/interp/foam_l.lisp @@ -1,25 +1,7 @@ -%% Oh Emacs, this is a -*- Lisp -*- file despite apperance. -\documentclass{article} -\usepackage{axiom} - -\title{\File{src/interp/foam\_l.lisp} Pamphlet} -\author{Stephen M. Watt, Timothy Daly} - -\begin{document} -\maketitle - -\begin{abstract} -\end{abstract} - - -\tableofcontents -\eject - -\section{License} - -<<license>>= ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are @@ -49,18 +31,30 @@ ;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -@ +;; +;; FOAM is the intermediate language for the aldor compiler. FOAM +;; means "first order abstract machine" and functions similar to +;; RTL for the GCC compiler. It is a "machine" that is used as the +;; target for meta-assembler level statments. These are eventually +;; expanded for the real target machine (or interpreted directly) +;; +;;; +;;; FOAM Operations for Common Lisp +;;; -\section{The [[FOAM]] package} +;; +;; Client files should begin with +;; (in-package "FOAM-USER" :use '("FOAM" "LISP")) +;; +;; +;; To Do: +;; Test cases. +;; Scan and format functions need to be rewritten to handle complete syntax. +;; Deftypes for each Foam type? +;; -FOAM is the intermediate language for the aldor compiler. FOAM -means "first order abstract machine" and functions similar to -RTL for the GCC compiler. It is a "machine" that is used as the -target for meta-assembler level statments. These are eventually -expanded for the real target machine (or interpreted directly) -<<FOAM>>= #+:common-lisp (in-package "COMMON-LISP-USER") #-:common-lisp (in-package "USER") @@ -68,40 +62,16 @@ expanded for the real target machine (or interpreted directly) #+:common-lisp (:use "COMMON-LISP") #-:common-lisp (:use "LISP")) -@ -\section{The [[FOAM-USER]] package} +;; FOAM-USER is the package containing foam statements and macros +;; that get inserted into user code versus the foam package which +;; provides support for compiler code. -FOAM-USER is the package containing foam statements and macros -that get inserted into user code versus the foam package which -provides support for compiler code. -<<FOAM>>= (defpackage "FOAM-USER" #+:common-lisp (:use "COMMON-LISP") #-:common-lisp (:use "LISP") (:use "FOAM")) -@ - - -<<*>>= -<<license>> -;;; -;;; FOAM Operations for Common Lisp -;;; - -;; -;; Client files should begin with -;; (in-package "FOAM-USER" :use '("FOAM" "LISP")) -;; -;; -;; To Do: -;; Test cases. -;; Scan and format functions need to be rewritten to handle complete syntax. -;; Deftypes for each Foam type? -;; - -<<FOAM>> (in-package "FOAM") (export '( @@ -300,13 +270,13 @@ provides support for compiler code. (defmacro |SFloEQ| (x y) `(= (the |SFlo| ,x) (the |SFlo| ,y))) (defmacro |SFloNE| (x y) `(/= (the |SFlo| ,x) (the |SFlo| ,y))) (defmacro |SFloNegate| (x) `(the |SFlo| (- (the |SFlo| ,x)))) -(defmacro |SFloNext| (x) `(the |SFlo| (+ (the |SFlo| ,x) 1.0s0))) -(defmacro |SFloPrev| (x) `(the |SFlo| (- (the |SFlo| ,x) 1.0s0))) +(defmacro |SFloNext| (x) `(the |SFlo| (+ (the |SFlo| ,x) 1.0s0))) +(defmacro |SFloPrev| (x) `(the |SFlo| (- (the |SFlo| ,x) 1.0s0))) (defmacro |SFloMinus| (x y) `(the |SFlo| (- (the |SFlo| ,x) (the |SFlo| ,y)))) (defmacro |SFloTimes| (x y) `(the |SFlo| (* (the |SFlo| ,x) (the |SFlo| ,y)))) (defmacro |SFloTimesPlus| (x y z) `(the |SFlo| (+ (* (the |SFlo| ,x) (the |SFlo| ,y)) (the |SFlo| ,z)))) -(defmacro |SFloDivide| (x y) `(the |SFlo| (/ (the |SFlo| ,x) (the |SFlo| ,y)))) +(defmacro |SFloDivide| (x y) `(the |SFlo| (/ (the |SFlo| ,x) (the |SFlo| ,y)))) (defmacro |SFloRPlus| (x y r) `(error "unimplemented operation -- SFloRPlus")) (defmacro |SFloRMinus| (x y r) `(error "unimplemented operation -- SFloRTimes")) (defmacro |SFloRTimes| (x y r) `(error "unimplemented operation -- SFloRTimes")) @@ -334,8 +304,8 @@ provides support for compiler code. (defmacro |DFloLT| (x y) `(< (the |DFlo| ,x) (the |DFlo| ,y))) (defmacro |DFloNE| (x y) `(/= (the |DFlo| ,x) (the |DFlo| ,y))) (defmacro |DFloNegate| (x) `(the |DFlo| (- (the |DFlo| ,x)))) -(defmacro |DFloNext| (x) `(the |DFlo| (+ (the |DFlo| ,x) 1.0d0))) -(defmacro |DFloPrev| (x) `(the |DFlo| (- (the |DFlo| ,x) 1.0d0))) +(defmacro |DFloNext| (x) `(the |DFlo| (+ (the |DFlo| ,x) 1.0d0))) +(defmacro |DFloPrev| (x) `(the |DFlo| (- (the |DFlo| ,x) 1.0d0))) (defmacro |DFloPlus| (x y) `(the |DFlo| (+ (the |DFlo| ,x) (the |DFlo| ,y)))) (defmacro |DFloMinus| (x y) `(the |DFlo| (- (the |DFlo| ,x) (the |DFlo| ,y)))) (defmacro |DFloTimes| (x y) `(the |DFlo| (* (the |DFlo| ,x) (the |DFlo| ,y)))) @@ -479,7 +449,7 @@ provides support for compiler code. (defmacro |BIntBit| (x i) `(let ((xx ,x) (ii ,i)) (declare (type |BInt| xx) (type |SInt| ii)) - (logbitp ii xx))) + (logbitp ii xx))) ;;(defmacro |BIntAbs| (x) `(the |BInt| (abs (the |BInt| ,x)))) (defmacro |PtrNil| () ()) @@ -509,10 +479,10 @@ provides support for compiler code. (defmacro |ScanSFlo| (arr i) `(read-from-string ,arr nil (|SFlo0|) - :start ,i :preserve-whitespace t)) + :start ,i :preserve-whitespace t)) (defmacro |ScanDFlo| (arr i) `(read-from-string ,arr nil (|DFlo0|) - :start ,i :preserve-whitespace t)) + :start ,i :preserve-whitespace t)) (defmacro |ScanSInt| (arr i) `(parse-integer ,arr :start ,i :junk-allowed t)) (defmacro |ScanBInt| (arr i) @@ -543,14 +513,14 @@ provides support for compiler code. (defmacro |SetClosFun| (x y) `(rplaca ,x ,y)) (defmacro |SetClosEnv| (x y) `(rplacd ,x ,y)) -(defmacro |MakeEnv| (x y) +(defmacro |MakeEnv| (x y) `(let ((xx ,x) (yy ,y)) (cons yy (cons xx nil)))) -(defmacro |EnvLevel| (x) `(car ,x)) -(defmacro |EnvNext| (x) `(cadr ,x)) -(defmacro |EnvInfo| (x) `(if (and (consp ,x) (consp (cdr ,x))) - (cddr ,x) nil)) -(defmacro |SetEnvInfo| (x val) `(rplacd (cdr ,x) ,val)) +(defmacro |EnvLevel| (x) `(car ,x)) +(defmacro |EnvNext| (x) `(cadr ,x)) +(defmacro |EnvInfo| (x) `(if (and (consp ,x) (consp (cdr ,x))) + (cddr ,x) nil)) +(defmacro |SetEnvInfo| (x val) `(rplacd (cdr ,x) ,val)) #+:CCL (defmacro |FoamEnvEnsure| (e) @@ -601,32 +571,32 @@ provides support for compiler code. (defun insert-types (slots) (mapcar #'(lambda (slot) - `(,(car slot) ,(type2init (cadr slot)) - :type ,(cadr slot))) - slots)) + `(,(car slot) ,(type2init (cadr slot)) + :type ,(cadr slot))) + slots)) (defmacro |RNew| (name) (let* ((struct-args (get name 'struct-args)) - (init-args (mapcar #'(lambda (x) (type2init (cadr x))) - struct-args)) - (count (length struct-args))) + (init-args (mapcar #'(lambda (x) (type2init (cadr x))) + struct-args)) + (count (length struct-args))) (cond ((> count 2) `(vector ,@init-args)) - ((= count 2) `(cons ,@init-args)) - (t `(list ,@init-args))))) + ((= count 2) `(cons ,@init-args)) + (t `(list ,@init-args))))) (defmacro |RElt| (name field index rec) (let ((count (length (get name 'struct-args)))) (cond ((> count 2) `(svref ,rec ,index)) - ((= count 2) - (if (zerop index) `(car ,rec) `(cdr ,rec))) - (t `(car ,rec))))) + ((= count 2) + (if (zerop index) `(car ,rec) `(cdr ,rec))) + (t `(car ,rec))))) (defmacro |SetRElt| (name field index rec val) (let ((count (length (get name 'struct-args)))) (cond ((> count 2) `(setf (svref ,rec ,index) ,val)) - ((= count 2) - (if (zerop index) `(rplaca ,rec ,val) `(rplacd ,rec ,val))) - (t `(rplaca ,rec ,val))))) + ((= count 2) + (if (zerop index) `(rplaca ,rec ,val) `(rplacd ,rec ,val))) + (t `(rplaca ,rec ,val))))) (defmacro |AElt| (name index) `(aref ,name ,index)) @@ -651,25 +621,25 @@ provides support for compiler code. (defmacro |SetLex| (accessor n var val) `(progn ;; (print ',accessor) - (setf (,accessor ,var) ,val))) + (setf (,accessor ,var) ,val))) ;; Atomic arguments for fun don't need a let to hold the fun. ;; CCall's with arguments need a let to hold the prog and the env. (defmacro |CCall| (fun &rest args) (cond ((and (atom fun) (null args)) - `(funcall (|FunProg| (|ClosFun| ,fun)) (|ClosEnv| ,fun))) - ((null args) - `(let ((c ,fun)) - (funcall (|FunProg| (|ClosFun| c)) (|ClosEnv| c)))) - ((atom fun) - `(let ((fun (|FunProg| (|ClosFun| ,fun))) - (env (|ClosEnv| ,fun))) - (funcall fun ,@args env))) - (t - `(let ((c ,fun)) - (let ((fun (|FunProg| (|ClosFun| c))) - (env (|ClosEnv| c))) - (funcall fun ,@args env)))))) + `(funcall (|FunProg| (|ClosFun| ,fun)) (|ClosEnv| ,fun))) + ((null args) + `(let ((c ,fun)) + (funcall (|FunProg| (|ClosFun| c)) (|ClosEnv| c)))) + ((atom fun) + `(let ((fun (|FunProg| (|ClosFun| ,fun))) + (env (|ClosEnv| ,fun))) + (funcall fun ,@args env))) + (t + `(let ((c ,fun)) + (let ((fun (|FunProg| (|ClosFun| c))) + (env (|ClosEnv| c))) + (funcall fun ,@args env)))))) (defmacro |FoamFree| (o) '()) @@ -683,8 +653,8 @@ provides support for compiler code. (defmacro defprog (type temps &rest body) `(progn (defun ,(caar type) ,(mapcar #'car (cadr type)) - (typed-let ,temps ,@body)) - (alloc-prog-info #',(caar type) (make-FoamProgInfoStruct)))) + (typed-let ,temps ,@body)) + (alloc-prog-info #',(caar type) (make-FoamProgInfoStruct)))) (defmacro defspecials (&rest lst) `(proclaim '(special ,@lst))) @@ -701,17 +671,17 @@ provides support for compiler code. #-:CCL (defmacro typed-let (letvars &rest forms) `(let ,(mapcar #'(lambda (var) - (list (car var) (type2init (cadr var)))) - letvars ) + (list (car var) (type2init (cadr var)))) + letvars ) (declare ,@(mapcar #'(lambda (var) - (list 'type (cadr var) (car var))) - letvars)) + (list 'type (cadr var) (car var))) + letvars)) ,@forms)) #+:CCL (defmacro typed-let (letvars &rest forms) `(let ,(mapcar #'(lambda (var) (car var)) - letvars ) + letvars ) ,@forms)) (defmacro cases (&rest junk) @@ -721,15 +691,15 @@ provides support for compiler code. ;;; Boot macros (defmacro file-exports (lst) `(eval-when (load eval) - (when (fboundp 'process-export-entry) - (mapcar #'process-export-entry ,lst)) - nil)) + (when (fboundp 'process-export-entry) + (mapcar #'process-export-entry ,lst)) + nil)) (defmacro file-imports (lst) `(eval-when (load eval) - (when (fboundp 'process-import-entry) - (mapcar #'process-import-entry ,lst)) - nil)) + (when (fboundp 'process-import-entry) + (mapcar #'process-import-entry ,lst)) + nil)) (defmacro ignore-var (var) `(declare (ignore ,var))) @@ -738,8 +708,8 @@ provides support for compiler code. (if (eq type '|Char|) `(make-string ,size) `(make-array ,size - :element-type ',type - :initial-element ,(type2init type)))) + :element-type ',type + :initial-element ,(type2init type)))) #-:CCL (defun type2init (x) @@ -777,9 +747,9 @@ provides support for compiler code. ;needs to stop when it gets a null character (defun |strLength| (s) (dotimes (i (length s)) - (let ((c (schar s i))) - (if (char= c |CharCode0|) - (return i)))) + (let ((c (schar s i))) + (if (char= c |CharCode0|) + (return i)))) (length s)) (defun |formatSInt| (n) (format nil "~D" n)) @@ -795,10 +765,10 @@ provides support for compiler code. ;needs to stop when it gets a null character (defun |printString| (cs s) (dotimes (i (length s)) - (let ((c (schar s i))) - (if (char= c |CharCode0|) - (return i) - (princ c cs))))) + (let ((c (schar s i))) + (if (char= c |CharCode0|) + (return i) + (princ c cs))))) (defun |printSInt| (cs n) (format cs "~D" n)) (defun |printBInt| (cs n) (format cs "~D" n)) @@ -819,46 +789,46 @@ provides support for compiler code. ;; the given input stream (defun |fgetss| (s i1 i2 f) (labels ((aux (n) - (if (= n i2) - (progn (setf (schar s n) (code-char 0)) - (- n i1)) - (let ((c (read-char f))) - (setf (schar s n) c) - (if (equal c #\newline) - (progn (setf (char s (+ n 1)) (code-char 0)) - (- n i1)) - (aux (+ n 1))))))) - (aux i1))) - + (if (= n i2) + (progn (setf (schar s n) (code-char 0)) + (- n i1)) + (let ((c (read-char f))) + (setf (schar s n) c) + (if (equal c #\newline) + (progn (setf (char s (+ n 1)) (code-char 0)) + (- n i1)) + (aux (+ n 1))))))) + (aux i1))) + ;; write s[i1..i2) to the output stream f ;; stop on any null characters (defun |fputss| (s i1 i2 f) (labels ((aux (n) - (if (= n i2) (- n i1) - (let ((c (schar s n))) - (if (equal (code-char 0) c) - (- n i1) - (progn (princ c f) - (aux (+ n 1)))))))) - (setq i2 (if (minusp i2) (|strLength| s) - (min i2 (|strLength| s)))) - (aux i1))) + (if (= n i2) (- n i1) + (let ((c (schar s n))) + (if (equal (code-char 0) c) + (- n i1) + (progn (princ c f) + (aux (+ n 1)))))))) + (setq i2 (if (minusp i2) (|strLength| s) + (min i2 (|strLength| s)))) + (aux i1))) ;; function for compiling and loading from lisp (defun compile-as-file (file &optional (opts nil)) (let* ((path (pathname file)) - (name (pathname-name path)) - (dir (pathname-directory path)) - (type (pathname-type path)) - (lpath (make-pathname :name name :type "l")) - (cpath (make-pathname :name name :type "o"))) + (name (pathname-name path)) + (dir (pathname-directory path)) + (type (pathname-type path)) + (lpath (make-pathname :name name :type "l")) + (cpath (make-pathname :name name :type "o"))) (if (null type) - (setq path (make-pathname :directory dir :name name :type "as"))) + (setq path (make-pathname :directory dir :name name :type "as"))) (if opts - (system (format nil "axiomxl ~A -Flsp ~A" opts (namestring path))) - (system (format nil "axiomxl -Flsp ~A" (namestring path)))) + (system (format nil "axiomxl ~A -Flsp ~A" opts (namestring path))) + (system (format nil "axiomxl -Flsp ~A" (namestring path)))) (compile-file (namestring lpath)) (load (namestring cpath)))) @@ -895,10 +865,10 @@ provides support for compiler code. (defun |Halt| (n) (error (cond ((= n 101) "System Error: Unfortunate use of dependant type") - ((= n 102) "User error: Reached a 'never'") - ((= n 103) "User error: Bad union branch") - ((= n 104) "User error: Assertion failed") - (t (format nil "Unknown halt condition ~a" n))))) + ((= n 102) "User error: Reached a 'never'") + ((= n 103) "User error: Bad union branch") + ((= n 104) "User error: Assertion failed") + (t (format nil "Unknown halt condition ~a" n))))) ;; debuging (defvar *foam-debug-var* nil) (defun |fiGetDebugVar| () *foam-debug-var*) @@ -937,9 +907,3 @@ provides support for compiler code. ( (|politicallySound| (car u) (car v)) (|magicEq1| (cdr u) (cdr v))) nil )) -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/interp/ggreater.lisp b/src/interp/ggreater.lisp index a77438c0..c27ff31e 100644 --- a/src/interp/ggreater.lisp +++ b/src/interp/ggreater.lisp @@ -1,5 +1,7 @@ ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are diff --git a/src/interp/hash.lisp.pamphlet b/src/interp/hash.lisp index be039807..b462a621 100644 --- a/src/interp/hash.lisp.pamphlet +++ b/src/interp/hash.lisp @@ -1,22 +1,7 @@ -\documentclass{article} -\usepackage{axiom} - -\title{\File{src/interp/hash.lisp} Pamphlet} -\author{Timothy Daly} - -\begin{document} -\maketitle -\begin{abstract} -\end{abstract} - -\tableofcontents -\eject - -\section{License} - -<<license>>= ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are @@ -46,16 +31,13 @@ ;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -@ -<<*>>= -<<license>> (IMPORT-MODULE "vmlisp") (in-package "BOOT") (export '(MAKE-HASHTABLE HGET HKEYS HCOUNT HPUT HPUT* HREM HCLEAR HREMPROP HASHEQ HASHUEQUAL HASHCVEC HASHID HASHTABLEP CVEC UEQUAL ID HPUTPROP - HASHTABLE-CLASS)) + HASHTABLE-CLASS)) ;17.0 Operations on Hashtables ;17.1 Creation @@ -63,12 +45,12 @@ (defun MAKE-HASHTABLE (id1 &optional (id2 nil)) (declare (ignore id2)) (let ((test (case id1 - ((EQ ID) #'eq) - (CVEC #'equal) - (EQL #'eql) - #+Lucid ((UEQUAL EQUALP) #'EQUALP) - #-Lucid ((UEQUAL EQUAL) #'equal) - (otherwise (error "bad arg to make-hashtable"))))) + ((EQ ID) #'eq) + (CVEC #'equal) + (EQL #'eql) + #+Lucid ((UEQUAL EQUALP) #'EQUALP) + #-Lucid ((UEQUAL EQUAL) #'equal) + (otherwise (error "bad arg to make-hashtable"))))) (make-hash-table :test test))) ;17.2 Accessing @@ -95,18 +77,18 @@ #+AKCL (defun HASHTABLE-CLASS (table) (case (memory-value-short table 12) - (0 'EQ) - (1 'EQL) - (2 'EQUAL) - (t "error unknown hash table class"))) + (0 'EQ) + (1 'EQL) + (2 'EQUAL) + (t "error unknown hash table class"))) #+:CCL (defun HASHTABLE-CLASS (table) (case (hashtable-flavour table) - (0 'EQ) - (1 'EQL) - (2 'EQUAL) - (t (format nil "error unknown hash table class ~a" (hashtable-flavour table))))) + (0 'EQ) + (1 'EQL) + (2 'EQUAL) + (t (format nil "error unknown hash table class ~a" (hashtable-flavour table))))) (define-function 'HCOUNT #'hash-table-count) @@ -139,9 +121,3 @@ (define-function 'HASHCVEC #'sxhash) (define-function 'HASHID #'sxhash) -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/interp/interp-proclaims.lisp b/src/interp/interp-proclaims.lisp deleted file mode 100644 index 30d61fc7..00000000 --- a/src/interp/interp-proclaims.lisp +++ /dev/null @@ -1,3391 +0,0 @@ - -(IN-PACKAGE "USER") -(PROCLAIM '(FTYPE (FUNCTION (*) (VALUES T T)) BOOT:|ReadLine|)) -(PROCLAIM - '(FTYPE (FUNCTION (T) FUNCTION) FOAM::FOAMPROGINFOSTRUCT-FUNCALL)) -(PROCLAIM - '(FTYPE (FUNCTION (T) FIXNUM) BOOT::LINE-NUMBER BOOT::|eq0| - VMLISP:CHAR2NUM BOOT::|nothingWidth| BOOT::|nothingSub| - BOOT::|nothingSuper| BOOT::LINE-LAST-INDEX - BOOT::LINE-CURRENT-INDEX FOAM:|ProgHashCode| - FOAM:|strLength| BOOT:|StringLength| BOOT::|widthSC|)) -(PROCLAIM - '(FTYPE (FUNCTION (T) FOAM:|SInt|) - FOAM::FOAMPROGINFOSTRUCT-HASHVAL)) -(PROCLAIM - '(FTYPE (FUNCTION (T) (VALUES T T)) BOOT::|mkSharpVar| - BOOT::|makeCharacter| BOOT::|mapCatchName| - BOOT::|queryUser| BOOT:|LispKeyword| BOOT::MONITOR-INFO - BOOT::FILE-GETTER-NAME BOOT::|mkDomainCatName| - FOAM:AXIOMXL-FILE-INIT-NAME BOOT::|getKeyedMsg| - BOOT::|mkCacheName| BOOT::|mkAuxiliaryName|)) -(PROCLAIM - '(FTYPE (FUNCTION ((VECTOR T) (VECTOR T)) T) VMLISP::VGREATERP - VMLISP::LEXVGREATERP)) -(PROCLAIM '(FTYPE (FUNCTION ((VECTOR T)) T) BOOT:TRIMLZ)) -(PROCLAIM - '(FTYPE (FUNCTION (T) (*)) BOOT:|StringToInteger| - BOOT:|StringToFloat|)) -(PROCLAIM '(FTYPE (FUNCTION (T *) (VALUES T T)) VMLISP:|read-line|)) -(PROCLAIM '(FTYPE (FUNCTION (STRING FIXNUM) T) BOOT::|subWord|)) -(PROCLAIM - '(FTYPE (FUNCTION (T T) FIXNUM) VMLISP:QSQUOTIENT - VMLISP:QSREMAINDER VMLISP:QENUM FOAM:|SetProgHashCode| - BOOT:GETCHARN BOOT::|attributeCategoryParentCount|)) -(PROCLAIM - '(FTYPE (FUNCTION (T T) (VALUES T T)) BOOT::|htMakeLabel| - BOOT::|fetchKeyedMsg|)) -(PROCLAIM - '(FTYPE (FUNCTION (T T T T T) *) BOOT::|applpar1| BOOT::|apprpar1| - BOOT::|appargs1| BOOT::|appagg1| BOOT::|matrixBorder| - BOOT::|e02befDefaultSolve| BOOT::|e02agfDefaultSolve| - BOOT::|e02dafDefaultSolve| BOOT::|htQueryPage| - BOOT::|compileAndLink| BOOT::|f04jgfDefaultSolve| - BOOT::|f02aefDefaultSolve| BOOT::|f02agfDefaultSolve| - BOOT::|apphor| BOOT::|appvertline| BOOT::|applpar| - BOOT::|e04jafDefaultSolve| BOOT::|f01brfDefaultSolve| - BOOT::|e04ycfDefaultSolve|)) -(PROCLAIM - '(FTYPE (FUNCTION (T T *) *) VMLISP:CONCAT - BOOT::LOCALDATABASE BOOT::FE BOOT::|ncBug|)) -(PROCLAIM - '(FTYPE (FUNCTION (T T T) *) BOOT::|replacePercentByDollar,fn| - BOOT::|getSlotFromDomain| BOOT::|ncGetFunction| - BOOT::|c02affDefaultSolve| BOOT::|c02agfDefaultSolve| - BOOT::|Qf2F| BOOT::|selectOptionLC| BOOT::|compUniquely| - BOOT::|compExpression| BOOT::|e02gafDefaultSolve| - BOOT::|e02aefDefaultSolve| BOOT::|e02bbfDefaultSolve| - BOOT::|asytranForm| BOOT::|asytranFormSpecial| - BOOT::|asytranApplySpecial| BOOT::SOCK-GET-STRING - BOOT::|sockGetString| BOOT::|showIt| BOOT::|pmPreparse,fn| - BOOT::|pmPreparse,gn| BOOT::|dbSearchAbbrev| - BOOT::|mkUpDownPattern,recurse| BOOT::|htMkPath| - BOOT::|getVal| BOOT::|htGlossPage| BOOT::|checkCondition| - BOOT::|compTopLevel| BOOT::GETOP - BOOT::|checkTransformFirsts| BOOT::|parseIf,ifTran| - BOOT::|dbShowOpAllDomains| BOOT::|templateVal| - BOOT::|dbChooseDomainOp| BOOT::|whoUsesOperation| - BOOT::|c05pbfDefaultSolve| BOOT::|c05nbfDefaultSolve| - BOOT::|c06frfDefaultSolve| BOOT::|c06ekfDefaultSolve| - BOOT::|NRTvectorCopy| BOOT::|c06fufDefaultSolve| - BOOT::|c06fpfDefaultSolve| BOOT::|c06fqfDefaultSolve| - BOOT::|applyInPackage| BOOT::|exp2FortSpecial| - BOOT::|f04mcfDefaultSolve| BOOT::|f04atfDefaultSolve| - BOOT::|f04fafDefaultSolve| BOOT::|f02affDefaultSolve| - BOOT::|dbShowCons1| BOOT::|f02aafDefaultSolve| - BOOT::|dbSelectCon| BOOT::|dbShowOperationsFromConform| - BOOT::|genSearch1| BOOT::|dbSearch| - BOOT::|constructorSearch| BOOT::|underscoreDollars,fn| - BOOT::|oSearchGrep| BOOT::|selectOption| - BOOT::|constructorSearchGrep| BOOT::|dbInfoChoose1| - BOOT::|bcDrawIt2| BOOT::|charybdis| BOOT::|bcMkFunction| - BOOT::|charyTop| BOOT::|bcDrawIt| - BOOT::|f01qcfDefaultSolve| BOOT::|e02zafDefaultSolve| - BOOT::|ncloopInclude0| VMLISP:$FCOPY)) -(PROCLAIM - '(FTYPE (FUNCTION (T T T T T T) *) BOOT::|e02befColdSolve| - BOOT::|e02ahfDefaultSolve| BOOT::|e02akfDefaultSolve| - BOOT::|d02bbfDefaultSolve| BOOT::|d02cjfDefaultSolve| - BOOT::|e01sefDefaultSolve| BOOT::|htSetLiterals| - BOOT::|f04mbfDefaultSolve| BOOT::|f02axfDefaultSolve| - BOOT::|f02akfDefaultSolve| BOOT::|kcaPage1| - BOOT::MAKE-DEPSYS BOOT::|makeLongStatStringByProperty| - BOOT::|f01rdfDefaultSolve| BOOT::|f01qdfDefaultSolve|)) -(PROCLAIM - '(FTYPE (FUNCTION (T T T T) *) BOOT::|compileConstructorLib| - BOOT::|quoteApp| BOOT::|argsapp| BOOT::|appargs| - BOOT::|inApp| BOOT::|appsc| BOOT::|appfrac| BOOT::|exptApp| - BOOT::|charyTrouble| BOOT::|overbarApp| - BOOT::|appHorizLine| BOOT::|overlabelApp| BOOT::/D-1 - BOOT::|appmat| BOOT::|e01bhfDefaultSolve| - BOOT::|e02adfDefaultSolve| BOOT::|e02bcfDefaultSolve| - BOOT::|makeStream| BOOT::|newExpandLocalTypeArgs| - FOAM:|fputss| FOAM:|fgetss| BOOT::|f01mafDefaultSolve| - BOOT::|conform2StringList| BOOT::|f02abfDefaultSolve| - BOOT::|f02awfDefaultSolve| BOOT::|f02ajfDefaultSolve| - BOOT::|f02adfDefaultSolve| BOOT::|patternCheck,mknew| - BOOT::|kDomainName| BOOT::|koPageAux| BOOT::|dbShowOp1| - BOOT::APP BOOT::|appagg| BOOT::|binomialApp| - BOOT::|charyTrouble1| BOOT::|appsub| BOOT::|slashApp| - BOOT::|appsetq| BOOT::|makeStatString| - BOOT::|e02dffDefaultSolve| BOOT::|e04dgfDefaultSolve| - BOOT::|e04fdfDefaultSolve| BOOT::|e04gcfDefaultSolve| - BOOT::|f01refDefaultSolve| BOOT::|f01qefDefaultSolve|)) -(PROCLAIM - '(FTYPE (FUNCTION (T T T T T T T T T T) *) BOOT::|makeFortranFun| - BOOT::|d03eefDefaultSolve| BOOT::|e04nafDefaultSolve|)) -(PROCLAIM - '(FTYPE (FUNCTION (T T T T T T T) *) BOOT::|e02ajfDefaultSolve| - BOOT::|e02dcfDefaultSolve| BOOT::|e02ddfDefaultSolve| - BOOT::|d02ejfDefaultSolve| BOOT::|d02bhfDefaultSolve| - BOOT::|d01fcfDefaultSolve| BOOT::|d01gbfDefaultSolve| - BOOT::|f04qafDefaultSolve| BOOT::|f02bjfDefaultSolve| - BOOT::|f02bbfDefaultSolve| BOOT::|e04mbfDefaultSolve|)) -(PROCLAIM - '(FTYPE (FUNCTION (T T T T T T T T T T T T T T) *) - BOOT::BUILD-INTERPSYS)) -(PROCLAIM - '(FTYPE (FUNCTION (T T T T T T T T) *) BOOT::|e02ddfColdSolve| - BOOT::|f02xefDefaultSolve| BOOT::|f02wefDefaultSolve| - BOOT::BUILD-DEPSYS)) -(PROCLAIM - '(FTYPE (FUNCTION (T T T T T T T T T) *) BOOT::|e04ucfDefaultSolve| - BOOT::|e02dcfColdSolve| BOOT::|d02kefDefaultSolve| - BOOT::|d02gbfDefaultSolve| BOOT::|d02gafDefaultSolve|)) -(PROCLAIM - '(FTYPE (FUNCTION (T T T T T T T T T T T T T) *) - BOOT::|d02rafDefaultSolve|)) -(PROCLAIM - '(FTYPE (FUNCTION (T T T) T) BOOT::|mapRecurDepth| BOOT::THETACHECK - BOOT::|flowSegmentedMsg| BOOT::|rewriteMap0| - BOOT::|restoreDependentMapInfo| BOOT::|dcSig| - BOOT::|analyzeNonRecur| BOOT::|addMap| BOOT::|fortCall| - BOOT::|axAddLiteral| BOOT::|writeStringLengths| - BOOT::|writeXDR| BOOT::|deleteMap| BOOT::|fnameNew| - BOOT::|axFormatDefaultOpSig| BOOT::|htpSetProperty| - BOOT::|rewriteMap1| BOOT::|displayMap| - BOOT::|compileDeclaredMap| BOOT::|compileCoerceMap| - BOOT::|displaySingleRule| BOOT::|hasAtt| BOOT::|hasAttSig| - BOOT::SPADRWRITE0 BOOT::SPADRWRITE BOOT::|recordNewValue| - BOOT::|recordOldValue| BOOT::|orderUnionEntries,split| - BOOT::|getSlotNumberFromOperationAlist| - BOOT::|isSuperDomain| BOOT::|recordOldValue0| - BOOT::|PARSE-getSemanticForm| BOOT::|recordNewValue0| - BOOT::|getSlotFromFunctor| BOOT::|addConstructorModemaps| - BOOT::|compDefWhereClause| BOOT::|get1| BOOT::|get2| - BOOT::|get0| BOOT::|throwListOfKeyedMsgs| - BOOT::|getConstructorOpsAndAtts| - BOOT::|mkExplicitCategoryFunction| - BOOT::|findDomainSlotNumber| BOOT::|addIntSymTabBinding| - BOOT::|sigsMatch| BOOT::|compDefineAddSignature| - BOOT::|hasFullSignature| BOOT:ELEMN BOOT::|mkAtree2| - BOOT::|mkAtree3| BOOT::|getValueFromSpecificEnvironment| - BOOT::|compForMode| BOOT::|transferPropsToNode,transfer| - BOOT::|genDomainOps| BOOT::|getOperationAlist| - BOOT::|remprop| BOOT::|setMsgForcedAttr| BOOT::|P2Uts| - BOOT::|Up2FR| BOOT::|mac0Define| BOOT::|getMappingArgValue| - BOOT::|compContained| BOOT::|getArgValueComp| - BOOT::|altTypeOf| BOOT::|mac0InfiniteExpansion| - BOOT::|setMsgUnforcedAttr| BOOT::|genDomainViewList| - BOOT::|compSubDomain| BOOT::|compCapsule| - BOOT::|sideEffectedArg?| BOOT::|evalFormMkValue| - BOOT::|doItIf| BOOT::|compSingleCapsuleItem| - BOOT::|compJoin| BOOT::|rewriteMap| - BOOT::|NRTgetLookupFunction| BOOT::|lisplibWrite| - BOOT::|getLocalMms| BOOT::|makeFunctorArgumentParameters| - BOOT::|selectMmsGen,exact?| BOOT::REDUCE-1 - BOOT::|getLocalMms,f| BOOT::|isOpInDomain| - BOOT::|compDefine| BOOT::|compCategory| - BOOT::|getTargetFromRhs| BOOT::|unifyStructVar| - BOOT::|augmentSub| BOOT::|unifyStruct| BOOT::|compAdd| - BOOT::|filterModemapsFromPackages| BOOT::|constrArg| - BOOT::|evalMmCond0| BOOT::|maprinSpecial| BOOT::|hasCaty| - BOOT::|evalMmCond| BOOT:ADDASSOC BOOT::|hasCate| - BOOT::|matchTypes| BOOT::|findUniqueOpInDomain| - BOOT::|hasSigOr| BOOT::|hasSigAnd| - BOOT::|findCommonSigInDomain| BOOT::|evalMmCat1| - BOOT::|coerceTypeArgs| BOOT::|domArg2| BOOT::|L2Tuple| - BOOT::V2M BOOT::DEF-INNER BOOT::|OV2Sy| BOOT::|Qf2EF| - BOOT::|Sy2P| BOOT::I2NNI BOOT::|Rm2L| BOOT::|Var2OtherPS| - BOOT::|Var2UpS| BOOT::OV2SE BOOT::|NDmp2domain| VMLISP:PUT - BOOT::|Var2Up| BOOT::|Expr2Mp| BOOT::|Expr2Dmp| - BOOT::|Sy2NDmp| VMLISP:DEFIOSTREAM BOOT::|Dmp2P| - BOOT::|Sy2Mp| BOOT::|Var2SUP| BOOT::|Factored2Factored| - VMLISP:EQSUBSTLIST BOOT::I2PI BOOT::|P2Expr| BOOT::|P2Up| - BOOT::|P2Dmp| BOOT::|Var2FS| BOOT::|Sy2Dmp| BOOT::B-MDEF - BOOT::|Ker2Expr| BOOT::|Sy2OV| BOOT::|Var2QF| BOOT::|Sm2V| - BOOT::M2V BOOT::|Var2P| BOOT::I2OI BOOT::P2FR - BOOT::|makeEijSquareMatrix| BOOT::|Set2L| BOOT::|Sm2Rm| - BOOT::DEF BOOT::|Var2NDmp| BOOT::|Dmp2Dmp| - BOOT::|coerceDmp2| BOOT::|rread| BOOT::I2EI BOOT::|Var2Mp| - BOOT::|compCapsuleInner| BOOT::|Mp2FR| BOOT::|Qf2domain| - BOOT::|compCapsuleItems| BOOT::|L2Set| BOOT::|Var2Gdmp| - BOOT::COMP-ILAM BOOT::COMP-SPADSLAM BOOT::|L2Sm| - BOOT::|mkCategoryPackage| BOOT::COMP-SLAM BOOT::L2M - BOOT::|compDefine1| BOOT::|Mp2Expr| BOOT::|Ker2Ker| - BOOT::|Var2Dmp| VMLISP:MSUBST BOOT::|Dmp2NDmp| - BOOT::|Sm2PolyType| BOOT::|Var2OV| - BOOT::|orderPredicateItems| BOOT::|L2Rm| BOOT::|substVars| - BOOT::|OV2poly| BOOT::|Sm2M| - BOOT::|augmentLisplibModemapsFromFunctor| BOOT::OV2P - BOOT::|needBlankForRoot| BOOT::|Rn2F| - BOOT::|getInCoreModemaps| BOOT::|Sm2L| BOOT::|splitConcat| - BOOT::|Un2E| BOOT::|SUP2Up| BOOT::OV2OV - BOOT::|insertAlist,fn| BOOT::|replaceVars| - BOOT::|compFromIf| BOOT::|Scr2Scr| BOOT::|compBoolean| - BOOT::|L2Record| BOOT::|Rm2V| VMLISP:RPLNODE - BOOT::|domain2NDmp| BOOT::|Up2Up| - BOOT::|augLisplibModemapsFromCategory| BOOT::|P2Mp| - BOOT::|compWithMappingMode,FreeList| BOOT::|orderPredTran| - BOOT::|Rm2Sm| BOOT::|Rm2M| BOOT::|Up2SUP| BOOT::|Mp2Up| - BOOT::|Mp2Dmp| BOOT::|LargeMatrixp| BOOT::DP2DP - BOOT::|Dmp2Up| BOOT::|Up2P| BOOT::|Complex2Expr| - BOOT::|seteltModemapFilter| BOOT::/MONITORX BOOT::|P2Upxs| - BOOT::|coerceTraceFunValue2E| BOOT::|Complex2FR| - BOOT::|Up2Mp| BOOT::V2L BOOT::|P2Uls| BOOT::|M2Sm| - BOOT::|coerceTraceArgs2E| BOOT::|Complex2underDomain| - BOOT::|resolveTTRed2| BOOT::|Agg2L2Agg| - BOOT::|resolveTTRed1| BOOT::|fnameMake| - BOOT::MONITOR-PRINARGS VMLISP:HREMPROP - BOOT::|eltModemapFilter| BOOT::|coerceOrCroak| - BOOT::|resolveTTEq2| BOOT::|resolveTTEq1| - BOOT::|matchUpToPatternVars| - BOOT::|getConditionalCategoryOfType| - BOOT::|getSubDomainPredicate| BOOT::|resolveTMEq2| - BOOT::|coerceIntX| BOOT::|compSymbol| - BOOT::|coerceSubDomain| BOOT::|compExpressionList| - BOOT::|NRTcompileEvalForm| BOOT::|setqMultiple,decompose| - BOOT::|permuteToOrder| BOOT::|retractUnderDomain| - BOOT::|compList| BOOT::SMALL-ENOUGH-COUNT - BOOT::|isRectangularList| BOOT::|augModemapsFromDomain1| - BOOT::|canCoerceByFunction1| - BOOT::|sayFunctionSelectionResult| BOOT::|compForm| - BOOT::|compTypeOf| BOOT::|comp3| BOOT::|coerceOrFail| - BOOT::|computeTTTranspositions,compress| BOOT::|algEqual| - BOOT::|compiledLookupCheck| VMLISP:RWRITE - BOOT::|coerceOrThrowFailure| BOOT::|NRTcompiledLookup| - BOOT::|spad2BootCoerce| BOOT::|M2Rm| BOOT::M2M - VMLISP:MACRO-INVALIDARGS BOOT::L2V BOOT::|Mp2P| - BOOT::|Mp2Mp| BOOT::|coerceDmpCoeffs| BOOT::|Expr2Complex| - BOOT::|Dmp2Expr| BOOT::|coerceFFE| BOOT::M2L VMLISP:QESET - BOOT::|V2Sm| BOOT::|isRectangularVector| BOOT::V2DP - BOOT::L2DP BOOT::|Up2Expr| BOOT::|Qf2Qf| BOOT::|NDmp2NDmp| - BOOT::|V2Rm| BOOT::|Qf2PF| BOOT::|Dmp2Mp| BOOT::|Up2Dmp| - BOOT::|Sy2Var| BOOT::|Agg2Agg| BOOT::|Expr2Up| - BOOT::|Sy2Up| VMLISP:HPUT BOOT::|pvarCondList1| - VMLISP:SUBSTRING BOOT::|interpRewriteRule| BOOT::|putAtree| - BOOT::|isEltable| BOOT::|selectMms| BOOT::|throwKeyedMsgSP| - BOOT::|pushDownTargetInfo| - BOOT::|pushDownOnArithmeticVariables| - BOOT::|keyedMsgCompFailureSP| BOOT::|intCodeGenCoerce1| - BOOT::|throwKeyedMsgCannotCoerceWithValue| - BOOT::|asytranForm1| BOOT::|hput| BOOT::|asyCattranOp1| - BOOT::|asyMakeOperationAlist| BOOT::|setVector4| - BOOT::|SetDomainSlots124| BOOT::|asGetExports| - BOOT::|asySig1| BOOT::|ncPutQ| - BOOT::|putConstructorProperty| BOOT::|throwKeyedErrorMsg| - BOOT::|mkUserConstructorAbbreviation| - BOOT::|unabbrevSpecialForms| BOOT::|nAssocQ| - BOOT::|New,ENTRY,2| BOOT::READ-INPUT BOOT::READ-SPAD - BOOT::|errorSupervisor1| BOOT::|argumentDataError| - BOOT::|BesselasymptA| BOOT::|htpSetLabelSpadValue| - BOOT::|optPackageCall| BOOT::|from?| BOOT::|clngamma| - BOOT::|chebevalarr| BOOT::|PsiBack| BOOT::|logH| - BOOT::|PiMinusLogSinPi| BOOT::|besselIcheb| - BOOT::|chebstarevalarr| BOOT::|chebf01coefmake| - BOOT::|clngammacase23| BOOT::|PsiAsymptoticOrder| - BOOT::|grepf| BOOT::|clngammacase1| BOOT::|cotdiffeval| - BOOT::|BesselIAsympt| BOOT::|lffloat| - BOOT::|substringMatch| BOOT::|makeResultRecord| - BOOT::|makeCompilation| BOOT::|extractFileNameFromPath,fn| - BOOT::|makeAspGenerators| BOOT::|makeAspGenerators1| - BOOT::|mkNewUnionFunList| BOOT::|EnumEqual| - BOOT::|cleanUpAfterNagman| BOOT::|sySpecificErrorAtToken| - BOOT::|prepareResults,defaultValue| - BOOT::|setVector4Onecat| BOOT::|pfLambda| BOOT::|pfWIf| - BOOT::|SigSlotsMatch| BOOT::|DomainPrint1| - BOOT::|DescendCodeAdd1,update| BOOT::|CheckVector| - BOOT::|pfTLambda| BOOT::|htSystemVariables,fn| - BOOT::|postCollect,finish| VMLISP:|nsubst| - BOOT::|npBackTrack| BOOT::|bchtMakeButton| - BOOT::|compWhere| BOOT::|compVector| BOOT::|compAtom| - BOOT::|getUniqueModemap| BOOT::|modeIsAggregateOf| - BOOT::|compArgumentsAndTryAgain| VMLISP:MACRO-MISSINGARGS - BOOT::|compForm1| BOOT::|mergeModemap| - BOOT::|compSubsetCategory| BOOT::|compString| - BOOT::|augModemapsFromDomain| BOOT::|compWithMappingMode| - BOOT::|extractCodeAndConstructTriple| BOOT::|compCat| - BOOT::|pfWith| BOOT::|compMakeDeclaration| - BOOT::|extendsCategoryForm| BOOT::|compSeq| - BOOT::|compSeq1| BOOT::|compReturn| BOOT::|isSubset| - BOOT::|getModemapList| BOOT::|compCase1| - BOOT::|compCoerce1| BOOT::|compPretend| BOOT::|compMacro| - BOOT::|compConstructorCategory| BOOT::|compCoerce| - BOOT::|compColon| BOOT::|compSetq| BOOT::|compLeave| - BOOT::|npList| BOOT::|modeEqualSubst| BOOT::|compIf| - BOOT::|compIs| BOOT::|comp2| BOOT::|compImport| - BOOT::|coerce,fn| BOOT::|throwKeyedMsgFromDb| - BOOT::|sayKeyedMsgFromDb| BOOT::|compHas| BOOT::|compExit| - BOOT::|compElt| BOOT::|compConstruct| BOOT::|compCons| - BOOT::|compCons1| BOOT::|compSeqItem| - BOOT::|recordInstantiation1| BOOT::|compCase| - BOOT::|compQuote| BOOT::|recordInstantiation| - BOOT::|compAtSign| BOOT::|compSuchthat| - BOOT::|addToConstructorCache| BOOT::|loadLibNoUpdate| - BOOT::SETDATABASE BOOT::|lassocShiftWithFunction| - BOOT::|assocCache| BOOT::|assocCacheShift| - BOOT::|assocCacheShiftCount| BOOT::|pileForests| - BOOT::|isLegitimateMode;| BOOT::|hasFileProperty;| - BOOT::|coerceConvertMmSelection;| - BOOT::|hasFilePropertyNoCache| BOOT::|writeLib1| - BOOT::|rwrite| BOOT::|putModemapIntoDatabase| - BOOT::|getOplistWithUniqueSignatures| - BOOT::|checkSkipOpToken| BOOT::|checkSkipIdentifierToken| - BOOT::|readLib1| BOOT::|checkSkipBlanks| - BOOT::MAKE-PARSE-FUNC-FLATTEN-1 BOOT::|checkSkipToken| - BOOT::|getDocForCategory| BOOT::|newWordFrom| - BOOT::PRINT-XDR-STREAM BOOT::|getDocForDomain| - BOOT::|getDoc| BOOT::|htcharPosition| - BOOT::|PackageDescendCode| BOOT::|RecordEqual| - BOOT::|processPackage,replace| BOOT::|UnionEqual| - BOOT::|mkEnumerationFunList| BOOT::|mkMappingFunList| - BOOT::|mkUnionFunList| BOOT::|mkRecordFunList| - BOOT::|MappingEqual| BOOT::|CondAncestorP| - BOOT::|updateDatabase| BOOT::|compressSexpr| - BOOT::|parseTypeError| BOOT::|moreGeneralCategoryPredicate| - BOOT::|encodeUnion| BOOT::|makeCatPred| - BOOT::|lookupInDomainByName| BOOT::|simpHasAttribute| - BOOT::|domainHput| BOOT::|simpHasPred,simpHas| - BOOT::|substDollarArgs| BOOT::|NRTisRecurrenceRelation| - BOOT::|dbShowOpSigList| BOOT::|dbSelectData| - BOOT::|dbReduceOpAlist| BOOT::|listOfCategoryEntriesIf| - BOOT::|dbResetOpAlistCondition| - BOOT::|algCoerceInteractive| BOOT::|buildPredVector,fn| - BOOT::|extendsCategoryBasic| BOOT::|catExtendsCat?| - BOOT::|expandType| BOOT::|expandTypeArgs| BOOT::|stuffSlot| - BOOT::|dbPresentOpsSaturn| BOOT::|reduceOpAlistForDomain| - BOOT::|mungeAddGensyms,fn| BOOT::|dbReduceBySelection| - BOOT::|extendsCategoryBasic0| BOOT::|substSlotNumbers| - BOOT::|dbReduceBySignature| BOOT::|extendsCategory| - BOOT::|buildPredVector| BOOT::|dbParts| - BOOT::|NRTextendsCategory1| BOOT::|getSubstQualify| - BOOT::|fortFormatLabelledIfGoto| BOOT::|whoUsesMatch1?| - BOOT::|fullSubstitute| BOOT::|whoUsesMatch?| - BOOT::|getfortarrayexp| BOOT::|addWhereList| - BOOT::|dbGetDisplayFormForOp| - BOOT::|dbGetFormFromDocumentation| BOOT::|anySubstring?| - VMLISP::MAKE-ENTRY BOOT::|NRTsetVector4a| - BOOT::|NRTsetVector4Part1| BOOT::|NRTencode,encode| - BOOT::|consOpSig| BOOT::|genSlotSig| BOOT::|NRTsetVector4| - BOOT::|newExpandGoGetTypeSlot| BOOT::MAKEOP - BOOT::|insertEntry| BOOT::|nextown| BOOT::|mkFortFn| - BOOT::|exp2Fort2| BOOT::|evalQUOTE| BOOT::|evalSEQ| - BOOT::|IFcodeTran| BOOT::|exp2FortFn| - BOOT::|fortFormatHead| BOOT::|addContour,fn1| - BOOT::|traverse,traverseInner| BOOT::|upTableSetelt| - BOOT::|printSignature| BOOT::|addContour,fn3| - BOOT::|commandAmbiguityError| BOOT::|charPosition| - BOOT::|traverse| BOOT::|dbPart| BOOT::|commandErrorMessage| - BOOT::|substituteOp| BOOT::|displayModemap| - BOOT::|displayType| BOOT::|comp| BOOT::|displayMode| - BOOT::|numOfOccurencesOf,fn| VMLISP::QUOREM - BOOT::|pmatchWithSl| BOOT::|displayCondition| - BOOT::|displayValue| - BOOT::|intersectionContour,buildModeAssoc| BOOT::|get| - BOOT::|sigDomainVal| BOOT::GEQNSUBSTLIST - BOOT::|compNoStacking| BOOT::|transImplementation| - BOOT::GEQSUBSTLIST BOOT::|libConstructorSig,g| - BOOT::|coerceable| BOOT::|substituteIntoFunctorModemap| - BOOT::|adjExitLevel| BOOT::|getParentsFor| - BOOT::|asytranApply| BOOT::|explodeIfs,fn| BOOT::|dbSplit| - BOOT::|buildLibAttr| BOOT::|buildLibOp| - BOOT::|transKCatAlist| BOOT::|dbTickIndex| - BOOT::|insertShortAlist| BOOT::|sublisFormal,sublisFormal1| - BOOT::PUTALIST FOAM:|FormatNumber| - BOOT::|dbSetOpAlistCondition| BOOT::|compiledLookup| - BOOT::|insertAlist| BOOT::|reduceAlistForDomain| - BOOT:|StreamCopyChars| BOOT:|StreamCopyBytes| - BOOT::|dbXParts| BOOT::|kePageDisplay| - BOOT::|dbShowOpItems| BOOT::MKPFFLATTEN-1 - BOOT::|dbSearchOrder| BOOT::CARCDRX1 BOOT::SETELTREST - BOOT::SETELTFIRST BOOT::AS-INSERT1 BOOT::AS-INSERT - BOOT::PROPERTY BOOT::|mkDomTypeForm| BOOT::|stringPosition| - BOOT:|StringFromTo| BOOT::|patternCheck,equal| - BOOT:|StringFromLong| BOOT::|rightCharPosition| - BOOT::|infix?| BOOT::|matchSegment?| BOOT::|stringMatch| - BOOT::|skipBlanks| BOOT::|dbPresentConsSaturn| - BOOT::MAKE-DEFUN BOOT::|compOrCroak| BOOT::|profileRecord| - BOOT::|getSignature| BOOT::|traceDomainLocalOps| - BOOT::|getArgumentModeOrMoan| - BOOT::|filterListOfStringsWithFn| - BOOT::|mkGrepPattern1,charPosition| - BOOT::|displayModemap,g| - BOOT::|filterAndFormatConstructors| BOOT::READ-BOOT - BOOT::|userLevelErrorMessage| BOOT::|addBinding| - BOOT::|dbShowConsDoc1| BOOT::|makePathname| - BOOT::|mkConform| BOOT::|dbInfoFindCat| BOOT::|compReduce| - BOOT::|dbShowInfoList| BOOT::|dbShowConditions| - BOOT::|compRepeatOrCollect| BOOT::|dbInfoOrigin| - BOOT::|dbConstructorDoc| BOOT::|interpret2| - BOOT::|htpSetLabelInputString| BOOT::|letPrint2| - BOOT::|letPrint| BOOT::|mapLetPrint| - BOOT::|htpAddInputAreaProp| BOOT::|getOpBindingPower| - BOOT::|infixArgNeedsParens| BOOT::|linearFinalRequest| - BOOT::|bcInputEquations,f| BOOT::|htpSetLabelErrorMsg| - BOOT::|isBreakSegment?| BOOT::|substring?| - BOOT::|sublisMatAlist| BOOT::MAKESPAD - BOOT::|reportCategory| BOOT::|longext| - BOOT::|npParenthesize| BOOT::|bcString2WordList,fn| - VMLISP::ECQGENEXP VMLISP::RCQGENEXP BOOT::|outputString| - BOOT::|outputNumber| VMLISP::DODSETQ - BOOT::|pfInfApplication| BOOT::|insertString| - BOOT::|npAndOr| BOOT::|npListofFun| BOOT::|optSpecialCall| - BOOT::|pfPushBody| BOOT::|pfIf| BOOT::|incZip| - BOOT::|augProplist| BOOT::|augProplistInteractive| - BOOT::|centerString| BOOT::|evalCOLLECT| - BOOT::|interpCOLLECTbody| BOOT::|upLoopIterIN| - BOOT::|position,posn| BOOT::|domainVal| BOOT::|subVecNodes| - BOOT::|addBindingInteractive| BOOT::|interpCOLLECT| - BOOT::|upTaggedUnionConstruct| BOOT::|upRecordConstruct| - BOOT::|newExpandTypeSlot| BOOT::|upNullList| - BOOT::|upStreamIterIN| BOOT::|getCatForm| - BOOT::|oldAxiomAddChild| BOOT::|evalCOERCE| - BOOT::|mkAndApplyZippedPredicates| BOOT::|lookupPred| - BOOT::|oldAxiomDomainHasCategory| BOOT::|mkIterFun| - BOOT::|attributeCategoryBuild| - BOOT::|oldAxiomCategoryBuild| BOOT::|upLETtype| - BOOT::|upLETWithFormOnLhs| BOOT::|lazyMatchAssocV1| - BOOT::|oldAxiomCategoryNthParent| BOOT::|assignSymbol| - BOOT::|evalIsntPredicate| BOOT::|evalIsPredicate| - BOOT::|SpadInterpretStream| BOOT::|upSetelt| BOOT:SUBLISLIS - BOOT::|upNullTuple| BOOT::|evalIF| BOOT::|intloopProcess| - BOOT::|evalis| BOOT::|evalREPEAT| BOOT::|upwhereMain| - BOOT::|upwhereMkAtree| BOOT::|upwhereClause| - BOOT::|intloopInclude0| BOOT::|intloopSpadProcess,interp| - BOOT::|incPrefix?| BOOT::|inclmsgIfSyntax| - BOOT::|renamePatternVariables1| BOOT::|newExpandLocalType| - BOOT::|newExpandLocalTypeForm| - BOOT::|oldAxiomPreCategoryBuild| - BOOT::|getFunctionFromDomain| BOOT::|lazyOldAxiomAddChild| - BOOT:SUBSTEQ BOOT::|getOpCode| BOOT::|lazyDomainSet| - BOOT::|application2String| BOOT::|putI| BOOT::|mkInterpFun| - BOOT::|interpret1| BOOT::|analyzeMap0| - BOOT::|reportOpSymbol,sayMms| BOOT::|findLocalsInLoop|)) -(PROCLAIM - '(FTYPE (FUNCTION (T T T T T) T) BOOT::|analyzeRecursiveMap| - BOOT::|augmentMap| BOOT::|reportFunctionCompilation| - BOOT::|putSrcPos| BOOT::|hasSigInTargetCategory,fn| - BOOT::|encodeFunctionName| BOOT::|getArgValueComp2| - BOOT::|augModemapsFromCategory| BOOT::|compDefineFunctor1| - BOOT::|augModemapsFromCategoryRep| - BOOT::|compDefineFunctor| BOOT::|processFunctor| - BOOT::|buildFunctor| BOOT::|selectMmsGen,matchMms| - BOOT::|makeConstrArg| - BOOT::|commuteSparseUnivariatePolynomial| - BOOT::|commuteUnivariatePolynomial| - BOOT::|commuteSquareMatrix| BOOT::|coerceDmp1| - BOOT::|aggregateApp| BOOT::|compDefineCategory1| - BOOT::|commuteFraction| BOOT::|compDefineCategory| - BOOT::|commuteQuaternion| BOOT::|commuteComplex| - BOOT::|resolveTT2| BOOT::|concatApp1| - BOOT::|compFormPartiallyBottomUp| - BOOT::|canReturn,findThrow| BOOT::|orderMms| - BOOT::|sayFunctionSelection| BOOT::MATCH-FUNCTION-DEF - BOOT::|commuteNewDistributedMultivariatePolynomial| - BOOT::|commuteMPolyCat| - BOOT::|commuteDistributedMultivariatePolynomial| - BOOT::|commuteMultivariatePolynomial| - BOOT::|commutePolynomial| BOOT::|bottomUpDefaultCompile| - BOOT::|bottomUpDefaultEval| BOOT::|bottomUpFormTuple| - BOOT::|bottomUpFormAnyUnionRetract| BOOT::|bottomUpForm| - BOOT::|bottomUpFormUntaggedUnionRetract| - BOOT::|bottomUpFormRetract| BOOT::|bottomUpForm2| - BOOT::|bottomUpForm0| BOOT::|bottomUpForm3| - BOOT::|coerceByTable| BOOT::|compileRecurrenceRelation| - BOOT::|logS| BOOT::|spadify| BOOT::|prepareResults| - BOOT::|DescendCodeAdd1| - BOOT::|htSystemVariables,displayOptions| BOOT::|evalAndSub| - BOOT::FINCOMBLOCK BOOT::|compIf,Env| BOOT::LOCALASY - BOOT::|mkCacheVec| BOOT::LOCALNRLIB BOOT::|selectMms1;| - BOOT::|selectMms2| BOOT::|processPackage| - BOOT::|mkCategory| BOOT::|newCompareSig| - BOOT::|lookupInDomain| BOOT::|fortFormatDo| - BOOT::|newLookupInDomain| BOOT::|getNewDefaultPackage| - BOOT::|printLabelledList| BOOT::|compApplication| - BOOT::|dbExpandOpAlistIfNecessary| BOOT::-REDUCE - BOOT::|compDefineCapsuleFunction| BOOT::|genSearchSay| - BOOT::|compRepeatOrCollect,fn| BOOT::|dbGetDocTable| - BOOT::|apprpar| BOOT::WRITE-TAG-LINE BOOT::|concatTrouble| - BOOT::|charyBinary| BOOT::|split2| BOOT::|needStar| - BOOT::|lazyMatchArg2| BOOT::|newLookupInTable| - BOOT::|hashNewLookupInTable| BOOT::|compileADEFBody| - BOOT::|interpLoopIter| BOOT::|compileIF| - BOOT::|xlCannotRead| BOOT::|xlMsg| BOOT::|xlNoSuchFile| - BOOT::|incLine| BOOT::|xlFileCycle| BOOT::|xlConStill| - BOOT::|xlConActive| BOOT::|xlSay| BOOT::|xlOK1| - BOOT::|incLude| BOOT::|analyzeDeclaredMap|)) -(PROCLAIM - '(FTYPE (FUNCTION (T T T T) T) BOOT::|analyzeNonRecursiveMap| - BOOT::|makeInternalMapName| BOOT::|printCName| - BOOT::|clearDep1| BOOT::|domArg| BOOT::|mkDomPvar| - BOOT::|hasSig| BOOT::|putIntSymTab| - BOOT::|findConstructorSlotNumber| BOOT::MAKE-FLOAT - BOOT::|getFileProperty| - BOOT::|compDefWhereClause,fetchType| BOOT::|compSubDomain1| - BOOT::|putFileProperty| BOOT::|srcPosNew| - BOOT::|substNames| BOOT::|mac0MLambdaApply| - BOOT::|mac0ExpandBody| BOOT::|genDomainView| - BOOT::|getArgValue2| BOOT::|compFunctorBody| - BOOT::|analyzeMap| BOOT::|defaultTarget| - BOOT::|selectDollarMms| BOOT::|selectMmsGen| - BOOT::|allOrMatchingMms| BOOT::|evalMmCat| - BOOT::|matchMmSig| BOOT::/LOCATE BOOT::|hasCateSpecialNew| - BOOT::|evalMm| BOOT::|evalMmFreeFunction| - BOOT::|hasCateSpecial| BOOT::|hasCate1| BOOT::|boxApp| - BOOT::|concatApp| BOOT::|appsum| BOOT::|altSuperSubApp| - BOOT::|concatbApp| BOOT::|appSum| BOOT::|binomApp| - BOOT::|aggApp| BOOT::|fixUpPredicate| BOOT::|stepApp| - BOOT::|appneg| BOOT::|setqMultipleExplicit| - BOOT::|braceApp| BOOT::|compSetq1| BOOT::|timesApp| - BOOT::|rootApp| BOOT::|bracketApp| BOOT::|plusApp| - BOOT::|appparu1| BOOT::|bigopWidth| BOOT::|P2Us| - BOOT::|pi2App| BOOT::|boxLApp| VMLISP:STRPOSL - BOOT::|compOrCroak1| BOOT::|piApp| BOOT::|compForm2| - BOOT::|compForm3| BOOT::|getConditionalCategoryOfType1| - BOOT::|indefIntegralApp| BOOT::|nothingApp| - BOOT::|evalconstruct| BOOT::|evalInfiniteTupleConstruct| - BOOT::|setqSetelt| BOOT::|evalTupleConstruct| - BOOT::|consProplistOf| BOOT::|setqMultiple| - BOOT::|coerceImmediateSubDomain| BOOT::|intApp| - BOOT::|setqSingle| BOOT::|assignError| BOOT::|sigma2App| - BOOT::|canReturn| BOOT::|appext| BOOT::|centerApp| - BOOT::|sigmaApp| BOOT::|stringApp| BOOT::|MpP2P| - BOOT::|evalForm| BOOT::|selectLocalMms| - BOOT::|bottomUpDefault| BOOT::|canCoerceTopMatching| - BOOT::|catchCoerceFailure| BOOT::|asGetModemaps| - BOOT::|asytranCategory| BOOT::|asytranCategoryItem| - BOOT::|asytranDeclaration| - BOOT::|InvestigateConditions,flist| BOOT::|getTranslation| - BOOT::|condUnabbrev| - BOOT::|constructorAbbreviationErrorCheck| BOOT::READ-SPAD0 - BOOT::|BesselasymptB| BOOT::|optCallSpecially| - BOOT::|getDocDomainForOpSig| BOOT::|reportFunctionCacheAll| - BOOT::|clngammacase2| BOOT::|constoken| BOOT::|writeMalloc| - BOOT::|printDec| BOOT::|htPred2English,gn| - BOOT::|prepareData| BOOT::|protectedNagCall| - BOOT::|axiomType| BOOT::|DescendCode| - BOOT::|SetFunctionSlots| - BOOT::|InvestigateConditions,update| - BOOT::|htSystemVariables,functionTail| VMLISP:STRPOS - BOOT::|replaceExitEtc,fn| BOOT::|compNoStacking1| - BOOT::|compClam| BOOT::|getModemapListFromDomain| - BOOT::|say2Split| BOOT::|compColonInside| BOOT::|haddProp| - BOOT::|npEnclosed| BOOT::|hputNewProp| - BOOT::ASHARPMKAUTOLOADFUNCTOR - BOOT::ASHARPMKAUTOLOADCATEGORY BOOT::|addCoreModemap| - BOOT::|getMatchingRightPren| BOOT::|checkHTargs| - BOOT::|mkOperatorEntry| BOOT::|catPairUnion| - BOOT::|lookupUF| BOOT::|newLookupInCategories| - BOOT::|lookupFF| BOOT::|simpHasSignature| - BOOT::|compareSig| BOOT::|lazyCompareSigEqual| - BOOT::|lookupInAddChain| BOOT::|lookupInCategories| - BOOT::|lookupInTable| BOOT::|lookupDisplay| - BOOT::|domainTableLookup| BOOT::|dbShowOpConditions| - BOOT::|dbShowOpParameterJump| - BOOT::|dbShowOpImplementations| BOOT::|dbShowOpParameters| - BOOT::|dbShowOpOrigins| BOOT::|dbShowOpSignatures| - BOOT::|getSigSubst| BOOT::|optDeltaEntry| - BOOT::|lazyMatchArg| BOOT::|nrunNumArgCheck| - BOOT::|nextown2| BOOT::|semchkProplist| - BOOT::|interpREPEAT| BOOT::|makeCommonEnvironment,fn| - BOOT::|compMapCondFun| BOOT::|compApplyModemap| - BOOT::|compMapCond| BOOT::|compMapCond'| - BOOT::|compToApply| BOOT::REDUCE-N BOOT::|applyMapping| - BOOT::|compFormWithModemap| BOOT::|compAtomWithModemap| - BOOT::|ancestorsRecur| BOOT::|checkCommentsForBraces| - BOOT::|dbShowOpDocumentation| BOOT::|dbShowOpNames| - BOOT::REDUCE-N-1 BOOT::|dbGatherData| BOOT::|dbConsHeading| - BOOT::REDUCE-N-2 BOOT::|termMatch| BOOT::|matchAnySegment?| - BOOT::|replaceExitEtc| BOOT::|put| BOOT::|checkAndDeclare| - BOOT::|hasSigInTargetCategory| BOOT::READ-SPAD1 - BOOT::|mkDetailedGrepPattern| BOOT::|displayInfoOp| - BOOT::|dbShowInfoOp| BOOT::|compReduce1| BOOT::|letPrint3| - BOOT::|intloopSpadProcess| BOOT::|zagApp| - BOOT::|findBalancingBrace| BOOT::|appelse| BOOT::|appChar| - BOOT::|appInfix| BOOT::|htMakeButtonSaturn| - BOOT::|vconcatapp| BOOT::|superSubApp| BOOT::|xLate| - BOOT::|appconc| BOOT::MAKELIB BOOT::|appparu| - BOOT::|charySemiColon| BOOT::|charyElse| - BOOT::|charyEquatnum| BOOT::|bcFindString| - BOOT::|charySplit| BOOT::|charyMinus| VMLISP::DCQGENEXP - BOOT::|augProplistOf| BOOT::|putHist| - BOOT::|evalUntargetedADEF| BOOT::|evalTargetedADEF| - BOOT::|mergeInPlace| BOOT::|upLoopIterSTEP| - BOOT::|mergeSort| BOOT::|interpLoop| BOOT::|collectStream| - BOOT::|collectStream1| BOOT::|lazyMatch| - BOOT::|lazyMatchArgDollarCheck| - BOOT::|interpCOLLECTbodyIter| BOOT::|lookupInCompactTable| - BOOT::|sayLooking| BOOT::|upStreamIterSTEP| - BOOT::|lookupIncomplete| BOOT::|newLookupInAddChain| - BOOT::|hashNewLookupInCategories| BOOT::|lookupComplete| - BOOT::|newLookupInCategories1| BOOT::|lazyMatchAssocV| - BOOT::|collectSeveralStreams| BOOT::|mkIterZippedFun| - BOOT::|compareSigEqual| BOOT::|mkInterpTargetedADEF| - BOOT::|compileTargetedADEF| BOOT::|collectOneStream| - BOOT::|oldCompLookupNoDefaults| BOOT::|evalTuple| - BOOT::|interpIF| BOOT::|getReduceFunction| - BOOT::|NRTgetMinivectorIndex| BOOT::|xlPrematureFin| - BOOT::|xlPrematureEOF| BOOT::|xlCmdBug| BOOT::|xlIfBug| - BOOT::|xlSkippingFin| BOOT::|xlConsole| BOOT::|xlOK| - BOOT::|xlSkip| BOOT::|lookupInDomainVector| - BOOT::|basicLookupCheckDefaults| BOOT::|basicLookup| - BOOT::|oldCompLookup| BOOT::|analyzeUndeclaredMap|)) -(PROCLAIM - '(FTYPE (FUNCTION (T T T T T T) T) BOOT::|compDefineLisplib| - BOOT::|compConLib1| BOOT::|addModemap| BOOT::|mmCost| - BOOT::|findFunctionInDomain1| BOOT::/WRITEUPDATE - BOOT::|mmCost0| BOOT::|/D,2,LIB| - BOOT::|processFunctorOrPackage| BOOT::|compOrCroak1,fn| - BOOT::/D-2 BOOT::|BesselIBackRecur| BOOT::|invokeFortran| - BOOT::|nagCall| BOOT::|makeFort| BOOT::|addModemapKnown| - BOOT::|addModemap1| BOOT::|addEltModemap| BOOT::|compHash| - BOOT::|compHashGlobal| BOOT::|compApply| BOOT::|kdPageInfo| - BOOT::|addModemap0| BOOT::|bracketagglist| - BOOT::|attributeLookupExport| BOOT::|upDollarTuple| - BOOT::|xlIfSyntax| BOOT::|incLine1| - BOOT::|oldAxiomCategoryLookupExport| BOOT::|genMapCode| - BOOT::|putMapCode|)) -(PROCLAIM - '(FTYPE (FUNCTION (T T *) T) BOOT::|pfLeaf| BOOT::BPITRACE - VMLISP:|remove| VMLISP:RREAD VMLISP:REMOVEQ - BOOT::MATCH-LISP-TAG VMLISP:NREMOVE VMLISP:NREMOVEQ - BOOT::|tokConstruct| BOOT::|pfAdd| - BOOT:|ByteFileReadLineIntoString| BOOT:MATCH-TOKEN)) -(PROCLAIM - '(FTYPE (FUNCTION (T T T *) T) BOOT::|ncHardError| - BOOT::TOKEN-INSTALL BOOT::|ncSoftError| BOOT::|lnCreate|)) -(PROCLAIM - '(FTYPE (FUNCTION (T T T T T T T) T) BOOT::|findFunctionInCategory| - BOOT::|Mp2MpAux1| BOOT::|Mp2MpAux0| BOOT::|Expr2Dmp1| - BOOT::|Mp2SimilarDmp| BOOT::|bigopAppAux| - BOOT::|findFunctionInDomain| BOOT::|abbreviationError| - BOOT::|lisplibError| BOOT::|invokeNagman| - BOOT::|mkNewModemapList| BOOT::|mkDiffAssoc| - BOOT::|dbGatherThenShow| BOOT::|appInfixArg| - BOOT::|lazyOldAxiomDomainLookupExport| - BOOT::|oldAxiomDomainLookupExport|)) -(PROCLAIM - '(FTYPE (FUNCTION (T T T T T T T T T T T) T) - BOOT::|displayDomainOp|)) -(PROCLAIM '(FTYPE (FUNCTION (T T T T *) T) VMLISP:RPLACSTR)) -(PROCLAIM - '(FTYPE (FUNCTION (T T T T T T T T T T) T) BOOT::|P2DmpAux| - BOOT::|makeSpadFun|)) -(PROCLAIM - '(FTYPE (FUNCTION (T T T T T T T T) T) BOOT::|compDefineCategory2| - BOOT::|P2MpAux| BOOT::|makeFort1|)) -(PROCLAIM - '(FTYPE (FUNCTION (T T T T T T T T T) T) BOOT::|writeCFile| - BOOT::|Mp2MpAux2|)) -(PROCLAIM '(FTYPE (FUNCTION (T T T T T *) T) BOOT::|msgCreate|)) -(PROCLAIM - '(FTYPE (FUNCTION NIL *) BOOT::|generateResultsName| - BOOT::|generateDataName| BOOT::|htShowPage| - BOOT::|PARSE-Label| BOOT::|bcMatrix| BOOT::|PARSE-Primary1| - BOOT::|PARSE-Enclosure| BOOT::|bcDraw2DSolve| - BOOT::|PARSE-Selector| BOOT::|PARSE-Category| - BOOT::|PARSE-Option| BOOT::|PARSE-TokenOption| - BOOT::|PARSE-Sexpr1| BOOT::|PARSE-Sexpr| - BOOT::|PARSE-Scripts| BOOT::|PARSE-SpecialCommand| - BOOT::|PARSE-FloatBasePart| BOOT::|PARSE-FloatBase| - BOOT::|PARSE-Leave| BOOT::|e02aef| BOOT::|e04ucfCopOut| - BOOT::|c02agf| BOOT::|c02aff| BOOT::|e02adf| BOOT::|c05pbf| - VMLISP:RECLAIM BOOT::MKPROMPT BOOT::|sendHTErrorSignal| - BOOT::|testPage| BOOT::|e01sef| BOOT::|e01saf| - BOOT::|e01daf| BOOT::|e01bhf| BOOT::|e01bgf| BOOT::|e01bff| - BOOT::|e01bef| BOOT::|e01baf| BOOT::|e02zaf| BOOT::|e02gaf| - BOOT::|e02dff| BOOT::|e02def| BOOT::|e02ddf| BOOT::|e02dcf| - BOOT::|e02daf| BOOT::|e02bef| BOOT::|e02bdf| - BOOT::|minusInfinity| BOOT::|plusInfinity| - BOOT::SERVER-SWITCH BOOT::CLEARDATABASE BOOT::NBOOT-LEXPR - BOOT::BOOT-LEXPR BOOT::|executeQuietCommand| - BOOT::|serverSwitch| BOOT::|scanS| - BOOT::|sendNagmanErrorSignal| BOOT::|d01gbf| BOOT::|d01gaf| - BOOT::|d01fcf| BOOT::|d01bbf| BOOT::|d01asf| - BOOT::|d02rafCopOut| BOOT::|d02raf| BOOT::|d02kef| - BOOT::|d02gbf| BOOT::|d02gaf| BOOT::|d02ejf| BOOT::|d02cjf| - BOOT::|d02bhf| BOOT::|d02bbf| BOOT::|e02ahf| - BOOT::|d03edfShort| BOOT::|d03edfLong| BOOT::|d03eefInput| - BOOT::|d03faf| BOOT::|d03eef| BOOT::|d03edf| - BOOT::|htSystemVariables| BOOT::|htSetVars| - BOOT::|mkSetTitle| BOOT::|npCategory| - BOOT::PARSE-CONS_SEXPR BOOT::PARSE-SEXPR - BOOT::PARSE-REF_SEXPR BOOT::PARSE-EXPR2 BOOT::PARSE-EXPR1 - BOOT::|htsv| BOOT::|npDefinitionItem| BOOT::|npDefn| - BOOT::|npMacro| BOOT::|npMDEFinition| BOOT::|npRule| - BOOT::RESETHASHTABLES BOOT::READSPADEXPR - BOOT::|batchExecute| BOOT::|c05nbf| BOOT::|c05adf| - BOOT::|c06gsf| BOOT::|c06gqf| BOOT::|c06gcf| BOOT::|c06gbf| - BOOT::|c06fuf| BOOT::|c06frf| BOOT::|c06fqf| BOOT::|c06fpf| - BOOT::|c06ekf| BOOT::|c06ecf| BOOT::|c06ebf| BOOT::|c06eaf| - BOOT::|s17def| BOOT::|s17dcf| BOOT::|s17akf| BOOT::|s17ajf| - BOOT::|s17ahf| BOOT::|s17agf| BOOT::|s17aff| BOOT::|s17aef| - BOOT::|s17adf| BOOT::|s17acf| BOOT::|s15aef| BOOT::|s15adf| - BOOT::|s14baf| BOOT::|s14abf| BOOT::|s14aaf| BOOT::|s13adf| - BOOT::|s13acf| BOOT::|s13aaf| BOOT::|s01eaf| BOOT::|s21bdf| - BOOT::|s21bcf| BOOT::|s21bbf| BOOT::|s21baf| BOOT::|s20adf| - BOOT::|e02agf| BOOT::|s20acf| BOOT::|d01aqf| BOOT::|s19adf| - BOOT::|d01apf| BOOT::|s19acf| BOOT::|d01anf| BOOT::|d01amf| - BOOT::|d01alf| BOOT::|s19abf| BOOT::|d01akf| BOOT::|s19aaf| - BOOT::|d01ajf| BOOT::|s18def| BOOT::|s18dcf| BOOT::|s18aff| - BOOT::|s18aef| BOOT::|s18adf| BOOT::|s18acf| BOOT::|f04qaf| - BOOT::|f04mcf| BOOT::|f04mbf| BOOT::|f04maf| BOOT::|f04jgf| - BOOT::|f04faf| BOOT::|f04axf| BOOT::|f04atf| BOOT::|f04asf| - BOOT::|quit| BOOT::|f04arf| BOOT::|quitSpad2Cmd| - BOOT::|f04adf| BOOT::|pquit| BOOT::|pquitSpad2Cmd| - BOOT::CONTINUE BOOT::|continue| BOOT::|purgeLocalLibdb| - BOOT::|dbSplitLibdb| BOOT::|f07fef| BOOT::|f07fdf| - BOOT::|f07aef| BOOT::|f07adf| BOOT::|copyright| - BOOT::|s17dlf| BOOT::|s17dhf| BOOT::|s17dgf| BOOT::|f02xef| - BOOT::|f02wef| BOOT::|f02fjf| BOOT::|f02bjf| BOOT::|f02bbf| - BOOT::|f02axf| BOOT::|f02awf| BOOT::|f02akf| BOOT::|f02ajf| - BOOT::|f02agf| BOOT::|htShowPageNoScroll| BOOT::|f02aff| - BOOT::|f02aef| BOOT::|f02adf| BOOT::|f02abf| BOOT::|f02aaf| - BOOT::|measure| BOOT::|writeSaturnSuffix| BOOT::NEWRULE - BOOT::PARSE-LOCAL_VAR BOOT::|htErrorStar| - BOOT::|queryClients| BOOT::|onDisk| BOOT::|endHTPage| - BOOT::|readSpadProfileIfThere| BOOT::|bcDraw3Dpar1| - BOOT::|bcDraw3Dpar| BOOT::|htShowPageStarSaturn| - BOOT::|htShowPageStar| BOOT::|bcDraw3Dfun| - BOOT::|bcDraw2Dpar| BOOT::|bcSum| BOOT::|bcSeries| - BOOT::|bcProduct| BOOT::|bcLimit| - BOOT::|bcIndefiniteIntegrate| BOOT::|bcDraw| - BOOT::|bcDifferentiate| BOOT::|bcDefiniteIntegrate| - BOOT::|bcDraw2Dfun| BOOT::MAKE-TAGS-FILE BOOT::|bcSolve| - BOOT::|npPrimary1| BOOT::|e02bcf| BOOT::|e02bbf| - BOOT::|e02baf| BOOT::|e02akf| BOOT::|e02ajf| BOOT::|e04ycf| - BOOT::|e04ucf| BOOT::|e04naf| BOOT::|e04mbf| BOOT::|e04jaf| - BOOT::|e04gcf| BOOT::|e04fdf| BOOT::|e04dgf| BOOT::|f01ref| - BOOT::|f01rdf| BOOT::|f01rcf| BOOT::|f01qef| BOOT::|f01qdf| - BOOT::|f01qcf| BOOT::|f01mcf| BOOT::|f01maf| BOOT::|f01bsf| - BOOT::|f01brf|)) -(PROCLAIM - '(FTYPE (FUNCTION NIL T) BOOT::|getCodeVector| - BOOT:PARSE-IDENTIFIER BOOT::|axDoLiterals| - BOOT::|PARSE-Suffix| BOOT:CURRENT-TOKEN - BOOT::|PARSE-TokTail| BOOT::|PARSE-InfixWith| - BOOT::|PARSE-With| BOOT::|PARSE-Form| - BOOT::|PARSE-Reduction| BOOT::|PARSE-SemiColon| - BOOT::|PARSE-Iterator| BOOT::|PARSE-Primary| - BOOT::|PARSE-ElseClause| BOOT::|PARSE-Conditional| - BOOT::|PARSE-Name| BOOT::|PARSE-Sequence| - BOOT::|PARSE-Data| BOOT::|PARSE-FormalParameter| - BOOT::|PARSE-IntegerTok| BOOT::|PARSE-String| - BOOT::|PARSE-Quad| BOOT::|PARSE-VarForm| - BOOT::|PARSE-Qualification| BOOT::|PARSE-Prefix| - BOOT::|PARSE-Infix| BOOT::|PARSE-Application| - BOOT:CURRENT-SYMBOL BOOT::|clearCmdSortedCaches| - BOOT::|PARSE-Statement| BOOT::|PARSE-Command| - BOOT::|updateInCoreHist| BOOT::|processSynonyms| - BOOT::|disableHist| BOOT::|PARSE-IteratorTail| - BOOT::|histFileName| BOOT::|PARSE-OpenBrace| - BOOT::|PARSE-Sequence1| BOOT::|PARSE-OpenBracket| - BOOT::|PARSE-PrimaryNoFloat| BOOT:FAIL BOOT::|PARSE-Float| - BOOT::|PARSE-PrimaryOrQM| BOOT::|PARSE-TokenList| - BOOT::|PARSE-AnyId| BOOT::|resetInCoreHist| - BOOT::|PARSE-TokenCommandTail| BOOT::|isTokenDelimiter| - BOOT::|PARSE-ScriptItem| BOOT::|PARSE-CommandTail| - BOOT::|historySpad2Cmd| BOOT::|PARSE-FormalParameterTok| - BOOT::|PARSE-SpecialKeyWord| - BOOT::|writeHistModesAndValues| BOOT::|PARSE-FloatTok| - BOOT::|PARSE-FloatExponent| BOOT::|updateHist| - BOOT::|initHistList| BOOT::|initHist| BOOT::|PARSE-Exit| - BOOT::|oldHistFileName| BOOT:PARSE-NUMBER - BOOT::|PARSE-Return| BOOT::|PARSE-ReductionOp| - BOOT::|PARSE-LabelExpr| BOOT::|PARSE-Import| - BOOT::|writeHiFi| BOOT::|PARSE-Loop| - BOOT::|updateCurrentInterpreterFrame| BOOT::|PARSE-Seg| - BOOT:CURINPUTLINE BOOT::|profileWrite| BOOT:PARSE-BSTRING - BOOT:NEXT-TOKEN BOOT:IOSTAT BOOT::|isPackageFunction| - BOOT:UNGET-TOKENS BOOT::|setOptKeyBlanks| - BOOT::|getInfovecCode| BOOT::|NRTmakeSlot1Info| - BOOT::|reportOnFunctorCompilation| BOOT:BUMPCOMPERRORCOUNT - BOOT::|displayMissingFunctions| BOOT:PARSE-STRING - BOOT:ADVANCE-TOKEN BOOT::ERRHUH BOOT:CURRENT-CHAR - VMLISP:$TOTAL-ELAPSED-TIME BOOT::IS-GENSYM - BOOT::|getSpecialCaseAssoc| - BOOT::|makeConstructorsAutoLoad| - BOOT::|displayExposedGroups| - BOOT::|displayHiddenConstructors| - BOOT::|displaySemanticErrors| BOOT::|clock| - BOOT::|startTimer| BOOT::|spadPrompt| BOOT::|stopTimer| - BOOT::|quadSch| BOOT::/TRACEREPLY BOOT::TRACELETREPLY - BOOT::|voidValue| BOOT::/COMP BOOT::|getDateAndTime| - BOOT::|coercionFailure| VMLISP:EMBEDDED - BOOT::|printableArgModeSetList| BOOT::|asList| - BOOT::|boot2LispError| BOOT::|extendConstructorDataTable| - BOOT::|fin| BOOT::PARSERSTATE BOOT::|New,ENTRY,1| - BOOT::|mkLowerCaseConTable| BOOT::NEW-LEXPR-INTERACTIVE - BOOT::NEW-LEXPR BOOT::|spadThrow| BOOT::INITIALIZE - BOOT::NEW BOOT::|New,ENTRY| BOOT::|traceComp| - BOOT::|New,ENTRY1| BOOT::|New,ENTRY,SYS| BOOT::NEWPO - BOOT::|returnToReader| BOOT::|returnToTopLevel| BOOT::TOP - BOOT::|serverLoop| BOOT::|describeSetOutputTex| - BOOT::|describeSetOutputFortran| - BOOT::|describeSetLinkerArgs| - BOOT::|describeProtectSymbols| - BOOT::|describeOutputLibraryArgs| - BOOT::|describeSetFortDir| BOOT::|describeFortPersistence| - BOOT::|describeSetFortTmpDir| - BOOT::|describeProtectedSymbolsWarning| - BOOT::|describeSetStreamsCalculate| - BOOT::|describeSetOutputFormula| - BOOT::|describeInputLibraryArgs| - BOOT::|resetWorkspaceVariables| BOOT::|describeSetNagHost| - BOOT::|describeAsharpArgs| BOOT::|describeSetOutputAlgebra| - BOOT::|sayAllCacheCounts| BOOT::|describeSetFunctionsCache| - BOOT::|nangenericcomplex| BOOT::|createTypeEquivRules| - BOOT::|createResolveTTRules| BOOT::|createResolveTMRules| - BOOT::|bcBlankLine| BOOT::|browserAutoloadOnceTrigger| - BOOT::|scanKeyTableCons| BOOT::|scanToken| BOOT::|scanEsc| - BOOT::|scanError| BOOT::|scanEscape| BOOT::|scanNumber| - BOOT::|asharpConstructors| BOOT::|scanString| - BOOT::|scanSpace| BOOT::|scanPunct| BOOT::|scanNegComment| - BOOT::|startsNegComment?| BOOT::|scanComment| - BOOT::|startsComment?| BOOT::|scanPunCons| - BOOT::|scanDictCons| BOOT::|resetStackLimits| - BOOT::|npRecoverTrap| BOOT::|syGeneralErrorHere| - BOOT::|DPname| BOOT::|pfNoPosition| VMLISP:CURRENTTIME - BOOT::|buildHtMacroTable| BOOT::|checkWarningIndentation| - BOOT::|npDecl| BOOT::|npType| VMLISP:$SCREENSIZE - BOOT::|npAmpersand| BOOT::|npName| BOOT::|npFromdom| - BOOT::|npSCategory| BOOT::|npPrimary| BOOT::|npState| - BOOT::|npDefaultValue| BOOT::|npAssignVariableName| - BOOT::|npPDefinition| BOOT::|npDollar| - BOOT::|npSQualTypelist| BOOT::PARSE-NON_DEST_REF - BOOT::PARSE-OPT_EXPR BOOT::PARSE-REPEATOR - BOOT::|npCategoryL| BOOT::PARSE-SEXPR_STRING - BOOT::|npProduct| BOOT::PARSE-TEST BOOT::|npIterators| - BOOT::PARSE-EXPR BOOT::|npWhile| - BOOT::|displayPreCompilationErrors| BOOT::PARSE-N_TEST - BOOT::|npForIn| BOOT::PARSE-REP_TEST BOOT::|npGives| - BOOT::PARSE-FIL_TEST BOOT::|npLogical| BOOT::PARSE-SUBEXPR - BOOT::|npExpress| BOOT::PARSE-FID BOOT::PARSE-RULE - BOOT::|npExpress1| BOOT::PARSE-HEADER - BOOT::|npCommaBackSet| BOOT::PARSE-RULE1 BOOT::|npQualType| - VMLISP:$TOTAL-GC-TIME BOOT::|npADD| - BOOT::|npConditionalStatement| - BOOT::|npQualifiedDefinition| BOOT::|npPushId| - BOOT::|npVariable| BOOT::|npDefinitionOrStatement| - BOOT::|npAssignVariable| BOOT::|npColon| - BOOT::|npAssignment| BOOT::|profileDisplay| - BOOT:|TimeStampString| BOOT::|computeDomainVariableAlist| - BOOT::MONITOR-READINTERP BOOT::|npSingleRule| - BOOT::MONITOR-UNTESTED BOOT::|npDefTail| BOOT::|npQuiver| - BOOT::MONITOR-PERCENT BOOT::|npDef| BOOT::|npStatement| - BOOT::|npImport| BOOT::|npTyping| BOOT::|npItem| - BOOT::|npQualDef| BOOT::|npAssign| BOOT::MONITOR-AUTOLOAD - BOOT::|npDefinition| BOOT::MONITOR-RESULTS - BOOT::MONITOR-END BOOT::|npPop3| BOOT::MONITOR-INITTABLE - BOOT::|npAtom2| BOOT::|npInfixOperator| BOOT::|npPower| - BOOT::MONITOR-HELP BOOT::|npMatch| BOOT::MONITOR-REPORT - BOOT::|npMdef| BOOT::|reportInstantiations| - BOOT::|npPrimary2| BOOT::?DOMAINS BOOT::|?domains| - BOOT::|npSuch| BOOT::|npMDEF| BOOT::|npDisjand| - BOOT::|npInfixOp| BOOT::|npDiscrim| - BOOT::|clearConstructorAndLisplibCaches| - BOOT::|npVariableName| BOOT::|clearConstructorCaches| - BOOT::|clearClams| BOOT::|clearCategoryCaches| - BOOT::|cacheStats| BOOT::|reportAndClearClams| - BOOT::|traceDown| BOOT::|statRecordInstantiationEvent| - BOOT::|tc| BOOT::GET-CURRENT-DIRECTORY - BOOT::|removeAllClams| BOOT::|clamStats| BOOT::|npPop1| - BOOT::|npTrap| BOOT::|npApplication| BOOT::|npPop2| - BOOT::|npApplication2| BOOT::WRITE-WARMDATA - BOOT::WRITE-INTERPDB BOOT::|npAssignVariablelist| - BOOT::|clearHashReferenceCounts| BOOT::|npSignature| - BOOT::|pfNothing| BOOT::|npSigItemlist| BOOT::|npEncl| - BOOT::|npBDefinition| BOOT::|npPrefixColon| BOOT::|npNext| - BOOT::|allOperations| BOOT::WRITE-CATEGORYDB - BOOT::WRITE-OPERATIONDB BOOT::WRITE-BROWSEDB - BOOT::WRITE-COMPRESS BOOT::INITIAL-GETDATABASE - BOOT::CATEGORYOPEN BOOT::BROWSEOPEN BOOT::OPERATIONOPEN - BOOT::INTERPOPEN BOOT::COMPRESSOPEN - BOOT::CREATE-INITIALIZERS BOOT::|poNoPosition| - BOOT::|saveDependentsHashTable| BOOT::|saveUsersHashTable| - BOOT::|mkTopicHashTable| BOOT::TOKEN-STACK-SHOW - BOOT::|system| BOOT::|terminateSystemCommand| - BOOT::|getSystemCommandLine| BOOT::TERMCHR - BOOT::IOSTREAMS-SHOW BOOT::|displayExposedConstructors| - BOOT::|finalizeDocumentation| BOOT::REDUCE-STACK-SHOW - BOOT::CLEAR-HIGHLIGHT BOOT::RESET-HIGHLIGHT BOOT::RESTART0 - START BOOT::|libraryFileLists| BOOT::|waitForViewport| - BOOT::|setViewportProcess| - BOOT::|installStandardTestPackages| BOOT::|printCopyright| - BOOT::AKCL-VERSION BOOT::SET-RESTART-HOOK - BOOT::|undoINITIALIZE| BOOT::|simpCategoryTable| - BOOT::|simpTempCategoryTable| BOOT::COMPFIN - BOOT::INPUT-CLEAR BOOT::|genTempCategoryTable| BOOT::|cc| - BOOT::|initNewWorld| BOOT::|genCategoryTable| - BOOT::|dbOpsExposureMessage| BOOT::|htSayUnexposed| - BOOT::|NRTmakeCategoryAlist| - BOOT::|NRTgenFinalAttributeAlist| BOOT::|dcSizeAll| - BOOT::|initialiseIntrinsicList| BOOT::|tempLen| - BOOT::|changeDirectoryInSlot1| BOOT::|NRTaddDeltaCode| - BOOT::|ncIntLoop| BOOT::SPECIALCASESYNTAX - BOOT::|newFortranTempVar| BOOT::|currentSP| - BOOT::|elapsedTime| BOOT::|traceUp| - BOOT::|getIntrinsicList| BOOT::|getInterpMacroNames| - BOOT::|synonymSpad2Cmd| BOOT::|interpFunctionDepAlists| - BOOT::NPPPG BOOT::|isFalse| BOOT::NPPPF BOOT::NPPPFF - BOOT::|printDashedLine| BOOT::|satBreak| BOOT::|up| - BOOT::|getWorkspaceNames| BOOT::|getParserMacroNames| - BOOT::|oldCompilerAutoloadOnceTrigger| BOOT::|TrimCF| - BOOT::|displayWorkspaceNames| BOOT::UP - BOOT::|displayWarnings| BOOT::|buildGloss| - BOOT::|nextInterpreterFrame| BOOT::|down| - BOOT::|displayFrameNames| BOOT::DOWN - BOOT::|previousInterpreterFrame| BOOT::SAME BOOT::|same| - BOOT::|mkUsersHashTable| BOOT::|allConstructors| - BOOT::|frameNames| BOOT::|sayShowWarning| BOOT::|credits| - BOOT::|mkDependentsHashTable| - BOOT::|buildDefaultPackageNamesHT| - BOOT::|dbAugmentConstructorDataTable| FOAM:|fiGetDebugVar| - BOOT::|menuButton| BOOT::|htSaturnBreak| BOOT::|random| - BOOT::|dbConsExposureMessage| BOOT::|mkSigPredVectors| - BOOT::FIRST-ERROR BOOT::|writeSaturnPrefix| BOOT::|on| - BOOT::|offDisk| BOOT::|htBigSkip| BOOT::PARSE-PROGRAM - BOOT::IN-META BOOT::|traceReply| BOOT::|?t| - BOOT::SKIP-BLANKS BOOT::|pspacers| BOOT::NEXT-LINES-SHOW - BOOT::|resetCounters| BOOT::PARSE-DEST_REF - BOOT::SPAD_SHORT_ERROR BOOT::|pcounters| - BOOT::SPAD_LONG_ERROR BOOT::INIT-BOOT/SPAD-READER - BOOT::NEXT-LINES-CLEAR BOOT::|resetTimers| - BOOT::|resetSpacers| BOOT::|ptimers| - BOOT::|PARSE-Expression| - BOOT::|oldParserAutoloadOnceTrigger| BOOT::|boot-LEXPR| - BOOT::|reportCount| BOOT::NEW-LEXPR1 BOOT::|spadReply| - BOOT::|listConstructorAbbreviations| BOOT::BOOT-SKIP-BLANKS - BOOT::|updateFromCurrentInterpreterFrame| - BOOT::PARSE-ARGUMENT-DESIGNATOR BOOT::PARSE-KEYWORD - BOOT::PARSE-SPADSTRING - BOOT::|initializeInterpreterFrameRing| BOOT::READ-SPAD-1 - BOOT::READBOOT BOOT::|reportWhatOptions| - BOOT::TERSYSCOMMAND BOOT::|PARSE-NewExpr| - BOOT::|makeInitialModemapFrame| - BOOT::|createCurrentInterpreterFrame| - BOOT::|getParserMacros| BOOT::|clearCmdCompletely| - BOOT::|clearCmdAll| BOOT::|clearMacroTable| - BOOT::|initializeSystemCommands| BOOT::|htSayHrule| - BOOT::|htEndTable| BOOT::|mkMenuButton| BOOT::|runspad| - BOOT::|htBeginTable| BOOT::|ncTopLevel| - BOOT::|spadStartUpMsgs| BOOT::|initializeRuleSets| - BOOT::|loadExposureGroupData| - BOOT::|statisticsInitialization| BOOT::|ut| - BOOT::|printStatisticsSummary| BOOT::|printStorage| - BOOT::|prTraceNames| BOOT::|spad| BOOT::|spadpo| - BOOT::|intloop| BOOT::|off| BOOT::|htEndTabular| - BOOT::|htSaySaturnAmpersand| BOOT::|page| - BOOT::|clearFrame| BOOT::|getSaturnExampleList| - BOOT::|saturnTERPRI| BOOT::|bcSadFaces| BOOT::YEARWEEK - BOOT::|npBPileDefinition| BOOT::|npTypified| - BOOT::|npVariablelist| BOOT::|npTagged| BOOT::|bcvspace| - BOOT::|npTypeStyle| BOOT::|npColonQuery| BOOT::|npPretend| - BOOT::|npRestrict| BOOT::|npCoerceTo| BOOT::|npRelation| - BOOT::|npFirstTok| BOOT::|npVoid| BOOT::|npSLocalItem| - BOOT::NPPCG BOOT::|npLocalItemlist| BOOT::|npFix| - BOOT::NPPCFF BOOT::|npDefaultItemlist| BOOT::|npSynthetic| - BOOT::|npAmpersandFrom| BOOT::|npBy| BOOT::|npLet| - BOOT::|npTypeVariable| BOOT::|npSignatureDefinee| - BOOT::|npAtom1| BOOT::|npConstTok| BOOT::|npLocalItem| - BOOT::|npLocalDecl| BOOT::|npExport| BOOT::|npLocal| - BOOT::|npInline| BOOT::|npFree| BOOT::|npInterval| - BOOT::|npSegment| BOOT::|npArith| BOOT::|npBreak| - BOOT::|npDefaultItem| BOOT::|npDefaultDecl| - BOOT::|npReturn| BOOT::|npSemiBackSet| - BOOT::|npSDefaultItem| BOOT::|npTypeVariablelist| - BOOT::|npPileDefinitionlist| BOOT::|npDefinitionlist| - BOOT::|npComma| BOOT::|npSymbolVariable| BOOT::|npId| - BOOT::|npSum| BOOT::|npTerm| BOOT::|npRemainder| - BOOT::|npIterate| BOOT::|npLoop| BOOT::|npSuchThat| - BOOT::|npSelector| BOOT::|npIterator| BOOT::|npSigItem| - BOOT::|npSigDecl| BOOT::|statRecordLoadEvent| - BOOT::|computeElapsedTime| BOOT::|npLambda| - BOOT::|computeElapsedSpace| BOOT::|popTimedName| - BOOT::|npBacksetElse| BOOT::|peekTimedName| - BOOT::|npQualTypelist| BOOT::|npPileExit| BOOT::|npExit| - BOOT::|statisticsSummary| BOOT::|displayHeapStatsIfWanted| - BOOT::|update| BOOT:RESTART BOOT:|version| BOOT:/EMBEDREPLY - BOOT:NEXTINPUTLINE BOOT:|Category| BOOT::|intUnsetQuiet| - BOOT::|intSetQuiet| BOOT:POP-REDUCTION - BOOT::|intSetNeedToSignalSessionManager| - BOOT::|intNewFloat| BOOT::|leaveScratchpad| BOOT::|ncError| - BOOT::|incConsoleInput| BOOT:NEXT-CHAR - BOOT::|inclmsgCmdBug| BOOT::|inclmsgIfBug| - BOOT::|inclmsgFinSkipped| BOOT::|inclmsgConsole| - COMPILER::GAZONK-NAME HELP BOOT:ADVANCE-CHAR - BOOT::|rbrkSch| BOOT::|lbrkSch|)) -(PROCLAIM - '(FTYPE (FUNCTION (*) *) BOOT::|makeSpadCommand| BOOT::/RF - BOOT::|/RQ,LIB| VMLISP:$ERASE BOOT::|mkGrepPattern1| - BOOT::|nothingFoundPage| BOOT::|dbNotAvailablePage| - BOOT::|htSetCache| BOOT::NEXT-LINE BOOT::/EF - BOOT::INIT-MEMORY-CONFIG BOOT::/RQ BOOT::|newGoGet| - BOOT::|goGet| BOOT::|dbShowOps| BOOT::|oPage| BOOT::|aPage| - BOOT::|buildLibdb| BOOT::|emptySearchPage| - BOOT::|conOpPage1| BOOT::|conPage| BOOT::|kPage| - BOOT::|genSearch| BOOT::|dbShowCons| BOOT::|form2HtString| - BOOT::|bcFinish| BOOT::|Undef| BOOT:META-SYNTAX-ERROR)) -(PROCLAIM - '(FTYPE (FUNCTION (T) *) BOOT::|numArgs| - BOOT::|formatSignatureArgs0| BOOT::|formatSignatureArgs| - BOOT::|sayWidth| BOOT::SRCABBREVS BOOT::|bcMatrixGen| - BOOT::|bcwords2liststring| BOOT::|bcGenExplicitMatrix| - BOOT::|bcGen| BOOT::|bcInputMatrixByFormulaGen| - BOOT::|bcReadMatrix| BOOT::|systemCommand| - BOOT::|safeWritify| BOOT::|unAbbreviateKeyword| - BOOT::|replacePercentByDollar| BOOT::|e04ucfSolve| - BOOT::|brightPrint0AsTeX| BOOT::|sayDisplayStringWidth| - BOOT:GET-TOKEN BOOT::|initializeLisplib| BOOT::|getMsgTag| - BOOT::|poFileName| BOOT::|mac0InfiniteExpansion,name| - BOOT::|NRTtypeHack| BOOT::|getMsgPos2| BOOT::|e02agfSolve| - BOOT::|c02agfGen| BOOT:NUMOFARGS BOOT::|c02affSolve| - BOOT::|c02affGen| BOOT::|c02agfSolve| BOOT::|c05adfGen| - BOOT::|outputTran| BOOT::|replaceSharpCalls| - BOOT::/UNTRACE-0 BOOT::|doReplaceSharpCalls| BOOT::DEFTRAN - BOOT::LIST2STRING BOOT::DEF-WHERECLAUSELIST BOOT::DEF-ISNT - BOOT::|quoteSuper| BOOT::|quoteSub| BOOT::MK_LEFORM - BOOT::MK_LEFORM-CONS BOOT::|aggSuper| - BOOT::|oldParseString| BOOT::|outformWidth| BOOT::|aggSub| - BOOT::|agggwidth| BOOT::|agggsuper| BOOT::|agggsub| - BOOT::|obj2String| BOOT::|compileFileQuietly| - BOOT::|exptSub| BOOT::|mathPrint| BOOT::|rootSub| - BOOT::|parseTransform| BOOT::|overbarWidth| - BOOT::MONITOR-EVALAFTER BOOT::|overlabelWidth| - BOOT::|object2String| BOOT::|e02aefGen| BOOT::/TRACE-0 - BOOT::LENGTH2STR BOOT::|matSub| BOOT::/MKINFILENAM - BOOT::|qTSuper| BOOT::|qTSub| BOOT::|sayMSGNT| - VMLISP:BPINAME BOOT::|e01safSolve| BOOT::|e01befSolve| - BOOT::|linkToHTPage| BOOT::|killHTPage| - BOOT::|startReplaceHTPage| BOOT::|e01dafSolve| - BOOT::|startHTPopUpPage| BOOT::|e01bffSolve| - BOOT::|e01bafGen| BOOT::|e01sefGen| BOOT::|e01bhfGen| - BOOT::|e01bhfSolve| BOOT::|e01dafGen| BOOT::|e01bgfGen| - BOOT::|e01befGen| BOOT::|e02dcfColdGen| BOOT::|e02bafGen| - BOOT::|e02agfGen| BOOT::|e02befColdGen| BOOT::|e02ajfSolve| - BOOT::|e02ddfColdGen| BOOT::|numMapArgs| - BOOT::|e02befSolve| BOOT::|e02dcfSolve| - BOOT::|e02ddfWarmGen| BOOT::|e02adfSolve| - BOOT::|e02aefSolve| BOOT::|e02ddfSolve| BOOT::|e02bafSolve| - BOOT::|e02bcfSolve| BOOT::|e02ahfGen| BOOT::|e02gafSolve| - BOOT::|e02bbfGen| BOOT::|e02adfGen| BOOT::|e02defGen| - BOOT::|e02ahfSolve| BOOT::|e02bdfGen| BOOT::|e02akfGen| - BOOT::|e02dafGen| BOOT::|e02bdfSolve| BOOT::|e02dffGen| - BOOT::|e02akfSolve| BOOT::|asyJoinPart| BOOT::|printLine| - BOOT::|sockSendWakeup| BOOT::|sockGetFloat| - BOOT::PRINT-LINE BOOT::SOCK-SEND-WAKEUP - BOOT::SOCK-GET-FLOAT BOOT::|/tb| BOOT::|/ry| BOOT::|/rx| - BOOT::|/cxd| BOOT::/FOOBAR BOOT::/CX BOOT::NEWNAMTRANS - BOOT::|htMakeInputList| BOOT::SPAD-MODETRAN - BOOT::|popSatOutput| BOOT::|subrname| BOOT::SOCK-GET-INT - BOOT::OPEN-SERVER BOOT::|protectedEVAL| - BOOT::|setOutputTex| BOOT::|setOutputFortran| BOOT::|set| - BOOT::|setLinkerArgs| BOOT::|protectSymbols| - BOOT::|protectedSymbolsWarning| BOOT::|setStreamsCalculate| - BOOT::|setOutputFormula| BOOT::|setNagHost| - BOOT::|setFunctionsCache| BOOT::|spadType| BOOT::|spadSys| - BOOT::|mkGrepFile| BOOT::|mkGrepPattern1,addOptions| - BOOT::|mkGrepPattern1,remUnderscores| - BOOT::|mkUpDownPattern| BOOT::|mkUpDownPattern,fixchar| - BOOT::|cSearch| BOOT::|verbatimize| - BOOT::|pmParseFromString,flatten| - BOOT::|htCommandToInputLine| BOOT::|detailedSearch| - BOOT::|docSearch| BOOT::|form2HtString,fnTailTail| - BOOT::|form2HtString,fn| BOOT::|sexpr2HtString| - BOOT::|kInvalidTypePage| BOOT::|args2LispString,fnTailTail| - BOOT::|sexpr2LispString,fn| BOOT::|args2LispString| - BOOT::|sexpr2LispString| BOOT::|sexpr2HtString,fn| - BOOT::|spleI| BOOT::|dbComments| BOOT::|sockGetInt| - BOOT::|parseAndEvalStr| BOOT::|parseAndEvalStr1| - BOOT::|d01gafSolve| BOOT::|d01apfGen| BOOT::|d01fcfSolve| - BOOT::|d01asfGen| BOOT::|d02bbfSolve| BOOT::|d02rafGen| - BOOT::|d02kefGen| BOOT::|d02kefSolve| BOOT::|d02ejfGen| - BOOT::|d02gbfSolve| BOOT::|d02bbfGen| BOOT::|d02bhfGen| - BOOT::|d02rafSolve| BOOT::|d02ejfSolve| BOOT::|d02bhfSolve| - BOOT::|d02gafGen| BOOT::|d02gbfGen| BOOT::|d02gafSolve| - BOOT::|d02cjfGen| BOOT::|d02cjfSolve| BOOT::|d03edfControl| - BOOT::|d03edfSolve| BOOT::|d03eefSolve| - BOOT::|d03edfLongGen| BOOT::|d03eefGen| - BOOT::|d03edfShortGen| BOOT::|e01sefSolve| - BOOT::|lnFileName| BOOT::|e01bgfSolve| BOOT::|e01safGen| - BOOT::|e01bffGen| BOOT::|e01bafSolve| - BOOT::|pfGlobalLinePosn| BOOT::|quoteString| - BOOT::|postTran| BOOT::|decodeScripts| BOOT::|htGloss| - BOOT::|htTutorialSearch| BOOT::|postInSeq| - BOOT::|htTextSearch| BOOT::|htGreekSearch| - BOOT::|postMakeCons| BOOT::|postCategory,fn| - BOOT::|htShowFunctionPageContinued| BOOT::|htCacheSet| - BOOT::|htSetFunCommand| BOOT::|listOfStrings2String| - BOOT::|htCacheOne| BOOT::|htShowSetTree| - BOOT::|htShowSetTreeValue| BOOT::|postBigFloat| - BOOT::|htSetInteger| BOOT::|chkRange| BOOT::|postConstruct| - BOOT::|postSlash| BOOT::|htCacheAddChoice| - BOOT::|startHTPage| BOOT::|htSetLinkerArgs| - BOOT::|htSetOutputCharacters| BOOT::|htSetKernelWarn| - BOOT::|htSetKernelProtect| BOOT::|htSetExpose| - BOOT::|htSetInputLibrary| BOOT::|htSetOutputLibrary| - BOOT::|htSetHistory| SPAD-SAVE BOOT:|OsEnvGet| - BOOT:|LispCompile| BOOT:|LispCompileFile| - BOOT::|condErrorMsg| BOOT:|LispLoadFile| - BOOT:|LispLoadFileQuietly| BOOT::MONITOR-RESTORE - BOOT::|brightPrintCenterAsTeX| BOOT::|brightPrint0| - BOOT::|sayWidth,fn| BOOT::|brightPrintCenter| - BOOT::|clearClam| BOOT::|brightPrintHighlightAsTeX| - BOOT::|brightPrintHighlight| BOOT::|sayDisplayWidth,fn| - BOOT::|sayDisplayWidth| BOOT::INIT-LIB-FILE-GETTER - BOOT::INIT-FILE-GETTER BOOT::|entryWidth| BOOT::FILE-RUNNER - BOOT::|editFile| BOOT::|readForDoc| BOOT::|checkNumOfArgs| - BOOT::|openServer| BOOT::|removeBackslashes| - BOOT::|checkAddBackSlashes| BOOT::/RF-1 BOOT::|docreport| - BOOT::|ExecuteInterpSystemCommand| BOOT::|pfFileName| - BOOT::|InterpExecuteSpadSystemCommand| BOOT::|alistSize| - BOOT::|parseTranList| BOOT::|parseOr| BOOT::|parseIf| - BOOT::|parseImplies| BOOT::|parseEquivalence| - BOOT::|parseLhs| BOOT::|parseAnd| BOOT::|parseLeftArrow| - BOOT::|parseUpArrow| BOOT::|parseNotEqual| BOOT::|parseNot| - BOOT::|parseDollarNotEqual| BOOT::|parseDollarGreaterEqual| - BOOT::|parseDollarLessEqual| BOOT::|parseGreaterEqual| - BOOT::|parseLessEqual| BOOT::|scriptTranRow1| - BOOT::|scriptTran| BOOT::|scriptTranRow| - BOOT::|parseExclusiveOr| BOOT::QUOTE-IF-STRING - BOOT::|dbConformGenUnder| BOOT::|listOfEntries| - BOOT::|conformString| BOOT::|dbConformGen| - BOOT::|evalableConstructor2HtString| BOOT::|halfWordSize| - BOOT::|fortFormatCharacterTypes,mkCharName| - BOOT::|opPageFast| - BOOT::|fortFormatCharacterTypes,par2string| VMLISP::MAKEDIR - VMLISP::DELETE-DIRECTORY VMLISP::GET-IO-INDEX-STREAM - VMLISP::GET-INPUT-INDEX-STREAM VMLISP::DIRECTORY? - BOOT::|c05pbfGen| BOOT::|c05nbfGen| BOOT::|c05pbfSolve| - BOOT::|c05nbfSolve| BOOT::|e02dafSolve| BOOT::|c06ebfGen| - BOOT::|c06ebfSolve| BOOT::|c06gsfGen| BOOT::|c06gsfSolve| - BOOT::|c06ekfSolve| BOOT::|c06eafSolve| BOOT::|c06gqfGen| - BOOT::|c06ecfGen| BOOT::|c06fpfGen| BOOT::|c06frfSolve| - BOOT::|c06gbfSolve| BOOT::|c06fqfGen| BOOT::|c06gqfSolve| - BOOT::|c06eafGen| BOOT::|c06gcfGen| BOOT::|c06gcfSolve| - BOOT::|c06gbfGen| BOOT::|c06fufGen| BOOT::|s01eafGen| - BOOT::|s21bafGen| BOOT::|c06fpfSolve| BOOT::|s17dcfGen| - BOOT::|c06fqfSolve| BOOT::|s18defGen| BOOT::|c06frfGen| - BOOT::|s14bafGen| BOOT::|s18dcfGen| BOOT::|s17dhfGen| - BOOT::|c06ecfSolve| BOOT::|s21bdfGen| BOOT::|c06fufSolve| - BOOT::|c06ekfGen| BOOT::|s21bcfGen| BOOT::|sGen| - BOOT::|s17dgfGen| BOOT::|d01anfGen| BOOT::|d01ajfGen| - BOOT::|d01aqfGen| BOOT::|d01gafGen| BOOT::|d01bbfGen| - BOOT::|s21bbfGen| BOOT::|d01amfGen| BOOT::|s17dlfGen| - BOOT::|d01alfGen| BOOT::|d01fcfGen| BOOT::|d01akfGen| - BOOT::|d01gbfGen| BOOT::|d01gbfSolve| VMLISP::|npPC| - VMLISP::|npPP| BOOT::|exp2FortOptimizeArray| - BOOT::|fortError1| BOOT::|fortPre1| BOOT::|spadcall1| - BOOT::|fortPreRoot| BOOT::|checkPrecision| - BOOT::|fix2FortranFloat| BOOT::|normalizeStatAndStringify| - BOOT::|mkParameterList,par2string| BOOT::|f02wefSolve| - BOOT::|f02ajfGen| BOOT::|printAny| BOOT::|f02adfGen| - BOOT::|e02dffSolve| BOOT::|printString| BOOT::|f04jgfGen| - BOOT::|f04qafGen| BOOT::|f04asfGen| BOOT::|summary| - BOOT::|show| BOOT::|showSpad2Cmd| BOOT::|f04qafSolve| - BOOT::|f04mbfGen| BOOT::|f04fafGen| BOOT::|f04arfGen| - BOOT::|f04adfSolve| BOOT::|fixObjectForPrinting| - BOOT::|savesystem| BOOT::|escapeSpecialChars| - BOOT::|f04mcfSolve| BOOT::|encodeItem| BOOT::|f04atfGen| - BOOT::|form2LispString| BOOT::|f04adfGen| - BOOT::|concatWithBlanks| BOOT::|withAsharpCmd| - BOOT::|f04jgfSolve| BOOT::|extendLocalLibdb| - BOOT::|deleteFile| BOOT::|compileAsharpCmd1| - BOOT::|f04mcfGen| BOOT::|f04arfSolve| BOOT::|frame| - BOOT::|frameSpad2Cmd| BOOT::|addNewInterpreterFrame| - BOOT::|getEnv| BOOT::|f04asfSolve| BOOT::|f04fafSolve| - BOOT::|f04mbfSolve| BOOT::|f04atfSolve| BOOT::|f07fdfSolve| - BOOT::|obey| BOOT::|f07aefGen| BOOT::|buildLibdbString| - BOOT::|f07aefSolve| BOOT::|f07fefGen| BOOT::|f07adfSolve| - BOOT::|f07adfGen| BOOT::|dbReadComments| - BOOT::|f07fefSolve| BOOT::|f07fdfGen| BOOT::|s17defGen| - BOOT::|f01qdfSolve| BOOT::|f01rcfSolve| BOOT::|f01mafGen| - BOOT::|f01rdfGen| BOOT::|f01mafSolve| BOOT::|f01brfGen| - BOOT::|f01mcfGen| BOOT::|f02axfGen| BOOT::|f02aefSolve| - BOOT::|f02akfGen| BOOT::|f02abfSolve| BOOT::|f02bjfGen| - BOOT::|bcErrorPage| BOOT::|f02xefGen| BOOT::|form2String| - BOOT::|f02aafSolve| BOOT::|dbSourceFile| - BOOT::MAKE-REASONABLE BOOT::|f02ajfSolve| - BOOT::|f02axfSolve| BOOT::|f02affSolve| BOOT::|downlink| - BOOT::BRIGHTPRINT-0 BOOT::|f02wefGen| - BOOT::|conform2String| BOOT::|f02akfSolve| - BOOT::|f02adfSolve| BOOT::|f02aafGen| - BOOT::|dbSpecialExports| BOOT::|f02agfGen| - BOOT::|f02bjfSolve| BOOT::|buildLibdbConEntry| - BOOT::|f02agfSolve| BOOT::|dbSpecialDescription| - BOOT::|f02xefSolve| BOOT::|f02abfGen| BOOT::|f02bbfGen| - BOOT::|mkButtonBox| BOOT::|f02awfSolve| - BOOT::|assignSlotToPred| BOOT::|f02bbfSolve| - BOOT::|f02aefGen| BOOT::|f02awfGen| BOOT::|f02affGen| - BOOT::|dbMkEvalable| BOOT::|mkEvalable| - BOOT::|conPageChoose| BOOT::KILL-TRAILING-BLANKS - BOOT::|ySearch| BOOT::|aSearch| BOOT::|close| - BOOT::|kSearch| BOOT::|compileBoot| BOOT::|aokSearch| - BOOT::|showNamedConstruct| - BOOT::|reportOpsFromUnitDirectly1| BOOT::|oSearch| - BOOT::|tabsToBlanks| BOOT::|underscoreDollars| - BOOT::|mkGrepTextfile| BOOT::|reportOpsFromUnitDirectly0| - BOOT::|replaceGrepStar| BOOT::|grepSource| BOOT::|xSearch| - BOOT::|pSearch| BOOT::|dSearch| BOOT::|doSystemCommand| - BOOT::|standardizeSignature| BOOT::|conPageFastPath| - BOOT::|conPageConEntry| BOOT::|quickForm2HtString| - BOOT::|dbAttr| BOOT::|e02ajfGen| BOOT::|pluralize| - BOOT::|parseTran| BOOT::|e02defSolve| - BOOT::|dbSpecialOperations| BOOT::|issueHTStandard| - BOOT::|justifyMyType| BOOT::|getCallBackFn| - BOOT::|bcDifferentiateGen| BOOT::|bcIndefiniteIntegrateGen| - BOOT::|htMakeErrorPage| BOOT::|issueHT| - BOOT::|setOutputAlgebra| BOOT::|bcDraw2DparGen| - BOOT::|ExecuteSpadSystemCommand| BOOT::|bcDraw3Dpar1Gen| - BOOT::|bcProductGen| BOOT::|ts| BOOT::|bcRealLimitGen| - BOOT::|e02zafGen| BOOT::|bcSumGen| BOOT::|bcDraw3DparGen| - BOOT::|bcDraw3DfunGen| BOOT::|aggwidth| BOOT::WIDTH - BOOT::|bcDefiniteIntegrateGen| BOOT::|bcSeriesGen| - BOOT::|subspan| BOOT::|bcPuiseuxSeriesGen| - BOOT::|bcLaurentSeriesGen| BOOT::|superspan| - BOOT::|bcSeriesByFormulaGen| BOOT::|bcNotReady| - BOOT::|bcDraw2DfunGen| BOOT::|bcTaylorSeriesGen| - BOOT::|bcDraw2DSolveGen| BOOT::KCL-OS-ENV-GET - BOOT::|bcComplexLimitGen| BOOT::|saturnPRINTEXP| - BOOT::|bcSeriesExpansionGen| BOOT::COMPILE-BOOT-FILE - BOOT::|bcCreateVariableString| BOOT::|bcGenEquations| - BOOT::|vConcatSuper| BOOT::BOOT-LOAD - BOOT::|bcSolveNumerically1| BOOT::|bcLinearSolveEqnsGen| - BOOT::|bcMakeUnknowns| BOOT::|bcInputSolveInfo| - BOOT::|bcInputEquationsEnd| BOOT::|bcSystemSolveEqns1| - BOOT::|bcLinearSolveEqns1| BOOT::|bcVectorGen| - BOOT::|printBasic| BOOT::|subSuper| BOOT::|tr| - BOOT::|bcLinearSolveMatrix1| BOOT::|stringList2String| - BOOT::|bcString2HyString2| BOOT::|bcwords2liststring,fn| - BOOT::|linkGen| BOOT::|optCallEval| BOOT::|tokType| - BOOT::|timedEvaluate| BOOT::|roundStat| - BOOT::|bracketString| BOOT::|e02bcfGen| BOOT::|e02gafGen| - BOOT::|e02bbfSolve| VMLISP:OBEY BOOT::|e04ycfSolve| - BOOT::|e04nafSolve| BOOT::|e04dgfSolve| BOOT::|e04fdfGen| - BOOT::|e04gcfGen| BOOT::|NRTevalDomain| BOOT::|e04fdfSolve| - BOOT::|e04mbfSolve| BOOT::|e04nafGen| BOOT::|e04gcfSolve| - BOOT::|e04ucfGen| BOOT::|e04jafGen| BOOT::|e04mbfGen| - BOOT::|e04jafSolve| BOOT::|e04dgfGen| BOOT::|e04ycfGen| - BOOT::|f01rdfSolve| BOOT::|f01mcfSolve| BOOT::|f01qdfGen| - BOOT::|f01qcfGen| BOOT::|f01qefGen| BOOT::|f01rcfGen| - BOOT::|f01refSolve| BOOT::|f01qefSolve| BOOT::|e02zafSolve| - BOOT::|f01qcfSolve| BOOT::|f01refGen| BOOT::|f01brfSolve| - BOOT::|poGlobalLinePosn| BOOT:|sayString| - BOOT::|incHandleMessage| BOOT::|pred2English| - BOOT::|prefix2String0| BOOT::|form2StringLocal| - BOOT::|formatOpType| BOOT::|form2String1| BOOT::|ncTag| - BOOT::|ncAlist| BOOT::|tuple2String,f| - BOOT::|formatAttributeArg| BOOT::|formString| - BOOT::|form2StringWithPrens| BOOT::|prefix2String| - BOOT::|form2StringAsTeX| BOOT::|prefix2StringAsTeX|)) -(PROCLAIM - '(FTYPE (FUNCTION (*) T) BOOT::|bcConform| BOOT:STREAM-EOF - BOOT::|categoryParts| BOOT:IOCLEAR BOOT:SAY BOOT:MOAN - BOOT::|centerNoHighlight| BOOT:CROAK BOOT::INTERRUPT - BOOT::LISP-BREAK-FROM-AXIOM BOOT:META VMLISP:NILFN - BOOT::MAKE-DATABASE BOOT::|defaultTargetFE| BOOT::/DUPDATE - BOOT::/UPDATE BOOT::/MONITOR VMLISP:$FILEP VMLISP:CALLBELOW - BOOT::|systemError| BOOT::|listSort| - BOOT::|asCategoryParts| BOOT::RDEFOUTSTREAM - BOOT::RDEFINSTREAM VMLISP::SETQERROR BOOT::|throwMessage| - BOOT::TOPLEVEL BOOT::|getDomainSigs| - BOOT::|getInheritanceByDoc| BOOT::|showImp| - BOOT::|showFrom| BOOT::|getDomainDocs| BOOT::|grepFile| - BOOT::|printRecordFile| BOOT::|wasIs| - BOOT::|htFile2RecordFile| BOOT::|inputFile2RecordFile| - BOOT::|htFile2InputFile| BOOT::|bcComments| - BOOT::|bcNameTable| BOOT::|dbSayItemsItalics| - BOOT::|htPred2English| BOOT::|interpret| - BOOT::|Enumeration,LAM| VMLISP:VMREAD VMLISP:RKEYIDS - BOOT::/RP BOOT::MONITOR-TESTED BOOT::MONITOR-RESET - BOOT::MONITOR-DISABLE BOOT::MONITOR-ENABLE - BOOT::|returnStLFromKey| BOOT::MAKE-MONITOR-DATA - BOOT::|level| BOOT::LEVEL BOOT::|resolveTT| - BOOT::|isLegitimateMode| BOOT::|hasFileProperty| - BOOT::|coerceConvertMmSelection| BOOT::|canCoerce| - BOOT::|selectMms1| BOOT::|canCoerceFrom| BOOT::MAKE-TOKEN - BOOT::MAKE-LINE BOOT::|centerAndHighlight| BOOT::|getOpDoc| - BOOT::MAKE-STACK BOOT::|firstNonBlankPosition| - BOOT::MAKE-XDR-STREAM BOOT::INITROOT - BOOT::|EnumerationCategory,LAM| BOOT::|Mapping| - BOOT::|RecordCategory,LAM| BOOT::|Union| - BOOT::|UnionCategory,LAM| BOOT::|displayCategoryTable| - BOOT::MAKE-REDUCTION BOOT::READ-A-LINE BOOT::|dbPresentOps| - BOOT::|buildBitTable| BOOT::|htBlank| - BOOT::|dbMakeContrivedForm| BOOT::|dcSize| BOOT::|sum| - BOOT::|args2HtString| BOOT::|dc| BOOT::|bcNameCountTable| - VMLISP::MAKE-LIBSTREAM BOOT::|nextown1| BOOT::|next1| - BOOT::|incAppend1| BOOT::|synonym| BOOT::|grepConstruct| - VMLISP::LOTSOF BOOT::|htBeginMenu| BOOT::|bcCon| - BOOT::|koOps| BOOT::|dbWriteLines| BOOT::|catsOf| - BOOT::|getDomainOpTable| BOOT:|PlainError| - BOOT:|PlainPrint| BOOT::|htInitPageNoScroll| - BOOT:|ReadLispExpr| BOOT::|conSpecialString?| - BOOT::|htSayStandard| BOOT:|StreamFlush| BOOT:|NewPathname| - BOOT:|SessionPathname| BOOT::|domainsOf| - BOOT::|dbPresentCons| READLINE BOOT:|StringConcat| - BOOT::|htBcLinks| BOOT::|pluralSay| - BOOT::|getConstructorExports| BOOT::|sublisFormal| - BOOT::NEXT-META-LINE BOOT::|htLispLinks| - BOOT::META-META-ERROR-HANDLER BOOT::|dbHeading| - BOOT::NEXT-BOOT-LINE BOOT::|concat| BOOT::SPAD_SYNTAX_ERROR - BOOT::BOOT BOOT::|htQuery| BOOT::SPAD - BOOT::|htSayIndentRel| BOOT::|bcConPredTable| - BOOT::|htSaySaturn| BOOT::|dbSayItems| BOOT::|simpHasPred| - BOOT::|start| BOOT::|protectedPrompt| - BOOT::|htpMakeEmptyPage| BOOT::|htMakeButton| - BOOT::|htSayIfStandard| BOOT::|htSay| BOOT::|incZip1| - BOOT::|incIgen1| BOOT::|incRgen1| - BOOT::|runOldAxiomFunctor| BOOT:|fillerSpaces| - BOOT::|incLude1| FOAM::MAKE-FOAMPROGINFOSTRUCT - BOOT::|bcPred| BOOT::|sayNewLine|)) -(PROCLAIM - '(FTYPE (FUNCTION (T) CHARACTER) VMLISP:EBCDIC VMLISP:NUM2CHAR - BOOT::LINE-CURRENT-CHAR)) -(PROCLAIM '(FTYPE (FUNCTION (T T *) FIXNUM) BOOT::LINE-NEW-LINE)) -(PROCLAIM - '(FTYPE (FUNCTION (T T T) FIXNUM) BOOT::|rwrite128|)) -(PROCLAIM - '(FTYPE (FUNCTION (T) STRING) BOOT::|stripSpaces| BOOT::LINE-BUFFER - BOOT::DROPTRAILINGBLANKS)) -(PROCLAIM - '(FTYPE (FUNCTION (T) T) BOOT::|form2FenceQuoteTail| - BOOT::|combineMapParts| BOOT::|form2FenceQuote| - BOOT::|mkMapPred| BOOT::|formatOpConstant| - BOOT::|formJoin2| BOOT::|axOpTran| BOOT::|axFormatOpList| - BOOT::|axFormatOp| BOOT::|optcomma| - BOOT::|displayTranModemap| - BOOT::|makeInternalMapMinivectorName| - BOOT::|cleanUpSegmentedMsg| BOOT::|makeDefaultDef| - BOOT::|getDefaultingOps| BOOT::|getOpSegment| - BOOT::|removeIsDomainD| BOOT::|formatSignatureAsTeX| - BOOT::|axFormatType| BOOT::|sayRemoveFunctionOrValue| - BOOT::|pvarCondList| BOOT::|makeTypeSequence| - BOOT::|makeArgumentIntoNumber| BOOT::|axFormatAttrib| - BOOT::|categoryForm?| BOOT::|axFormatCondOp| BOOT:OPTIONAL - BOOT::|axFormatPred| BOOT::|fileConstructors| - BOOT::SOURCEPATH BOOT::|untraceMapSubNames| BOOT:LASTELEM - BOOT::|mapPredTran| BOOT::|makeDefaultArgs| - BOOT::|stripType| BOOT::|dqUnitCopy| BOOT::|mkAliasList| - BOOT::|dqUnit| BOOT::|modemapToAx| - BOOT::|isDefaultPackageName| BOOT::|getEqualSublis| - BOOT::|myWritable?| BOOT::|getInfovec| BOOT::|predTran| - BOOT::|fnameReadable?| BOOT::|hasDefaultPackage| - BOOT::|compFailure| BOOT::|fnameType| - BOOT::|setExtendedDomains| - BOOT::|simplifyMapConstructorRefs| BOOT::|fnameName| - BOOT::|StringToDir| - BOOT::|spad2AxTranslatorAutoloadOnceTrigger| - BOOT::|fnameDirectory| - BOOT::|simplifyMapPattern,unTrivialize| BOOT::|DirToString| - BOOT::|isPatternArgument| BOOT::|htQuote| - BOOT::|isConstantArgument| BOOT::|frameName| - BOOT::|objValUnwrap| BOOT::|htMakePage| - BOOT::|PARSE-LedPart| BOOT::|htpPropertyList| - BOOT::|analyzeMap,f| BOOT::|PARSE-NudPart| - BOOT::|PARSE-Expr| BOOT::|bcHt| BOOT::|getIteratorIds| - BOOT::|getUserIdentifiersInIterators| - BOOT::|htpInputAreaAlist| BOOT::|getUserIdentifiersIn| - BOOT::|PARSE-GliphTok| BOOT::|kePageOpAlist| - BOOT::|fileNameStrings| BOOT::|inclmsgCannotRead| - BOOT::MAKE-SYMBOL-OF BOOT:MATCH-ADVANCE-STRING - BOOT::|removeUndoLines| BOOT::STACK-SIZE BOOT:NOTE - BOOT::|histFileErase| BOOT::|histInputFileName| - BOOT::STACK-STORE BOOT::|readHiFi| BOOT::|restoreHistory| - BOOT::STACK-UPDATED BOOT::|clearSpad2Cmd| BOOT::|getToken| - BOOT::|makeHistFileName| BOOT::|changeHistListLen| - BOOT::|showHistory| BOOT::|setIOindex| BOOT::|saveHistory| - BOOT::|PARSE-NBGliphTok| BOOT::|dewritify,dewritifyInner| - BOOT::|setHistoryCore| BOOT::|charDigitVal| - BOOT::|dewritify,is?| BOOT::|writify| BOOT::|history| - BOOT::|gensymInt| BOOT::|dewritify| BOOT::TOKEN-NONBLANK - BOOT::|undoFromFile| BOOT::FLOATEXPID - BOOT::|e02dffSolve,fy| BOOT::|spadClosure?| - BOOT::|bustUnion| BOOT::|writify,writifyInner| - BOOT::|undoChanges| BOOT::|undoInCore| BOOT::|getSlot1| - BOOT::|writifyComplain| BOOT::|unwritable?| - BOOT::|dbSpecialDisplayOpChar?| BOOT::|removeAttributes| - BOOT:|pathname| BOOT::|isLeaf| BOOT::|srcPosDisplay| - BOOT::|srcPosColumn| BOOT::|transformOperationAlist| - BOOT::|srcPosSource| BOOT::|sayNonUnique| - BOOT::|compDefWhereClause,removeSuchthat| - BOOT::|srcPosLine| BOOT::|compTuple2Record| - BOOT::|srcPosFile| BOOT::|mkAtreeValueOf1| BOOT::|center80| - BOOT::|loadFunctor| - BOOT::|compDefWhereClause,transformType| - BOOT::|mkCategoryPackage,gn| - BOOT::|updateCategoryFrameForConstructor| BOOT:|sayFORMULA| - BOOT::|convertOpAlist2compilerInfo| - BOOT::|getCategoryOpsAndAtts| BOOT::|lispize| - BOOT::|getSrcPos| BOOT::|mustInstantiate| - BOOT::|isSystemDirectory| BOOT:ASSOCRIGHT BOOT::|getFlag| - BOOT::|getMsgToWhere| BOOT::|mkExplicitCategoryFunction,fn| - BOOT::|updateCategoryFrameForCategory| BOOT:CURSTRMLINE - BOOT::|alreadyOpened?| BOOT::|msgImPr?| BOOT::|Operators| - BOOT::|mkAtree1| BOOT::|getLineText| BOOT::|pfSourceText| - BOOT::|toFile?| BOOT::|getMsgArgL| BOOT::|poGetLineObject| - BOOT:BRIGHTPRINT BOOT::|getLinePos| - BOOT::|loadIfNecessaryAndExists| BOOT::|lnPlaceOfOrigin| - BOOT::|makeLeaderMsg| BOOT::|putInLocalDomainReferences| - BOOT::|pfPosOrNopos| BOOT::|killNestedInstantiations| - BOOT::|NRTputInTail| BOOT::|quotifyCategoryArgument| - BOOT::|getLisplibVersion| BOOT::|getMsgPrefix| - BOOT::|unInstantiate| BOOT::|asTupleAsVector| - BOOT::|lisplibDoRename| BOOT::|asTupleSize| - BOOT::|finalizeLisplib| BOOT::|disallowNilAttribute| - BOOT::|asTupleNewCode0| BOOT::|processKeyedError| - BOOT::|toScreen?| BOOT::|compileConstructor1| - BOOT::|compileDocumentation| BOOT::|transformREPEAT| - BOOT::|line?| BOOT::|readLibPathFast| - BOOT::|modemap2Signature| BOOT::|transformCollect| - BOOT::|msgLeader?| BOOT::|compileConstructor| - BOOT::|initToWhere| BOOT::|initImPr| - BOOT::|putDatabaseStuff| BOOT::|e02defSolve,fxy| - BOOT::|getMsgPosTagOb| BOOT::|pfIdSymbol| - BOOT::|mkAtreeExpandMacros| BOOT::|getMsgPos| - BOOT::|macApplication| BOOT::|isInterpMacro| - BOOT::|getMsgFTTag?| BOOT::|leader?| - BOOT::|pf0ApplicationArgs| BOOT::|atree2EvaluatedTree| - BOOT::|remFile| BOOT::|pfMLambda?| BOOT::|whichCat| - BOOT::|pfApplicationOp| BOOT::|removeBindingI| - BOOT::|addArgumentConditions,fn| BOOT::|macId| - BOOT:STRMBLANKLINE BOOT::|getUnname1| BOOT:STRMSKIPTOBLANK - BOOT::|remLine| BOOT::|pfSourcePosition| - BOOT::|spadCompileOrSetq| BOOT::|getMsgKey?| - BOOT::|mac0Get| BOOT::|getMsgKey| BOOT::|compile| - BOOT::|evaluateType| BOOT::|constructMacro| - BOOT::|poPosImmediate?| BOOT::|pfMLambdaBody| - BOOT::|poNopos?| BOOT::|evaluateType1| - BOOT::|pf0MLambdaArgs| BOOT:NEXTSTRMLINE - BOOT::|evaluateSignature| BOOT::|macMacro| - BOOT::|poLinePosn| BOOT::|failCheck| BOOT::|pfNothing?| - BOOT::|compile,isLocalFunction| BOOT::|macSubstituteOuter| - BOOT::|erMsgSep| BOOT::|pfMacroRhs| BOOT::|mkConstructor| - BOOT::|showMsgPos?| BOOT::|pfMacroLhs| BOOT::|macExpand| - BOOT:IS_GENVAR BOOT::|mkEvalableMapping| BOOT::|macLambda| - BOOT::|getMsgInfoFromKey| BOOT::|evaluateType0| - BOOT::|getStFromMsg| BOOT::|getUnnameIfCan| - BOOT::|macWhere| BOOT::|tabbing| BOOT::|getMsgLitSym| - BOOT::|pfApplication?| BOOT::|getPosStL| BOOT::|pfMacro?| - BOOT::|doItIf,localExtras| BOOT::|getMsgText| - BOOT::|mkEvalableUnion| BOOT::|pfLambda?| - BOOT::|getMsgPrefix?| BOOT::|mkEvalableRecord| - BOOT::|pfWhere?| BOOT::|getPreStL| BOOT::|makeOrdinal| - BOOT::|mac0GetName| BOOT::|getAndEvalConstructorArgument| - BOOT::|msgOutputter| BOOT::|pfLeaf?| - BOOT::|mkEvalableCategoryForm| BOOT::|getMsgTag?| - BOOT::|devaluateDeeply| BOOT::|pfLeafPosition| - BOOT::|compDefineFunctor1,FindRep| BOOT::|pfAbSynOp| - BOOT::|listOutputter| BOOT::|pfTypedId| - BOOT::|processChPosesForOneLine| BOOT::|pf0LambdaArgs| - BOOT::|e02dffSolve,fx| BOOT::|getModeSetUseSubdomain| - BOOT::MKQSADD1 BOOT::|getModeSet| BOOT::|poCharPosn| - BOOT::|posPointers| BOOT::|NRTgenInitialAttributeAlist| - BOOT::|makeMsgFromLine| BOOT::THETA_ERROR - BOOT::|mkRationalFunction| BOOT::MACROEXPANDALL - BOOT::|isCategoryPackageName| BOOT::|erMsgSort| - BOOT::|isAVariableType| BOOT::|msgNoRep?| - BOOT::|getPrincipalView| BOOT::|To| BOOT::|hitListOfTarget| - BOOT::SUBANQ BOOT::|From| BOOT::|domainDepth| - BOOT::|NRTgetLocalIndexClear| BOOT::|constructSubst| - BOOT::|containsVars| BOOT::|evalMmDom| - BOOT::|abbreviationsSpad2Cmd| - BOOT::|formatUnabbreviatedSig| BOOT::|optFunctorBody| - BOOT::|optimize| BOOT::|emptyAtree| BOOT::|templateParts| - BOOT::|dqToList| BOOT::|dqConcat| BOOT::|isHomogeneousList| - BOOT::|isUncompiledMap| BOOT::|printMms| - BOOT::|getSymbolType| BOOT::/UNTRACE-REDUCE - BOOT::|matchMmCond| BOOT::|object2Identifier| - BOOT::|selectMostGeneralMm| BOOT::|fixUpTypeArgs| - BOOT::|handleLispBreakLoop| BOOT::TRACEOPTIONS BOOT:REMDUP - BOOT::|evalMmStack| BOOT::SHOWBIND BOOT::DROPENV - BOOT::UNVEC BOOT::|noSharpCallsHere| - BOOT::|untraceDomainConstructor| BOOT:CURMAXINDEX - BOOT::|isDomain| BOOT::|getFunctionSourceFile| - BOOT::|isMap| BOOT::HACKFORIS1 BOOT::HACKFORIS - BOOT::|containsVars1| BOOT::|orderMmCatStack| - BOOT::|evalMmStackInner| BOOT::DEF-IN2ON - BOOT::|new2OldTran| BOOT::|resolveTypeList| - BOOT::|newConstruct| BOOT::|newIf2Cond| BOOT::|newDef2Def| - BOOT::|asTupleNew0| BOOT::DEF-MESSAGE1 BOOT::LIST2STRING1 - BOOT::DEF-WHERE BOOT::DEF-SEQ BOOT::SEQOPT BOOT::DEF-IS - BOOT::DEF-EQUAL BOOT::DEF-MESSAGE BOOT::DEF-CATEGORY - BOOT::DEF-REPEAT BOOT::DEF-COND BOOT::DEF-LESSP - BOOT::SMINT-ABLE BOOT::DEF-COLLECT BOOT::DEF-STRING - BOOT::|Zeros| BOOT::DEF-SETELT BOOT::DEF-RENAME1 - BOOT::DEF-ELT BOOT::|DEF-:| BOOT::DEF-ADDLET - BOOT::|quoteWidth| BOOT::DEF-INSERT_LET1 BOOT::|boxSuper| - BOOT::DEF-WHERECLAUSE BOOT::DEF-STRINGTOQUOTE - BOOT::|boxSub| BOOT::DEF-INSERT_LET BOOT::LIST2CONS-1 - BOOT::|bootTransform| BOOT::|concatWidth| - BOOT::DEF-IS-REMDUP1 BOOT::|altSuperSubWidth| - BOOT::|altSuperSubSuper| BOOT::|concatbWidth| - BOOT::LIST2CONS BOOT::|altSuperSubSub| BOOT::DEF-IS-REMDUP - BOOT::|concatSuper| BOOT::DEF-IS-EQLIST - VMLISP:RECOMPILE-DIRECTORY BOOT::|concatSub| - BOOT::|new2OldDefForm| BOOT::|binomWidth| - BOOT::|binomSuper| BOOT::DEF-SELECT BOOT::|binomSub| - BOOT::COMP-TRAN-1 BOOT::PUSHLOCVAR BOOT::COMP-EXPAND - BOOT::|canCacheLocalDomain,domargsglobal| VMLISP:MAKE-CVEC - BOOT::|inSuper| BOOT::COMP-NEWNAM BOOT::COMP-TRAN - BOOT::|inSub| BOOT::COMP-FLUIDIZE BOOT::|addInputLibrary| - BOOT::|inWidth| BOOT::|dropInputLibrary| - BOOT::|openOutputLibrary| BOOT::|moveORsOutside| - BOOT::|stepSuper| BOOT::|outputTranMatrix| - BOOT::|fracwidth| BOOT::|stepSub| BOOT::|compQuietly| - BOOT::|listOfPatternIds| BOOT::|fracsuper| BOOT::COMP-1 - BOOT::|getOplistForConstructorForm| BOOT::|stepWidth| - BOOT::COMP-2 VMLISP:TRIMSTRING BOOT::|maprin0| - BOOT::|compAndDefine| BOOT::|abbreviate| BOOT::|fracsub| - BOOT::|exptSuper| BOOT::|mathPrintTran| - BOOT::|COMP,FLUIDIZE| VMLISP:COMP370 BOOT::|exptWidth| - BOOT::|rootWidth| BOOT::|with| BOOT::|exptNeedsPren| - BOOT::|minusWidth| VMLISP:|log| BOOT::|maprin| - BOOT::|loadDependents| BOOT::|concatTrouble,fixUp| - BOOT::|loadIfNecessary| VMLISP:MBPIP BOOT::|timesWidth| - BOOT::|rootSuper| BOOT::|interactiveModemapForm,fn| - BOOT::|largeMatrixAlist| VMLISP:QSORT BOOT::|sumWidth| - VMLISP:PLACEP BOOT::LOG10 BOOT::|aggWidth| BOOT::|zagWidth| - BOOT::|pi2Width| BOOT::|rebuildCDT| BOOT::|LZeros| - BOOT::|e02zafSolve,fmu| BOOT::|signatureTran| - BOOT::|destructT| BOOT::|userError| BOOT::|clearAllSlams| - BOOT::|displayComp| VMLISP:HKEYS BOOT::|mkErrorExpr| - BOOT::|pi2Sup| BOOT::|compOrCroak1,compactify| - BOOT::|pi2Sub| BOOT::|convertSpadToAsFile| - BOOT::|overbarSuper| BOOT::|outputOp| BOOT::|compiler| - BOOT::|resolveTMRed1| BOOT::|resolveTTRed3| - BOOT::|fnameWritable?| BOOT::MONITOR-EVALBEFORE - VMLISP:UPCASE BOOT::|interpOp?| BOOT::|pathnameName| - BOOT::|pathnameDirectory| BOOT::SPADSYSNAMEP VMLISP:STATEP - BOOT::|compileSpad2Cmd| BOOT::MONITOR-BLANKS - BOOT::|piWidth| BOOT::|newType?| BOOT::WHOCALLED - BOOT::|charyTopWidth| VMLISP:FBPIP BOOT::|bubbleType| - BOOT::|putWidth| BOOT::|piSup| BOOT::OPTIONS2UC - BOOT::|overlabelSuper| BOOT::|pathnameType| - BOOT::|spadThrowBrightly| BOOT::/OPTIONS BOOT::|piSub| - BOOT::/UNEMBED-Q BOOT::/UNEMBED-1 - BOOT::|typeIsASmallInteger| BOOT::|indefIntegralWidth| - BOOT::|indefIntegralSup| BOOT::|isSimple| VMLISP:UNEMBED - BOOT::|indefIntegralSub| BOOT::|primitiveType| - BOOT::|mkAtree| BOOT::/UNTRACELET-2 - BOOT::|outputTranIterate| BOOT::|errorRef| - VMLISP:RE-ENABLE-INT BOOT::/UNTRACELET-1 BOOT::|intWidth| - BOOT::|NRTgetLocalIndex| BOOT::|getOutputAbbreviatedForm| - BOOT::|isFluid| VMLISP:IVECP BOOT::|iterVarPos| - BOOT::|remWidth| VMLISP:LIST2VEC BOOT::|matWidth| - BOOT::|asTupleAsList| BOOT::|outputTranIteration| - VMLISP:LISTOFQUOTES BOOT::|upcase| BOOT::|intSup| - BOOT::|reassembleTowerIntoType| BOOT::|upor| - BOOT::|matSuper| BOOT::|hasFormalMapVariable,hasone?| - BOOT::|intSub| VMLISP:IS-CONSOLE BOOT::|coerceUnion2Branch| - BOOT::|PushMatrix| BOOT::MKPROGN BOOT::|uncons| - VMLISP:MAKE-ABSOLUTE-FILENAME - BOOT::|retract2Specialization| BOOT::|sigma2Width| - VMLISP:FUNARGP BOOT::|syminusp| BOOT::|NRTassocIndex| - BOOT::|resolveTypeListAny| BOOT::MONITOR-PRINTREST - BOOT::|extwidth| BOOT::|varsInPoly| BOOT::|sigma2Sup| - BOOT::|stackWarning| BOOT::SMALL-ENOUGH BOOT::|extsuper| - BOOT::|sigma2Sub| BOOT::|extsub| BOOT::|sigmaWidth| - BOOT::/INITUPDATES BOOT::|sigmaSup| BOOT::IS_SHARP_VAR - BOOT::|sigmaSub| BOOT::|retract1| BOOT::|qTWidth| VMLISP:LN - BOOT::|decomposeTypeIntoTower| BOOT::|transcomparg| - BOOT::FUNLOC BOOT::|stringWidth| - BOOT::|mathprintWithNumber| BOOT::COND-UCASE - VMLISP:PROPLIST BOOT::|texFormat| BOOT::|bubbleConstructor| - BOOT::|isSubForRedundantMapName| BOOT::|isDomainOrPackage| - BOOT::|dispfortexp| BOOT::|isInterpOnlyMap| - BOOT::|formulaFormat| BOOT::|boxWidth| BOOT::|sayMath| - BOOT::|domainZero| BOOT::|domainOne| VMLISP:COPY - VMLISP:DOWNCASE BOOT::|e04ucfSolve,fg| VMLISP:SHUT - BOOT::|unescapeStringsInForm| - BOOT::|executeInterpreterCommand| VMLISP:REROOT - BOOT::|parseAndInterpret| VMLISP:DIG2FIX - BOOT::|ncSetCurrentLine| BOOT::|pvarsOfPattern| - BOOT::|htEscapeString| BOOT::|e01safSolve,f| - BOOT::|e04ucfSolve,fe| BOOT::|e01befSolve,f| - BOOT::|e01bffSolve,g| VMLISP:LOG2 BOOT::|e01dafSolve,g| - BOOT::|e01dafSolve,f| VMLISP:SIZE VMLISP:EOFP - BOOT::|e01bffSolve,f| VMLISP:RSHUT BOOT::|e04ucfSolve,fd| - BOOT::|e01bhfSolve,f| BOOT::|objVal| BOOT::|getValue| - BOOT::|getMode| BOOT::|getUnname| VMLISP:DIGITP - BOOT::|bottomUp| BOOT::|mkAtreeNode| VMLISP:VEC2LIST - VMLISP:MAKE-VEC VMLISP:GCMSG BOOT::|retract| - BOOT::|getUnionOrRecordTags| BOOT::|e02dcfColdSolve,h| - BOOT::|e02ajfSolve,f| BOOT::|polyVarlist| - BOOT::|e02befColdSolve,f| BOOT::|removeQuote| - BOOT::|e02dcfColdSolve,g| BOOT::|e02dcfColdSolve,f| - BOOT::|isMapExpr| BOOT::|getTarget| - BOOT::|e02ddfColdSolve,f| BOOT::|isType| - BOOT::|bottomUpElt| BOOT::|e02adfSolve,f| - BOOT::|retractAtree| BOOT::|bottomUpPercent| - BOOT::|fetchOutput| BOOT::|e02aefSolve,f| - BOOT::|e02gafSolve,fb| BOOT::|bottomUpUseSubdomain| - BOOT::|getBasicObject| BOOT::|bottomUpCompile| - BOOT::|e02ddfSolve,h| BOOT::|e02ddfSolve,g| - BOOT::|e02bafSolve,g| BOOT::|e02bcfSolve,f| - BOOT::|getBasicMode| BOOT::|e02ddfSolve,f| BOOT::|unwrap| - BOOT::|isWrapped| BOOT::|e02bafSolve,f| BOOT::GETZEROVEC - BOOT::|containsPolynomial| - BOOT::|getModeOrFirstModeSetIfThere| BOOT::|e02ahfSolve,f| - BOOT::|e04ucfSolve,fc| BOOT::|wrapMapBodyWithCatch| - BOOT::|e02agfSolve,i| BOOT::|e02agfSolve,h| - BOOT::|e02bdfSolve,f| BOOT::|containsVariables| - BOOT::|e02bbfSolve,f| BOOT::|wrapped2Quote| - BOOT::|objCodeVal| BOOT::|objCodeMode| - BOOT::|e02akfSolve,f| BOOT::|asyUnTuple| - BOOT::|asyTypeUnitList| BOOT::|asyComma?| - BOOT::|interactiveModemapForm| BOOT::|isTaggedUnion| - BOOT::|asIsCategoryForm| BOOT::|opOf| BOOT::|e02agfSolve,g| - BOOT::|asySubstMapping| BOOT::|e02agfSolve,f| - BOOT::|asyTypeMapping| BOOT::|asyCATEGORY| - BOOT::|e02dafSolve,fp| BOOT::|asyShorten| - BOOT::|e02dafSolve,fmu| BOOT::|createAbbreviation| - BOOT::|astran| BOOT::|asMakeAlist| BOOT::|asyParents| - BOOT::|asyDocumentation| BOOT::|asyConstructorModemap| - BOOT::|asytran| BOOT::|asyPredTran| BOOT::|asyPredTran1| - BOOT::|as| BOOT::|asytranLiteral| BOOT::|asytranEnumItem| - BOOT::|constructor?| BOOT::|hackToRemoveAnd| - BOOT::|asyGetAbbrevFromComments| BOOT::|intern| - BOOT::|asyTypeJoinPartPred| BOOT::|zeroOneConversion| - BOOT::|asyArgs| BOOT::|asyArg| BOOT::|asyFindAttrs| - BOOT::|asyAncestors| BOOT::|asyAncestorList| - BOOT::|asyTypeJoinItem| BOOT::|isLowerCaseLetter| - BOOT::|abbreviation?| BOOT::|asAll| BOOT::|error| - BOOT::|asyTypeJoinPartIf| BOOT::|asyType| - BOOT::|asyTypeJoin| BOOT::|asyTypeJoinPartExport| - BOOT::|asyCattranOp| BOOT::|predicateBitRef| - BOOT::|asyMkpred| BOOT::|asyLooksLikeCatForm?| - BOOT::|asyCosigType| BOOT::|setVector12| - BOOT::|asMakeAlistForFunction| BOOT::|optFunctorPROGN| - BOOT::|getAttributesFromCATEGORY| BOOT::|worthlessCode| - BOOT::|mySort| BOOT::|optFunctorBody,CondClause| - BOOT::|mkDomainFormer| BOOT::|mkNiladics| BOOT::|optCall| - BOOT::|explodeIfs| BOOT::|folks| BOOT::|mkVector| - BOOT::|asyExtractDescription| BOOT::|asyCattran1| - BOOT::|simpCattran| BOOT::|asyCattran| BOOT::|asyCatItem| - BOOT::|asyExportAlist| BOOT::FOOBAR - BOOT::|bootAbsorbSEQsAndPROGNs| BOOT::|displayDatabase| - BOOT::|bootAbsorbSEQsAndPROGNs,flatten| BOOT::|bootTran| - BOOT::|asyConstructorArg| BOOT::|bootLabelsForGO| - BOOT::GP2COND BOOT::|bootPROGN| BOOT::|asyTypeMakePred| - BOOT::|bootSEQ| BOOT::|tryToRemoveSEQ| BOOT::|nakedEXIT?| - BOOT::|asyConstructorArgs| BOOT::|mergeCONDsWithEXITs| - BOOT::STREAM2UC BOOT::|asyTypeJoinStack| BOOT::|bootCOND| - BOOT::STRINGREST BOOT::|bootAND| BOOT::|boot2Lisp| - BOOT::|bootOR| BOOT::|asyTypeJoinPartWith| BOOT::|bootIF| - BOOT::|asyCosig| BOOT::|bootAND,flatten| - BOOT::|bootPushEXITintoCONDclause| BOOT::|asyIsCatForm| - BOOT::|bootOR,flatten| BOOT::|asCategoryParts,exportsOf| - BOOT::|removeEXITFromCOND| BOOT::|flattenCOND| BOOT::/FLAG - BOOT::|extractCONDClauses| BOOT::|hashable| - BOOT::|trimString| BOOT::|mergeableCOND| - BOOT::|knownEqualPred| BOOT::|removeEXITFromCOND?| - BOOT::CPSAY BOOT::|zeroOneConvert| BOOT::/EDIT - BOOT::|domainForm?| BOOT::|makeByteWordVec| - BOOT::DECIMAL-LENGTH BOOT::|unabbrevAndLoad| BOOT::READLISP - BOOT::|abbQuery| BOOT::SPAD-EVAL BOOT::/TRANSNBOOT - BOOT::SPAD-MDTR-2 BOOT::SPAD-MDTR-1 BOOT::/TRANSPAD - BOOT::|setAutoLoadProperty| BOOT::/TRANSMETA - BOOT::|getConstructorUnabbreviation| BOOT::|getLisplibName| - BOOT::OPTIMIZE&PRINT - BOOT::|getPartialConstructorModemapSig| BOOT::UNCONS - BOOT::|maximalSuperType| BOOT::|getImmediateSuperDomain| - BOOT::|augmentLowerCaseConTable| BOOT::|isNameOfType| - BOOT::|objMode| BOOT::|isDomainValuedVariable| - BOOT::|packageForm?| BOOT::|sayMSG2File| BOOT::|concatList| - BOOT::|mkMessage| BOOT::|clearCache| BOOT::|IdentityError| - BOOT::/TRANSBOOT BOOT::|process| BOOT::|mathprint| - BOOT::ISLOCALOP-1 BOOT::|pushSatOutput| BOOT::|fracpart| - BOOT::|negintp| BOOT::|intpart| BOOT::|optRECORDELT| - BOOT::|optIF2COND| BOOT::C-TO-R BOOT::C-TO-S BOOT::S-TO-C - BOOT::CGAMMA BOOT::RGAMMA BOOT::CLNGAMMA BOOT::RLNGAMMA - BOOT::|getDomainOps| BOOT::|showGoGet| - BOOT::|showAttributes| BOOT::|showPredicates| - BOOT::|showSummary| BOOT::|getExtensionsOfDomain| - BOOT::|getDomainSeteltForm| BOOT::|getCategoriesOfDomain| - BOOT::|getDomainExtensionsOfDomain| BOOT::|bnot| - BOOT::|notDnf| BOOT::|b2dnf| BOOT::|ordList| BOOT::|bor| - BOOT::|band| BOOT::|bassert| BOOT::|notCoaf| BOOT::|list3| - BOOT::|list2| BOOT::|list1| BOOT::|dnf2pf| BOOT::|be| - BOOT::|reduceDnf| BOOT::|bassertNot| BOOT::|prove| - BOOT::|testPredList| BOOT::|nodeCount| - BOOT::|mkCircularAlist| BOOT::|clearSlam,LAM| - BOOT::|getCacheCount| BOOT::|clearLocalModemaps| - BOOT::|hashCount| BOOT::|parseAndEvalToHypertex| - BOOT::|oldParseAndInterpret| BOOT::|parseAndInterpToString| - BOOT::|parseAndEvalToStringEqNum| BOOT::|setHistory| - BOOT::|setExposeAddGroup| BOOT::|setFortDir| - BOOT::|validateOutputDirectory| BOOT::|setOutputLibrary| - BOOT::|setFortPers| BOOT::|setExposeDropConstr| - BOOT::|setExposeDropGroup| BOOT::|setExposeDrop| - BOOT::|setFortTmpDir| BOOT::|setExposeAdd| - BOOT::|setExpose| BOOT::|setInputLibrary| - BOOT::|setAsharpArgs| BOOT::|countCache| BOOT::|cgamma| - BOOT::|rgamma| BOOT::|clngammacase3| BOOT::|cgammaBernsum| - BOOT::|cgammaAdjust| BOOT::|lnrgammaRatapprox| - BOOT::|phiRatapprox| BOOT::|lnrgamma| - BOOT::|gammaRatapprox| BOOT::|gammaRatkernel| - BOOT::|gammaStirling| BOOT::|PsiIntpart| - BOOT::|isFilterDelimiter?| - BOOT::|mkDetailedGrepPattern,simp| BOOT::|cgammat| - BOOT::|isDefaultOpAtt| BOOT::|replaceTicksBySpaces| - BOOT::COT BOOT::|conform2OutputForm| BOOT::|lncgamma| - BOOT::|dbGetName| BOOT::|pfTupleList| BOOT::|pfWIfElse| - BOOT::|pfWIfThen| BOOT::|mkGrepPattern1,addWilds| - BOOT::|pfWIfCond| BOOT::|pfWIf?| BOOT::|mkGrepPattern1,g| - BOOT::|organizeByName| BOOT::|pfAssignLhsItems| - BOOT::|pfRetractToType| BOOT::|getTempPath| BOOT::|pfSexpr| - BOOT::|looksLikeDomainForm| BOOT::|pfRetractToExpr| - BOOT::|pfRetractTo?| BOOT::|pfExpression?| - BOOT::|genSearchUniqueCount| - BOOT::|pf0FlattenSyntacticTuple| BOOT::|pfSexpr,strip| - BOOT::|pmPreparse| BOOT::|dbUnpatchLines| - BOOT::|evaluateLines| BOOT::|verifyRecordFile| - BOOT::|sayDocMessage| BOOT::|recordAndPrintTest,fn| - BOOT::|pmParseFromString| - BOOT::|conLowerCaseConTranTryHarder| BOOT::|fnameExists?| - BOOT::|htTrimAtBackSlash| BOOT::|setExposeAddConstr| - BOOT::|dbBasicConstructor?| BOOT::|lfnegcomment| - BOOT::|lfcomment| BOOT::|bcStarConform| BOOT::|lfstring| - BOOT::|bcStar| BOOT::|simpBool| BOOT::|scanKeyTr| - BOOT::|extractHasArgs,find| BOOT::|lfkey| - BOOT::|scanPossFloat| BOOT::|scanCloser?| - BOOT::|bcStarSpace| BOOT::|keyword| - BOOT::|loadLibIfNotLoaded| BOOT::|lineoftoks| - BOOT::|lisp2HT| BOOT::|getCType| BOOT::|lisp2HT,fn| - BOOT::|conform2HtString| BOOT::|nextline| - BOOT::|unMkEvalable| BOOT::|int2Bool| BOOT::|keyword?| - BOOT::|htSayList| BOOT::|scanW| BOOT::|isLoaded?| - BOOT::|mkQuote| BOOT::|lfinteger| BOOT::|mkQuote,addQuote| - BOOT::|functionAndJacobian| BOOT::|lferror| - BOOT::|scanWord| BOOT::|scanTransform| - BOOT::|htPred2English,fnAttr| BOOT::|dbConname| - BOOT::|digit?| BOOT::|addSpaces| BOOT::|dbKindString| - BOOT::|lfspaces| BOOT::|stripUnionTags| BOOT::|lfid| - BOOT::|mkPredList| BOOT::|spad2lisp| - BOOT::|orderUnionEntries| BOOT::|punctuation?| - BOOT::|Record0| BOOT::|makeFort,untangle| - BOOT::|makeFort,untangle2| BOOT::|makeOutputAsFortran| - BOOT::|rdigit?| BOOT::|vec2Lists| BOOT::|npMoveTo| - BOOT::|complexRows| BOOT::|makeLispList| - BOOT::|pfSourceStok| BOOT::|vec2Lists1| - BOOT::|multiToUnivariate| BOOT::|spadTypeTTT| - BOOT::|makeUnion| BOOT::|stripNil| - BOOT::|parseAndEvalToString| - BOOT::|parseAndEvalToStringForHypertex| BOOT::|XDRFun| - BOOT::|pair2list| BOOT::|pfStringConstString| - BOOT::|pfExportDef| BOOT::|prefix2Infix| - BOOT::|pfDefinitionSequenceArgs| BOOT::|lispType| - BOOT::|pfComDefinitionDef| BOOT::|checkForBoolean| - BOOT::|npTrapForm| BOOT::|pfTransformArg| - BOOT::|vectorOfFunctions| BOOT::|pfTaggedToTyped1| - BOOT::|pfFlattenApp| BOOT::|pfTaggedToTyped| - BOOT::|pfCollectVariable1| - BOOT::|InvestigateConditions,pessimise| BOOT::|pfCollect1?| - BOOT::|d01gafSolve,f| BOOT::|pfComDefinitionDoc| - BOOT::|PrepareConditional| BOOT::|pfLoopIterators| - BOOT::|TryGDC| BOOT::|d01fcfSolve,f| BOOT::|compCategories| - BOOT::|pfHidePart| BOOT::|makeMissingFunctionEntry,tran| - BOOT::|PacPrint| BOOT::|keyItem| BOOT::|pfHide?| - BOOT::|pfDocumentText| BOOT::|pfDocument?| - BOOT::|e02dafSolve,fxy| BOOT::|pfLambdaArgs| - BOOT::|ConstantCreator| BOOT::|pfDefinitionLhsItems| - BOOT::|pf0WithWithin| BOOT::|d02bbfSolve,fb| - BOOT::|pfWithWithin| BOOT::|d02bbfSolve,fa| - BOOT::|pf0WithBase| BOOT::|d02gbfSolve,fe| - BOOT::|pfWithBase| BOOT::|pfWithWithon| BOOT::|pfNot| - BOOT::|d02kefSolve,fc| BOOT::|pfId| BOOT::|pfTupleParts| - BOOT::|d02kefSolve,fb| BOOT::|pfWhereContext| - BOOT::|InvestigateConditions| BOOT::|pfCheckArg| - BOOT::|InvestigateConditions,reshape| - BOOT::|d02kefSolve,fa| BOOT::|pfCheckId| - BOOT::|getPossibleViews| BOOT::|pfQualTypeQual| - BOOT::|ICformat| BOOT::|pfTupleListOf| - BOOT::|InvestigateConditions,mkNilT| BOOT::|pfQualTypeType| - BOOT::|pfQualType?| BOOT::|getViewsConditions| - BOOT::|pfDWhereExpr| BOOT::|ICformat,Hasreduce| - BOOT::|pfForinLhs| BOOT::|ICformat,ORreduce| - BOOT::|d02gbfSolve,fi| BOOT::|d02gbfSolve,fh| - BOOT::|pfDWhereContext| BOOT::|CategoriesFromGDC| - BOOT::|pfSymbolVariable?| BOOT::|d02rafSolve,fc| - BOOT::|pfMLambdaArgs| BOOT::|optFunctorBodyRequote| - BOOT::|d02gafSolve,ff| BOOT::|pfInlineItems| - BOOT::|d02rafSolve,fb| BOOT::|pfSemiColonBody| - BOOT::|d02rafSolve,fa| BOOT::|pfSemiColon?| - BOOT::|optFunctorBodyQuotable| BOOT::|d02gafSolve,fd| - BOOT::|pfInline| BOOT::|pf0AddBase| BOOT::|pfAddBase| - BOOT::|d02ejfSolve,fb| BOOT::|pfSemiColon| - BOOT::|pfAddAddon| BOOT::|d02ejfSolve,fa| - BOOT::|pfAddAddin| BOOT::|d02bhfSolve,fb| - BOOT::|pf0ImportItems| BOOT::|d02bhfSolve,fa| - BOOT::|pfImportItems| BOOT::|pfInline?| - BOOT::|pfReturnFrom| BOOT::|pfImport| - BOOT::|d02gafSolve,fb| BOOT::|pfListOf?| - BOOT::|pfFreeItems| BOOT::|pf0TLambdaArgs| - BOOT::|d02gafSolve,fa| BOOT::|pfTLambdaArgs| - BOOT::|pfTLambdaBody| BOOT::|pfExitNoCond| - BOOT::|pf0WrongRubble| BOOT::|pfWrongRubble| - BOOT::|pfTLambdaRets| BOOT::|pfWrongWhy| - BOOT::|pfIterateFrom| BOOT::|pfLocalItems| - BOOT::|pfAttributeExpr| BOOT::|d02cjfSolve,fb| - BOOT::|pfAttribute?| BOOT::|pfLoop| BOOT::|d02cjfSolve,fa| - BOOT::|pfDo| BOOT::|pfWDeclareDoc| BOOT::|pfSecond| - BOOT::|pfWDeclareSignature| BOOT::|pfWDeclare?| - BOOT::|pfCheckInfop| BOOT::|d03edfSolve,fd| - BOOT::|pf0CollectIterators| BOOT::|pfExport?| - BOOT::|d03edfSolve,fc| BOOT::|pfDeclPart?| - BOOT::|d03edfSolve,fa| IDENTITY BOOT::|pfDWhere?| - BOOT::|pfImport?| BOOT::|pfTyping?| BOOT::|pfSuchthat| - BOOT::|pfComDefinition?| BOOT::|pfTLambda?| BOOT::|pfWhile| - BOOT::|pfAdd?| BOOT::|pf0ExportItems| BOOT::|pfExportItems| - BOOT::|pfExpr?| BOOT::|pfWith?| BOOT::|e01sefSolve,f| - BOOT::|pf0TypingItems| BOOT::|pfTypingItems| - BOOT::|pfGetLineObject| BOOT::|lnFileName?| - BOOT::|e01bgfSolve,g| BOOT::|e01bgfSolve,f| - BOOT::|pfNopos?| BOOT::|lnExtraBlanks| - BOOT::|pfPlaceOfOrigin| BOOT::|ravel| - BOOT::|poPlaceOfOrigin| BOOT::|e01bafSolve,f| - BOOT::|pfFileName?| BOOT::|poFileName?| - BOOT::|parseAndEval| BOOT::|getDomainHash| BOOT::|aplTran1| - BOOT::|hasAplExtension| BOOT::|htpDomainConditions| - BOOT::|aplTranList| BOOT::|postDefArgs| - BOOT::|postTranScripts| BOOT::|getHtMacroItem| - BOOT::|postTranScripts,fn| BOOT::|unTuple| - BOOT::|isPackageType| BOOT::|buttonNames| - BOOT::|postcheckTarget| BOOT::|postcheck| - BOOT::|dbNonEmptyPattern| BOOT::|postBlockItemList| - VMLISP:|last| BOOT::|postBlockItem| BOOT::|postQuote| - BOOT::|postSequence| BOOT::|postTranList| - BOOT::|checkWarning| VMLISP:HASHTABLE-CLASS - BOOT::|downlinkSaturn| BOOT::|decodeScripts,fn| - BOOT::|mkUnixPattern| BOOT::|tuple2List| - BOOT::|postCapsule| BOOT::|patternCheck| BOOT::|postElt| - BOOT::|postSEGMENT| BOOT::|e04nafSolve,ff| - BOOT::|postIteratorList| BOOT::|npEqPeek| BOOT::|postForm| - BOOT::|htAllOrNum| BOOT::|postOp| BOOT::|stringize| - VMLISP:LISTOFFREES BOOT::|postTuple| BOOT::|postExit| - BOOT::|parseWord| BOOT::|postMapping| VMLISP:GENSYMP - BOOT::|postMDef| BOOT::|pfAttribute| BOOT::|postDef| - BOOT::|npRestore| BOOT::|postCategory| BOOT::|aplTran| - BOOT::|containsBang| BOOT::|htMakePathKey| BOOT::|postJoin| - BOOT::|npWConditional| BOOT::|postTransformCheck| - BOOT::|npBraced| VMLISP:PAPPP - BOOT::|chkAllNonNegativeInteger| BOOT::|postIf| - BOOT::|chkNonNegativeInteger| BOOT::|postPretend| - BOOT::|pfId?| BOOT::|postAtSign| BOOT::|npBracketed| - BOOT::|postColon| BOOT::|chkDirectory| - BOOT::|postColonColon| BOOT::|postWhere| - BOOT::|npZeroOrMore| BOOT::|postSemiColon| - BOOT::|postBlock| BOOT::|pfParts| BOOT::|deepestExpression| - BOOT::|translateYesNo2TrueFalse| BOOT::|postComma| - BOOT::|pfEnSequence| BOOT::|comma2Tuple| - BOOT::|npParenthesized| BOOT::|chkOutputFileName| - BOOT::|postReduce| BOOT::|chkPosInteger| BOOT::|postAdd| - BOOT::|pfUnSequence| BOOT::|postTupleCollect| - BOOT::|postCollect| BOOT::|postRepeat| BOOT::|postIn| - BOOT::|htShowCount| BOOT::|satisfiesUserLevel| - BOOT::|postin| BOOT::|postQUOTE| BOOT::|pfListOf| - BOOT::|postScripts| BOOT::|translateTrueFalse2YesNo| - BOOT::|postWith| BOOT::|e02dffSolve,fp| VMLISP:CHARP - BOOT::|chkNameList| BOOT::|isSymbol| BOOT::INFIXTOK - BOOT::|npQualified| BOOT::SKIP-TO-ENDIF - BOOT::|npConditional| BOOT::|stackMessageIfNone| - BOOT::PREPARSEREADLINE BOOT::|npElse| - BOOT::|translateYesNoToTrueFalse| BOOT::|npMissing| - BOOT::PREPARSEREADLINE1 BOOT::|npDDInfKey| VMLISP:RPACKFILE - BOOT::SKIP-IFBLOCK BOOT::|tokPart| BOOT::|npInfKey| - VMLISP:RECOMPILE-LIB-FILE-IF-NECESSARY BOOT::|npWith| - BOOT::|optimizeFunctionDef| BOOT::PREPARSE-ECHO - BOOT::|npCompMissing| VMLISP::LIBSTREAM-DIRNAME - BOOT::ATENDOFUNIT BOOT::PARSEPRINT BOOT::|npAdd| - BOOT::PREPARSE1 BOOT::|e02defSolve,fp| - BOOT::|htpRadioButtonAlist| BOOT::MONITOR-DATA-COUNT - BOOT::MONITOR-DATA-NAME BOOT::|htpDomainPvarSubstList| - BOOT::MONITOR-DATA-SOURCEFILE BOOT::|profileTran| - BOOT::MONITOR-DELETE BOOT::|pfSequenceToList| - BOOT::MONITOR-DATA-MONITORP BOOT::|pfSequenceArgs| - BOOT::|renamePatternVariables| BOOT::|pfSequence?| - BOOT:|LispEval| BOOT::|pfNovalueExpr| - BOOT::MONITOR-EXPOSEDP BOOT::|pfNovalue?| - BOOT::|htpDomainVariableAlist| BOOT::|pfNotArg| - BOOT::MONITOR-APROPOS BOOT::|pfNot?| BOOT::MONITOR-DATA-P - BOOT::|pfOrRight| BOOT::|pfOrLeft| BOOT::MONITOR-LIBNAME - BOOT::|pfOr?| BOOT::MONITOR-FILE BOOT::|pfAndRight| - BOOT::|pfAndLeft| BOOT::|pfAnd?| BOOT::MONITOR-SPADFILE - BOOT::|getDomainsInScope| BOOT::|pfWrong?| - BOOT::MONITOR-PARSE BOOT::|pf0LocalItems| - BOOT::MONITOR-DECR BOOT::|pfLocal?| BOOT::|pfNovalue| - BOOT::|pf0FreeItems| BOOT::|npItem1| BOOT::|pfFree?| - BOOT::|pfRestrictType| BOOT::MONITOR-INCR - BOOT::|pfRestrictExpr| BOOT::|npLetQualified| - BOOT::|isConstructorForm| BOOT::|pfRestrict?| - BOOT::|library| BOOT::MONITOR-NRLIB BOOT::|pfDefinition?| - BOOT::|unknownTypeError| BOOT::|pfAssignRhs| - BOOT::|pf0AssignLhsItems| BOOT::|pfAssign?| BOOT::|quotify| - BOOT::|pfDoBody| BOOT::|reportHashCacheStats| - BOOT::MONITOR-DIRNAME BOOT::|pfDo?| - BOOT::|mkHashCountAlist| BOOT::|pfSuchthatCond| - BOOT::|displayCacheFrequency| BOOT::|pfSuchthat?| - BOOT::MONITOR-CHECKPOINT BOOT::|pfWhileCond| - BOOT::|pfWhile?| BOOT::|pfForinWhole| - BOOT::|outputDomainConstructor| BOOT::|e02dffSolve,fmu| - BOOT::|pf0ForinLhs| BOOT::|typeTimePrin| - BOOT::|pfCheckMacroOut| BOOT::|isSomeDomainVariable| - BOOT::|pfForin?| BOOT::|displayHashtable| - BOOT::|pfCollect?| BOOT::|removeZeroOne| BOOT::|npEncAp| - BOOT::|pf0LoopIterators| BOOT::|addBlanks| - BOOT::|compHasFormat| BOOT::|loopIters2Sex| - BOOT::|noBlankBeforeP| BOOT::|pfLoop?| - BOOT::|stopTimingProcess| BOOT::|noBlankAfterP| - BOOT::|?comp| BOOT::|pfExitExpr| BOOT::|pfExitCond| - BOOT::|compileQuietly| BOOT::|sayLongOperation| - BOOT::|isAlmostSimple,setAssignment| BOOT::|pfExit?| - BOOT::|compileInteractive| BOOT::|say2PerLineThatFit| - BOOT::?COMP BOOT::|npBracked| BOOT::|pfFromdomDomain| - BOOT::|startTimingProcess| BOOT::|prEnv| - BOOT::|pfFromdomWhat| BOOT::|operationLink| BOOT::|opTran| - BOOT::|pfFromdom?| BOOT::|hasType,fn| BOOT::|pfPretendType| - BOOT::|clearCategoryCache| BOOT::|pfTuple| - BOOT::|pfPretendExpr| BOOT::|clearConstructorCache| - BOOT::|qModemap| BOOT::|pfPretend?| - BOOT::|splitListSayBrightly| BOOT::|formatModemap| - BOOT::|pfCoercetoType| BOOT::|printEnv| - BOOT::|pfCoercetoExpr| BOOT::|tabber| BOOT::|pfCoerceto?| - BOOT::|decExitLevel| BOOT::|pfTaggedExpr| - BOOT::|splitSayBrightly| BOOT::|pfTaggedTag| - BOOT::|brightPrintRightJustify| BOOT::|pfTagged?| - BOOT::|pfIfElse| BOOT::|splitSayBrightlyArgument| - BOOT::DATABASE-ABBREVIATION BOOT::|pfIfThen| - BOOT::|mkDomainConstructor| BOOT::|pfIfCond| - BOOT::|brightPrint1| BOOT::SET-FILE-GETTER BOOT::|mkList| - BOOT::|pfIf?| BOOT::|brightPrint| BOOT::|pf0TupleParts| - BOOT::|pfTuple?| BOOT::DATABASE-SOURCEFILE - BOOT::|minimalise| BOOT::|minimalise,min| - BOOT::|pfLiteral?| BOOT::|mkDevaluate| - BOOT::|minimalise,HashCheck| BOOT::|pfSymbolSymbol| - BOOT::|numberOfEmptySlots| BOOT::|pfSymbol?| - BOOT::|sayBrightlyLength1| BOOT::|hasOptArgs?| - BOOT::|npFromdom1| BOOT::|pfSuchThat2Sex| - BOOT::|CDRwithIncrement| BOOT::|npPush| - BOOT::|segmentedMsgPreprocess| BOOT::|pfOp2Sex| - BOOT::SHOWDATABASE BOOT::|pmDontQuote?| BOOT::|initCache| - BOOT::|blankIndicator| BOOT::|pfDefinitionRhs| - BOOT::|npEqKey| BOOT::|pf0DefinitionLhsItems| - BOOT::|pfApplicationArg| BOOT::SQUEEZE - BOOT::|rulePredicateTran| BOOT::|pfRuleRhs| BOOT::UNSQUEEZE - BOOT::|npDotted| BOOT::|pfRuleLhsItems| - BOOT::|constructor2ConstructorForm| BOOT::|npAngleBared| - BOOT::|pfCollectBody| BOOT::DATABASE-SPARE - BOOT::|pfCollectIterators| BOOT::|remHashEntriesWith0Count| - BOOT::|float2Sex| BOOT::DATABASE-DEFAULTDOMAIN - BOOT::|npListing| BOOT::|pfLiteralString| - BOOT::DATABASE-NILADIC BOOT::|pfLeafToken| - BOOT::DATABASE-CONSTRUCTORCATEGORY BOOT::|pfLiteralClass| - BOOT::DATABASE-OBJECT BOOT::DATABASE-MODEMAPS - BOOT::DATABASE-OPERATIONALIST BOOT::DATABASE-DEPENDENTS - BOOT::DATABASE-USERS BOOT::DATABASE-PARENTS BOOT::|tokPosn| - BOOT::|pileColumn| BOOT::|underDomainOf| - BOOT::DATABASE-PREDICATES BOOT::|underDomainOf;| - BOOT::|pileCforest| BOOT::DATABASE-ATTRIBUTES - BOOT::|enPile| BOOT::|separatePiles| - BOOT::DATABASE-DOCUMENTATION BOOT::|pilePlusComments| - BOOT::|pilePlusComment| BOOT::|insertpile| - BOOT::|lastTokPosn| BOOT::|firstTokPosn| - BOOT::|pileComment| BOOT::|isValidType;| - BOOT::|lnGlobalNum| BOOT::|lnLocalNum| - BOOT::|pfSourcePositionlist| BOOT::|isPartialMode| - BOOT::|pfSourcePositions| - BOOT::|makeOldAxiomDispatchDomain| BOOT::|lnString| - BOOT::DATABASE-ANCESTORS BOOT::|poNoPosition?| - BOOT::|poImmediate?| BOOT::|poIsPos?| BOOT::|hashString| - BOOT::DATABASE-CONSTRUCTOR BOOT::|pfPosn| - BOOT::|isLegitimateRecordOrTaggedUnion| - BOOT::|lnImmediate?| BOOT::|listOfDuplicates| - BOOT::|pfPosImmediate?| BOOT::|isPolynomialMode| - BOOT::|pfSourceToken| BOOT::|equiType| BOOT::|pfFirst| - BOOT::|getUnderModeOf| FOAM::PROCESS-IMPORT-ENTRY - BOOT::|deconstructT| BOOT::|attribute?| BOOT::TRARGPRINT - BOOT::|makeLazyOldAxiomDispatchDomain| BOOT::|eqType| - BOOT::DATABASE-P BOOT::LINE-ADVANCE-CHAR - BOOT::DATABASE-COSIG BOOT::LINE-AT-END-P BOOT::TRBLANKS - BOOT::MAKE-STRING-ADJUSTABLE BOOT::|sayMessage| - BOOT::|dropPrefix| BOOT::TRMETA1 BOOT::|mkDatabasePred| - BOOT::TRY-GET-TOKEN BOOT::TRMETA BOOT::|namestring| - BOOT::|isFreeFunctionFromMmCond| BOOT::|isSharpVarWithNum| - BOOT::|isFreeFunctionFromMm| - BOOT::|mkAlistOfExplicitCategoryOps| BOOT::LINE-P - BOOT::|mkAlistOfExplicitCategoryOps,atomizeOp| - BOOT::|flattenSignatureList| BOOT::|collectAndDeleteAssoc| - BOOT::|checkSplitBrace| BOOT::|getFirstArgTypeFromMm| - BOOT::|checkSplitPunctuation| BOOT::|checkSplitOn| - BOOT::|checkSplitBackslash| BOOT::STACK-POP - BOOT::|checkAlphabetic| BOOT::|isDomainSubst| - BOOT::UNDERSCORE BOOT::|collectComBlock| - BOOT::|getDomainFromMm| BOOT::/MDEF BOOT::STACK-TOP - BOOT::|formal2Pattern| BOOT::|finalizeDocumentation,hn| - BOOT::STACK-P BOOT::LINE-NEXT-CHAR BOOT::REDUCTION-RULE - BOOT::|checkExtractItemList| - BOOT::|recordHeaderDocumentation| BOOT::|checkIeEgfun| - BOOT::|appendOver| BOOT::|rebuild| BOOT::|checkInteger| - BOOT::|spool| BOOT::|setOutputCharacters| - BOOT::/VERSIONCHECK BOOT::INTERP-MAKE-DIRECTORY - BOOT::CACHEKEYEDMSG BOOT::XDR-STREAM-HANDLE - BOOT::|normalizeArgFileName| BOOT::|checkTrim,trim| - BOOT::XDR-STREAM-P BOOT::|checkDocError| BOOT::|bootFind| - BOOT::|checkTrim,wherePP| BOOT::|checkDecorateForHt| - BOOT::XDR-STREAM-NAME BOOT::|checkRecordHash| - BOOT::|checkIsValidType| BOOT::|normalizeTimeAndStringify| - BOOT::SETLETPRINTFLAG BOOT::|checkGetParse| - BOOT::|checkGetStringBeforeRightBrace| - BOOT::|checkGetLispFunctionName| BOOT::MAKE-DIRECTORY - BOOT::|checkLookForRightBrace| - BOOT::|checkLookForLeftBrace| BOOT::|checkFixCommonProblem| - BOOT::|checkArguments| BOOT::SHAREDITEMS BOOT::|checkTexht| - BOOT::|isVowel| BOOT::|getOfCategoryArgument| - BOOT::|checkAddPeriod| BOOT::|newMKINFILENAM| - BOOT::|getFunctionSourceFile1| BOOT::|checkDecorate| - BOOT::|pathname?| BOOT::|hasNoVowels| BOOT::|checkBalance| - BOOT::|checkSayBracket| BOOT::|pfSequence2Sex| - BOOT::|checkBeginEnd| BOOT::|pf2Sex1| BOOT::|checkIeEg| - BOOT::|pfSequence2Sex0| BOOT::|checkDocError1| - BOOT::|ruleLhsTran| BOOT::|patternVarsOf| - BOOT::|checkAddMacros| BOOT::|pfLambdaTran| - BOOT::|pfLambdaBody| BOOT::|checkSplit2Words| - BOOT::|pfLambdaRets| BOOT::|checkAddSpaces| - BOOT::|pfTypedType| BOOT::|newString2Words| - BOOT::|pfCollectArgTran| BOOT::|checkGetArgs| - BOOT::|pfTyped?| BOOT::|pfRhsRule2Sex| - BOOT::|pfLhsRule2Sex| BOOT::|checkDocMessage| - BOOT::|checkRemoveComments| BOOT::|pfRule2Sex| - BOOT::|checkTrimCommented| BOOT::|pfLambda2Sex| - BOOT::|pfDefinition2Sex| BOOT::|leftTrim| - BOOT::|pfCollect2Sex| BOOT::|checkGetMargin| - BOOT::|pfApplication2Sex| BOOT::|whoOwns| - BOOT::|pfLiteral2Sex| BOOT::|pfWhereExpr| - BOOT::|pf0WhereContext| BOOT::|pfIterate?| - BOOT::|pfReturnExpr| BOOT::|pfReturn?| BOOT::|setOutStream| - BOOT::|pfBreakFrom| BOOT::|pfBreak?| BOOT::|pfRule?| - BOOT::DATABASE-CONSTRUCTORMODEMAP BOOT::|%key| BOOT::|ppos| - BOOT::|porigin| BOOT::|pfLinePosn| BOOT::|pfCharPosn| - BOOT::|pfImmediate?| BOOT::|pfNoPosition?| BOOT::|%pos| - BOOT::|processPackage,setPackageCode| BOOT::|%fname| - BOOT::|pfname| BOOT::|%origin| BOOT::|mkRepititionAssoc| - BOOT::|%id| BOOT::|pkey| BOOT::|getCaps| - BOOT::|constructorCategory| BOOT::|evalDomain| - BOOT::|parseAtom| BOOT::|systemErrorHere| - BOOT::|coerceMap2E| BOOT::|parseConstruct| - BOOT::|parseTran,g| BOOT::|parseWhere| BOOT::|parseVCONS| - BOOT::|parseSeq| BOOT::|transSeq| BOOT::|postError| - BOOT::|parseSegment| BOOT::|parseReturn| - BOOT::|parsePretend| BOOT::|parseType| BOOT::|RecordInner| - BOOT::|parseTypeEvaluate| BOOT::|isRecord| - BOOT::|parseMDEF| BOOT::|parseLETD| BOOT::|parseLET| - BOOT::|transIs| BOOT::|CatEval| BOOT::|transUnCons| - BOOT::|parseLeave| BOOT::|mkCategory,Prepare| - BOOT::|parseJoin| BOOT::|parseJoin,fn| BOOT::|parseIsnt| - BOOT::|parseBigelt| BOOT::|parseIs| - BOOT::|DropImplementations| BOOT::|parseInBy| - BOOT::|parseIn| BOOT::|FindFundAncs| BOOT::|parseHas| - BOOT::|parseHas,mkand| BOOT::|TruthP| BOOT::|parseHas,fn| - BOOT::|parseExit| BOOT::|isCategory| BOOT::|parseDEF| - BOOT::|setDefOp| BOOT::|mkCategory,Prepare2| - BOOT::|transIs1| BOOT::|isListConstructor| - BOOT::|parseCategory| BOOT::|parseDropAssertions| - BOOT::|parseAtSign| BOOT::|parseHasRhs| BOOT::|parseCoerce| - BOOT::|getCategoryExtensionAlist0| BOOT::|parseColon| - BOOT::|getCategoryExtensionAlist| BOOT::|sayMSG| - BOOT::|parseDollarGreaterThan| BOOT::|squeeze1| - BOOT::|squeezeList| BOOT::|parseGreaterThan| - BOOT::|categoryParts,exportsOf| - BOOT::|makeSimplePredicateOrNil| BOOT::|simpHasPred,eval| - BOOT::|simpHasPred,simp| BOOT::|specialModeTran| - BOOT::|compressHashTable| BOOT::|simpOrUnion| - BOOT::|clearCategoryTable| BOOT::|transCategoryItem| - BOOT::|parseCases| BOOT::TOKEN-PRINT BOOT::|getConstrCat| - BOOT::LINE-CURRENT-SEGMENT - BOOT::|mkCategoryExtensionAlistBasic| BOOT::STACK-CLEAR - BOOT::|macrop| BOOT::|showCategoryTable| - BOOT::|clearTempCategoryTable| BOOT::TOKEN-P - BOOT::|addToCategoryTable| - BOOT::|simpHasPred,simpDevaluate| - BOOT::|mkCategoryExtensionAlist| - BOOT::|updateCategoryTableForCategory| - BOOT::|isFormalArgumentList| BOOT::|defaultingFunction| - BOOT::|getOperationAlistFromLisplib| - BOOT::|getConstructorAbbreviation| - BOOT::|predicateBitIndex| BOOT::|encodeCatform| - BOOT::|evalableConstructor2HtString,unquote| - BOOT::|orderByContainment| BOOT::|stripOutNonDollarPreds| - BOOT::|isHasDollarPred| BOOT::|transHasCode| - BOOT::|removeAttributePredicates| BOOT::|getCatAncestors| - BOOT::|makeCompactDirect1,fn| BOOT::|depthAssoc| - BOOT::|depthAssocList| BOOT::|fromHeading| - BOOT::|htAddHeading| BOOT::|infovec| BOOT::|dcData1| - BOOT::|dbDoesOneOpHaveParameters?| BOOT::|ppTemplate| - BOOT::|dbOuttran| BOOT::|bitsOf| BOOT::|mathform2HtString| - BOOT::|conname2StringList| BOOT::|dcData| - BOOT::|predicateBitIndexRemop| BOOT::|form2StringList| - BOOT::|dbConform| BOOT::|dbMapping2StringList| - BOOT::|htTab| BOOT::|orderBySubsumption| BOOT::|dcCats| - BOOT::|dcCats1| BOOT::|getLookupFun| - BOOT::|listOfCategoryEntries| BOOT::|niladicHack| - BOOT::|dbGatherDataImplementation,fn| BOOT::|NRTcatCompare| - BOOT::|dbGatherDataImplementation,gn| BOOT::|template| - BOOT::|dcAtts| BOOT::|dcSlots| BOOT::|dcOpTable| - BOOT::|getConstructorArgs| BOOT::|dbNewConname| - BOOT::|escapeString| BOOT::|nodeSize| BOOT::|fortexp0| - BOOT::|vectorSize| BOOT::|myLastAtom| - BOOT::|isDefaultPackageForm?| BOOT::|numberOfNodes| - BOOT::|dcOps| BOOT::|removeAttributePredicates,fn| - BOOT::|removeAttributePredicates,fnl| - BOOT::DATABASE-CONSTRUCTORFORM BOOT::|makeCompactDirect| - BOOT::|htSayTuple| BOOT::|dcPreds| BOOT::|htSayArgument| - BOOT::|makeDomainTemplate| BOOT::|hashTable2Alist| - BOOT::|stuffDomainSlots| BOOT::|getExportCategory| - BOOT::|koCatOps1| BOOT::|simplifyAttributeAlist| - BOOT::|hasPatternVar| BOOT::|dcAll| - BOOT::|findSubstitutionOrder?| BOOT::|isInstantiated| - BOOT::|modemap2SigConds| BOOT::|getSubstCandidates| - BOOT::|htSayExplicitExports| - BOOT::|fortFormatCharacterTypes| BOOT::|opPageFastPath| - BOOT::|fortFormatCharacterTypes,mkParameterList2| - BOOT::|exp2FortOptimizeCS1,popCsStacks| - BOOT::|kFormatSlotDomain,fn| - BOOT::|fortFormatTypes,unravel| BOOT::|formatSlotDomain| - BOOT::|getSubstSignature| BOOT::|getfortexp1| - BOOT::|fortran2Lines1| BOOT::|koOps,trim| - BOOT::|isPatternVar| BOOT::|dispfortexp1| - BOOT::|displayBreakIntoAnds| VMLISP::LIBRARY-FILE - VMLISP::GET-DIRECTORY-LIST VMLISP::PROBE-NAME - VMLISP::SPAD-FIXED-ARG VMLISP::LIBSTREAM-INDEXSTREAM - VMLISP::LIBSTREAM-INDEXTABLE VMLISP::LIBSTREAM-MODE - VMLISP::GETINDEXTABLE VMLISP::GET-INDEX-TABLE-FROM-STREAM - VMLISP::LIBSTREAM-P BOOT::|NRTassocIndexAdd| - BOOT::|optDeltaEntry,quoteSelector| BOOT::|NRToptimizeHas| - BOOT::|listOfBoundVars| BOOT::|slot1Filter,fn| - BOOT::|reverseCondlist| BOOT::|c05pbfSolve,fb| - BOOT::|genDeltaSig| BOOT::|c05pbfSolve,fa| - BOOT::|c05nbfSolve,fb| - BOOT::|NRTsubstDelta,replaceSlotTypes| - BOOT::|c05nbfSolve,fa| BOOT::|slot1Filter| - BOOT::|NRTsubstDelta| BOOT::|c06ebfSolve,f| - BOOT::|catList2catPackageList,fn| BOOT::|addConsDB| - BOOT::|changeDirectoryInSlot1,fn| - BOOT::|changeDirectoryInSlot1,sigloc| - BOOT::|NRTreplaceAllLocalReferences| BOOT::|mkSlot1sublis| - BOOT::|NRTputInLocalReferences| BOOT::|NRTputInHead| - BOOT::|NRTcheckVector| BOOT::|NRTmakeSlot1| - BOOT::|NRTisExported?| BOOT::|makePredicateBitVector| - BOOT::|catList2catPackageList| BOOT::|c06eafSolve,f| - BOOT::|NRTgetAddForm| BOOT::|c06frfSolve,h| - BOOT::|NRTaddInner| BOOT::|c06ekfSolve,f| - BOOT::|updateSlot1DataBase| BOOT::|genDeltaSpecialSig| - BOOT::|c06gbfSolve,f| BOOT::|newHasTest,evalCond| - BOOT::|c06fufSolve,hn| BOOT::|c06gcfSolve,f| - BOOT::|c06fufSolve,hm| BOOT::|c06fpfSolve,h| - BOOT::|c06fqfSolve,h| BOOT::|c06ecfSolve,f| BOOT:|length1?| - BOOT:|ListRemoveDuplicatesQ| BOOT:|ListNReverse| - BOOT::|d01gbfSolve,f| BOOT:|TableKeys| - BOOT::|ncParseAndInterpretString| BOOT::|pfPrintSrcLines| - BOOT::TERMINATOR VMLISP::MAKE-BVEC - BOOT::|exp2FortOptimizeCS| BOOT::|exp2FortOptimizeCS1| - BOOT::|expression2Fortran| BOOT::|fortranCleanUp| - BOOT::|exp2FortOptimize| BOOT::|fortPre| BOOT::|incRgen| - BOOT::|segment| BOOT::|exp2Fort1| FOAM:|printNewLine| - FOAM:|formatDFloat| FOAM:|formatSFloat| FOAM:|formatBInt| - BOOT::|npNull| FOAM:|formatSInt| BOOT::|isFloat| - BOOT::|fortExpSize| BOOT::|parseAndEval1| - BOOT::|printStats| BOOT::|mkParameterList| - BOOT::|unStackWarning| BOOT::|fortFormatIntrinsics| - BOOT::?M BOOT::|displayLines| BOOT::|?m| BOOT::|addCommas| - BOOT::|unErrorRef| BOOT::|fortran2Lines| BOOT::|uppretend| - BOOT::|typeOfType| BOOT::|checkLines| BOOT::|uptypeOf| - BOOT::|statement2Fortran| BOOT::|displayLines1| - BOOT::|upQUOTE| BOOT::|dispStatement| - BOOT::|makeCommonEnvironment,interLocalE| BOOT::|upSEQ| - BOOT::|mkMat| BOOT::|makeCommonEnvironment,interC| - BOOT::|fortSize,elen| BOOT::|quote2Wrapped| - BOOT::|deltaContour,eliminateDuplicatePropertyLists| - BOOT::|fortSize| BOOT::|checkType| BOOT::|interpOnlyREPEAT| - BOOT::|upREPEAT1| BOOT::|old2NewModemaps| BOOT::|upREPEAT0| - BOOT::|displayModemaps| BOOT::|uplocal| - BOOT::|fortFormatElseIf| BOOT::|upfree| - BOOT::|indentFortLevel| FOAM:|Halt| BOOT::|upREPEAT| - BOOT::|?modemaps| BOOT::|fortFormatIf| BOOT::|upDEF| - BOOT::|upreturn| BOOT::|uperror| BOOT::|what| - BOOT::?MODEMAPS BOOT::|whatSpad2Cmd| BOOT::|stackAndThrow| - BOOT::|makeCommonEnvironment,interE| BOOT::|constructor| - BOOT::|alqlGetParams| BOOT::|makeNonAtomic| - BOOT::|alqlGetOrigin| BOOT::|alqlGetKindString| - BOOT::|npboot| BOOT::|compAndTrace| VMLISP::SIMPLE-ARGLIST - BOOT::|string2BootTree| VMLISP::REMOVE-FLUIDS - BOOT::|f04qafSolve,f| BOOT::|getBrowseDatabase| - BOOT::|wrapSEQExit| BOOT::|compileSpadLispCmd| - BOOT::|incExitLevel| BOOT::ASEC BOOT::|mkErrorExpr,bracket| - BOOT::|displayProperties,sayFunctionDeps| BOOT::ACOT - BOOT::|displayMacro| VMLISP::QUOTESOF BOOT::|genDeltaEntry| - BOOT::|displayParserMacro| VMLISP::DEQUOTE - BOOT::|compilerMessage| BOOT::MANEXP - BOOT::|asharpConstructorName?| VMLISP::ISQUOTEDP - BOOT::|f04mcfSolve,gj| BOOT::|f04arfSolve,h| VMLISP::VARP - BOOT::|f04mcfSolve,fd| BOOT::|dbpHasDefaultCategory?| - BOOT::|stackMessage| BOOT::|dbAddChainDomain| - BOOT::|listOfIdentifiersIn| BOOT::|knownInfo| - BOOT::|outerProduct| BOOT::|f04jgfSolve,h| - BOOT::|helpSpad2Cmd| BOOT::|f04mcfSolve,fal| - BOOT::|sayAsManyPerLineAsPossible| BOOT::|extractHasArgs| - BOOT::|read| BOOT::|readSpad2Cmd| BOOT::|displayMacros| - BOOT::|warnLiteral| BOOT::|getConstructorModemap| - BOOT::GCOPY BOOT::|koAttrs,fn| BOOT::|displayOperations| - BOOT::|libConstructorSig| BOOT::|f04asfSolve,h| - BOOT::|libConstructorSig,fn| BOOT::|npProcessSynonym| - BOOT::|listOfSharpVars| BOOT::|compileAsharpLispCmd| - BOOT::|isAlmostSimple| BOOT::|libdbTrim| - BOOT::|isAlmostSimple,fn| BOOT::|isFunctor| - BOOT::|stripLisp| BOOT::|parentsOfForm| - BOOT::|isSideEffectFree| BOOT::|ltrace| BOOT::|dbMkForm| - BOOT::|trace| BOOT::|compileAsharpCmd| BOOT::MSORT - BOOT::|displayProplist,fn| BOOT::|removeEnv| BOOT::|load| - BOOT::|loadSpad2Cmd| BOOT::|dbReadLines| BOOT::?VALUE - BOOT::|help| BOOT::|?value| BOOT::|trimComments| - BOOT::|f04atfSolve,h| BOOT::|f04fafSolve,h| - BOOT::|spreadGlossText| BOOT::?PROPERTIES - BOOT::|asyExtractAbbreviation| BOOT::|getGlossLines| - BOOT::|?properties| BOOT::|asyTypeUnit| - BOOT::|getParentsForDomain| BOOT::|f04fafSolve,g| - BOOT::|prModemaps| BOOT::|asyTypeItem| - BOOT::|f04fafSolve,f| BOOT::|importFromFrame| - BOOT::|decExitLevel,removeExit0| - BOOT::|closeInterpreterFrame| BOOT::|f04mbfSolve,f| - BOOT::|tokTran| BOOT::?MODE BOOT::|parseSystemCmd| - BOOT::|?mode| BOOT::|dumbTokenize| BOOT::|edit| - BOOT::|editSpad2Cmd| BOOT::|getDefaultPackageClients| - BOOT::|displayOperationsFromLisplib| BOOT::|say2PerLine| - BOOT::|getArgumentConstructors,fn| - BOOT::|getArgumentConstructors,gn| BOOT::|display| - BOOT::|displaySpad2Cmd| BOOT::|frameEnvironment| - BOOT::|getArgumentConstructors| BOOT::|buildLibAttrs| - BOOT::|buildLibOps| BOOT::|splitIntoOptionBlocks| - BOOT::|writedb| BOOT::|getFirstWord| BOOT::|f07aefSolve,fp| - BOOT::|isSharpVar| BOOT::HAS_SHARP_VAR - BOOT::|dbHasExamplePage| BOOT::|isExistingFile| - BOOT::|mkHasArgsPred| BOOT::|lefts| BOOT::|findEqualFun| - BOOT::|dbFromConstructor?| BOOT::|f01mafSolve,f| - BOOT::|dbShowKind| BOOT::|unAbbreviateIfNecessary| - BOOT:|DeepCopy| BOOT::|evalDomainOpPred,convertCatArg| - BOOT::|dbOpsForm| BOOT::|form2Fence| BOOT::|devaluateList| - BOOT::|dbConstructorDoc,fn| FOAM:|fiStrHash| - BOOT::|dbGetInputString| BOOT::|pmTransFilter| - BOOT::|dbExtractUnderlyingDomain| FOAM:|fiGetDebugger| - BOOT::|isValidType| BOOT:|ByteFileReadLine| BOOT::RENAME - BOOT::|isExposedConstructor| FOAM:|fiSetDebugVar| - BOOT:|InputStream?| BOOT::|ncParseFromString| - BOOT:|OutputStream?| BOOT:|StreamSize| - BOOT:|StreamGetPosition| BOOT:|StreamEnd?| - BOOT:|StreamClose| BOOT::|dbConstructorDoc,gn| - BOOT::|digits2Names| BOOT::|dbCompositeWithMap| - BOOT::|extractFileNameFromPath| BOOT:|ToPathname| - BOOT::IDENT-CHAR-LIT BOOT::IS-CONSOLE-NOT-XEDIT - BOOT::|dbAddChain| BOOT::MESSAGEPRINT - BOOT:|PathnameDirectory| BOOT::MESSAGEPRINT-2 - BOOT::|kFormatSlotDomain| BOOT:|PathnameName| - BOOT::MESSAGEPRINT-1 BOOT::|devaluate| BOOT:|PathnameType| - BOOT::|simpCatPredicate| BOOT:|PathnameString| - BOOT::|dbInfovec| BOOT:|PathnameAbsolute?| - BOOT:|PathnameWithoutType| BOOT::|getImports| - BOOT:|PathnameWithoutDirectory| BOOT::|saySpadMsg| - BOOT::|mkConArgSublis| BOOT:|PathnameToUsualCase| - BOOT:|PathnameDirectoryOfDirectoryPathname| BOOT::|sayTeX| - BOOT::|getUsersOfConstructor| BOOT:|Bit?| BOOT::EQUABLE - BOOT::|makeTemplate| BOOT::|dbShowConsKinds| - BOOT::|makeOpDirect| BOOT:|Vector?| BOOT::|bcConTable| - BOOT::|makeOpDirect,fn| BOOT::|mkUniquePred| - BOOT::PARTCODET BOOT::|bcAbbTable| BOOT::|putPredHash| - BOOT::|bcNameConTable| BOOT::|NRTinnerGetLocalIndex| - BOOT::|breakIntoLines| BOOT::|dbConstructorKind| - BOOT::BLANKP BOOT::|setLoadTimeQ| BOOT:|CharDigit?| - BOOT::|dbConstructorDoc,hn| BOOT::|setLoadTime| - BOOT::NONBLANKLOC BOOT::|extendVectorSize| - BOOT::|markUnique| BOOT:|Cset| BOOT::INDENT-POS - BOOT::|addConsDB,min| BOOT::NEXT-TAB-LOC - BOOT:|CsetComplement| BOOT::|measureCommon| - BOOT:|CsetString| BOOT::|getDependentsOfConstructor| - BOOT::|htMakeSaturnFilterPage| BOOT::|writeSaturnLines| - BOOT::|hasIdent| BOOT::|addConsDB,HashCheck| - BOOT::|parseNoMacroFromString| BOOT::|mapConsDB| - BOOT::|pf2Sex| BOOT::|squeezeConsDB| BOOT::|StreamNull| - BOOT::|squeezeConsDB,fn| BOOT::|mkBold| BOOT::|incString| - BOOT::|postSignature| BOOT::|killColons| BOOT:|ToString| - BOOT::|e02dffSolve,flam| BOOT::|removeSuperfluousMapping| - BOOT:|StringImage| BOOT::|dbShowConstructorLines| - BOOT:|String?| BOOT::|postAtom| BOOT::|dbName| - BOOT::|makeSpadConstant| BOOT::|postType| - BOOT::|childrenOf| BOOT::|htBcLispLinks| - BOOT::|typeCheckInputAreas| BOOT::|kisValidType| - BOOT::|kCheckArgumentNumbers| BOOT:|StringUpperCase| - BOOT:|StringLowerCase| BOOT::|topicCode| - BOOT::|htMakePage1| BOOT::|string2OpAlist| - BOOT::|htProcessDoitButton| BOOT::|blankLine?| - BOOT::|htProcessDoneButton| BOOT::|e02defSolve,fmu| - BOOT::|topics| BOOT::|htProcessBcButtons| - BOOT::|topLevelInterpEval| BOOT::|tdPrint| - BOOT::|htProcessToggleButtons| - BOOT::|htProcessDomainConditions| - BOOT::|getConstructorSignature| BOOT::|getDefaultProps| - BOOT::|htInputStrings| BOOT::GET-A-LINE - BOOT::|getConstructorDocumentation| - BOOT::|htBcRadioButtons| BOOT::KILL-COMMENTS - BOOT::|topicCode,fn| BOOT::|htRadioButtons| - BOOT::|listOfTopics| BOOT::|htLispMemoLinks| - BOOT::PRINT-RULE BOOT::|code2Classes| BOOT::SET-PREFIX - BOOT::PRINT-FLUIDS BOOT::|td| BOOT::|unabbrev| - BOOT::|prTriple| BOOT::|htEndMenu| BOOT::GET-META-TOKEN - BOOT::|hasNewInfoAlist| BOOT::|addTraceItem| - BOOT::GET-BSTRING-TOKEN BOOT::|untraceAllDomainLocalOps| - BOOT::|bright| BOOT::GET-STRING-TOKEN - BOOT::|formatUnabbreviated| BOOT::GET-IDENTIFIER-TOKEN - BOOT::BVEC-NOT BOOT::TOKEN-LOOKAHEAD-TYPE - BOOT::|orderBySlotNumber| BOOT::|traceSpad2Cmd| - BOOT::|compArgumentConditions| BOOT::|e02defSolve,flam| - BOOT::|trace1| BOOT::LINE-PRINT BOOT::|saveMapSig| - BOOT::LINE-PAST-END-P BOOT::|untrace| - BOOT::|stripOffArgumentConditions| - BOOT::DATABASE-CONSTRUCTORKIND BOOT::SPAD_ERROR_LOC - BOOT::|getTraceOptions| BOOT::|transTraceItem| - BOOT::BOOT-PARSE-1 BOOT::|genSearchTran| - BOOT::REDUCTION-VALUE BOOT::|removeSurroundingStars| - BOOT::|getTraceOption| BOOT::|checkFilter| BOOT::PREPARSE - BOOT::|getMapSubNames| BOOT::|getPreviousMapSubNames| - BOOT::|coerceSpadArgs2E| BOOT::|clear| - BOOT::|whatConstructors| BOOT::|stupidIsSpadFunction| - BOOT::|sayBrightlyLength| BOOT::|stackTraceOptionError| - BOOT::GET-BOOT-TOKEN BOOT::|reportOpsFromUnitDirectly| - BOOT::|coerceSpadFunValue2E| BOOT::|searchCount| - BOOT::GET-SPECIAL-TOKEN BOOT::|domainToGenvar| - BOOT::|searchDropUnexposedLines| BOOT::GET-SPADSTRING-TOKEN - BOOT::|compileAsharpArchiveCmd| BOOT::|genDomainTraceName| - BOOT::GET-NUMBER-TOKEN BOOT::GET-ARGUMENT-DESIGNATOR-TOKEN - BOOT::|spadReply,printName| BOOT::|abbreviations| - BOOT::|getTraceOption,hn| BOOT::BOOT-TOKEN-LOOKAHEAD-TYPE - BOOT::|changeToNamedInterpreterFrame| - BOOT::|removeTracedMapSigs| BOOT::|findFrameInRing| - BOOT::|isListOfIdentifiers| BOOT::|string2Constructor| - BOOT::|isListOfIdentifiersOrStrings| BOOT::|dbString2Words| - BOOT::|conLowerCaseConTran| BOOT::|emptyInterpreterFrame| - BOOT::|string2Words| BOOT::|whatCommands| - BOOT::BUMPERRORCOUNT BOOT::|commandsForUserLevel| - BOOT::MAKE-ADJUSTABLE-STRING BOOT::|dnForm| BOOT::|pp2Cols| - BOOT::|dnForm,negate| BOOT::|dbGetCommentOrigin| - BOOT::|whatSpad2Cmd,fixpat| BOOT::DEF-PROCESS - BOOT::|synonymsForUserLevel| BOOT::DEF-RENAME - BOOT::|postTransform| - BOOT::|processSynonymLine,removeKeyFromLine| - BOOT::|pmPreparse,hn| BOOT::|new2OldLisp| - BOOT::|processSynonymLine| BOOT::PRINT-PACKAGE - BOOT::|printSynonyms| BOOT::INITIALIZE-PREPARSE - BOOT::|clearParserMacro| - BOOT::|dbScreenForDefaultFunctions| BOOT::S-PROCESS - BOOT::|newHelpSpad2Cmd| BOOT::|dbChooseOperandName| - BOOT::|zsystemDevelopmentSpad2Cmd| BOOT::|parseFromString| - BOOT::|checkPmParse,fn| BOOT::|dbRead| - BOOT::|string2SpadTree| BOOT::|checkPmParse| SYSTEM:PNAME - BOOT::|htCopyProplist| BOOT::|pathnameTypeId| - BOOT::|capitalize| BOOT::|htSayValue| - BOOT::|clearCmdExcept| BOOT::|getSubstSigIfPossible| - BOOT::|workfilesSpad2Cmd| BOOT::|isIntegerString| - BOOT::|cd| BOOT::|dbGetExpandedOpAlist| - BOOT::|dbAddDocTable| BOOT::|zsystemdevelopment| - BOOT::|getConstructorForm| BOOT::|workfiles| - BOOT::|originsInOrder| BOOT::|getInfoAlist| - BOOT::|parentsOf| BOOT::|listOrVectorElementMode| - BOOT::|zeroOneConvertAlist| BOOT::|dbInfoSig| - BOOT::|numberize| BOOT::|hasNewInfoText| - BOOT::|splitConTable| BOOT::|dbGetDocTable,gn| - BOOT::|string2Integer| BOOT::|recordFrame| - BOOT::|issueHTSaturn| BOOT::|kTestPred| - BOOT::|segmentKeyedMsg| BOOT::|htpPageDescription| - BOOT::|dbDocTable| BOOT::|saturnTran| BOOT::|bcUnixTable| - BOOT::|mkTabularItem| BOOT::|printAsTeX| - BOOT::|isAsharpFileName?| BOOT::|isMenuItemStyle?| - BOOT::|saturnTranText| BOOT::|bcError| - BOOT::|transOnlyOption| BOOT::|kPageContextMenu| - BOOT::|bcString2WordList| BOOT::|unTab1| - BOOT::|shortenForPrinting| BOOT::|getBpiNameIfTracedMap| - BOOT::|recordAndPrintTest| BOOT::|mkTabularItem,fn| - BOOT::|PullAndExecuteSpadSystemCommand| BOOT::|htNewPage| - BOOT::|htpName| BOOT::|prTraceNames,fn| - BOOT::|htMakePageSaturn| BOOT::|e02zafSolve,flam| - BOOT::|isCapitalWord| BOOT::|zagSuper| BOOT::|height| - BOOT::|zagSub| BOOT::|inputPrompt| - BOOT::|flattenOperationAlist| BOOT::|variableNumber| - BOOT::|spadTrace,g| BOOT::|mkPredList,fn| - BOOT::|isTraceGensym| BOOT::|htPopSaturn| - BOOT::|htMakePageStandard| BOOT::|undo| BOOT::|dbKind| - BOOT::|undoCount| BOOT::|stringer| BOOT::|outputTranIf| - BOOT::|htInitPageNoHeading| BOOT::|undoLocalModemapHack| - BOOT::|saturnHasExamplePage| BOOT::|reportUndo| BOOT::|iht| - BOOT::|bcIssueHt| BOOT::|bcConform1| BOOT::|keyp| - BOOT::|bcConform1,hd| BOOT::|binomialWidth| - BOOT::|htSaySourceFile| BOOT::|basicStringize| - BOOT::|mapStringize| BOOT::|binomialSuper| - BOOT::|bcConform1,mapping| - BOOT::|outputTranMatrix,outtranRow| - BOOT::PLAIN-PRINT-FORMAT-STRING BOOT::|bcConform1,tuple| - BOOT::|binomialSub| BOOT::|vConcatWidth| BOOTTRAN::BOOTTOCL - BOOT::|bcConform1,tl| BOOT::|deMatrix| BOOT::TRANSLIST - BOOT::|sumWidthA| BOOT::TRANSLATE BOOT::|htSayItalics| - BOOT::|dbGetDocTable,hn| BOOT::|absym| - BOOT::|dbEvalableConstructor?| BOOT::|getCallBack| - BOOT::|texFormat1| BOOT::|unTab| - BOOT::RETRANSLATE-DIRECTORY BOOT::|kPageContextMenuSaturn| - BOOT::|maPrin| BOOT::RETRANSLATE-FILE-IF-NECESSARY - BOOT::|saturnExampleLink| BOOT::|explainLinear| - BOOT::RECOMPILE-ALL-LIBS BOOT::|htSayCold| - BOOT::RECOMPILE-LIB-DIRECTORY - BOOT::RECOMPILE-NRLIB-IF-NECESSARY BOOT::|writeSaturnTable| - BOOT::|maprinRows| BOOT::RECOMPILE-ALL-FILES - BOOT::|writeSaturn| BOOT::|maprinChk| - BOOT::|writeSaturnPrint| BOOT::RECOMPILE-ALL-ALGEBRA-FILES - BOOT::|bcConform1,say| BOOT::|escapeSpecialIds| - BOOT::|vConcatSub| BOOT::LOAD-DIRECTORY - BOOT::|postDoubleSharp| BOOT::|sumoverlist| - BOOT::|htProcessBcStrings| BOOT::|matSuperList| - BOOT::|superSubWidth| BOOT::CHAPTER-NAME BOOT::|isQuotient| - BOOT::|matSubList| BOOT::|superSubSuper| - BOOT::|isRationalNumber| BOOT::|matLSum| - BOOT::|superSubSub| BOOT::BLANKCHARP - BOOT::SPADTAGS-FROM-FILE BOOT::|matLSum2| - BOOT::OUR-WRITE-DATE BOOT::LIFT-NRLIB-NAME - BOOT::RECOMPILE-FILE-IF-NECESSARY BOOT::|suScWidth| - BOOT::|bcLinearSolveMatrixInhomo,f| BOOT::LIBCHECK - BOOT::|bcLinearExtractMatrix| BOOT::|printMap| - BOOT::|isInitialMap| BOOT::SPAD-CLEAR-INPUT - BOOT::|bcString2HyString| - BOOT::|NeedAtLeastOneFunctionInThisFile| BOOT::|pfSequence| - BOOT::|npPileBracketed| BOOT::|npAnyNo| BOOT::|bcOptional| - VMLISP::EQUABLE VMLISP::*LAM BOOT::|subSub| VMLISP::RCQEXP - BOOT::|flattenOps| BOOT::|npInfGeneric| BOOT::|slashWidth| - BOOT::|slashSuper| VMLISP::COMPILE1 BOOT::|slashSub| - BOOT::|pfPile| BOOT::|npParened| BOOT::BVEC-COPY - BOOT::|letWidth| VMLISP::FLAT-BV-LIST BOOT::|sortCarString| - BOOT::|pfAppend| VMLISP::PLIST2ALIST BOOT::|pfFix| - BOOT::|outputConstructTran| BOOT::|pfTyping| - BOOT::|outputTranSEQ| BOOT::|outputTranRepeat| - BOOT::|outputTranReduce| BOOT::|outputTranCollect| - BOOT::|outputMapTran| BOOT::|npSemiListing| - BOOT::|pfExport| BOOT::|pfLocal| - BOOT::|optSEQ,getRidOfTemps| BOOT::|optSPADCALL| - BOOT::|pfFree| BOOT::|optXLAMCond| BOOT::|optCONDtail| - BOOT::|optPredicateIfTrue| BOOT::|optCons| BOOT::|optSEQ| - BOOT::|pfBreak| BOOT::|optSEQ,tryToRemoveSEQ| - BOOT::|optSEQ,SEQToCOND| BOOT::|optimize,opt| - BOOT::|optCond| BOOT::|pfReturnNoName| BOOT::|optMkRecord| - BOOT::|npListAndRecover| BOOT::|optCatch| BOOT::|npTuple| - BOOT::|pf0SequenceArgs| BOOT::|compileTimeBindingOf| - BOOT::|optimizeFunctionDef,removeTopLevelCatch| - BOOT::|optEQ| BOOT::|optLESSP| BOOT::|pfIterate| - BOOT::|opt-| BOOT::|optQSMINUS| BOOT::|pfLoop1| - BOOT::|optMINUS| BOOT::|optSuchthat| BOOT::|optRECORDCOPY| - BOOT::|optSETRECORDELT| BOOT::|npParse| - BOOT::|timedEVALFUN| BOOT::|pfDocument| - BOOT::|updateTimedName| BOOT::|pfTweakIf| - BOOT::|timedOptimization| BOOT::|pfCheckItOut| - BOOT::|timedAlgebraEvaluation| BOOT::|pushTimedName| - BOOT::|significantStat| BOOT::|printNamedStats| - BOOT::|htpDestroyPage| BOOT::|splitIntoBlocksOf200| - BOOT::|incIgen| BOOT::|e02dafSolve,flam| - BOOT::|e04nafSolve,fe| BOOT::|str2Tex| - BOOT::|e04nafSolve,fd| BOOT::|wrap| BOOT::|e04nafSolve,fc| - BOOT::|e04ycfSolve,fa| BOOT::|str2Outform| - BOOT::|parse2Outform| BOOT::|e04nafSolve,fj| - BOOT::|e04nafSolve,fg| BOOT::|e04dgfSolve,fb| - BOOT::|e04mbfSolve,fg| BOOT::|evalLoopIter| - BOOT::|formatUnabbreviatedTuple| BOOT::|e04mbfSolve,fe| - BOOT::|length2?| BOOT::|Identity| BOOT::|upADEF| - BOOT::|bool| BOOT::|e04mbfSolve,fd| BOOT::|orderList| - BOOT::|e04mbfSolve,fc| BOOT::|upLoopIters| BOOT::NMSORT - BOOT::|pr| BOOT::|e04fdfSolve,fb| BOOT::|interpIter| - BOOT::|functionp| BOOT::|quoteCatOp| BOOT::|e04fdfSolve,fa| - BOOT::|isLetter| BOOT::|mkNestedElts| BOOT::|charRangeTest| - BOOT::|instantiate| BOOT::|isUpperCaseLetter| - BOOT::|e04gcfSolve,fb| BOOT::|flattenSexpr| - BOOT::|e04gcfSolve,fa| BOOT::|isStreamCollect| - BOOT::|removeZeroOneDestructively| BOOT::|StringToCompStr| - BOOT::|boolODDP| BOOT::|rightTrim| - BOOT::|dropLeadingBlanks| BOOT::|getDomainByteVector| - BOOT::|interpOnlyCOLLECT| BOOT::|e04jafSolve,fc| - BOOT::|upCOLLECT| BOOT::|upAlgExtension| - BOOT::|e04jafSolve,fb| BOOT::|eq2AlgExtension| - BOOT::|e04jafSolve,fa| BOOT::|clearCmdParts| - BOOT::|upCOLLECT0| BOOT::|loadLib| BOOT::|upCOLLECT1| - BOOT::|upand| BOOT::|upDeclare| BOOT:|pp| - BOOT::|f01rdfSolve,fz| BOOT::|mkZipCode| BOOT:ATOM2STRING - BOOT::|orderCatAnc| BOOT::|f01mcfSolve,g| - BOOT::|isOkInterpMode| BOOT::|f01mcfSolve,f| - BOOT::|mkAndApplyPredicates| BOOT:MATCH-STRING - BOOT::|upCOERCE| BOOT::|upStreamIters| BOOT::|upconstruct| - BOOT::|upTARGET| BOOT::|falseFun| BOOT::|upLET| - BOOT::|closeOldAxiomFunctor| BOOT::|f01refSolve,fz| - BOOT::|upLETWithPatternOnLhs| BOOT::|isTupleForm| - BOOT::|f01qefSolve,fz| BOOT::|e02zafSolve,fxy| - BOOT::|shoeStrings| BOOT::|removeConstruct| BOOT:|break| - BOOT::|shoeIntern| BOOT::|isLocalPred| - BOOT::|shoeInternFile| BOOT::|upequation| - BOOT::|SpadInterpretFile| BOOT::|intInterpretPform| - BOOT::|altSeteltable| BOOT::|packageTran| - BOOT::|isHomogeneous| BOOT::|zeroOneTran| - BOOT::|intProcessSynonyms| BOOT::|upbreak| - BOOT::|f01brfSolve,f| BOOT::|intnplisp| BOOT::|upDollar| - BOOT::|nplisp| BOOT::|setCurrentLine| - BOOT::|f01qdfSolve,fz| BOOT::|copyHack| BOOT::|copyHack,fn| - BOOT:ADJCURMAXINDEX BOOT::|upTuple| BOOT::|ncloopParse| - BOOT::|ncloopIncFileName| BOOT::|phBegin| - BOOT::|ncloopEscaped| BOOT::|upiterate| BOOT::|upIF| - BOOT::|upisnt| BOOT::|upisAndIsnt| BOOT::|phInterpret| - BOOT::|isHomogeneousArgs| BOOT:LASTATOM BOOT::|uphas| - BOOT::|phMacro| BOOT::|macroExpanded| BOOT::|upis| - BOOT::|ncConversationPhase,wrapup| BOOT:CONSOLEINPUTP - BOOT::|upwhere| BOOT::|serverReadLine| - BOOT::|ncloopPrintLines| BOOT::|mkLineList| - BOOT::|nonBlank| BOOT:|MakeSymbol| BOOT::|intloopEchoParse| - BOOT::|incBiteOff| BOOT::|SkipEnd?| BOOT::|incFileName| - BOOT::|Else?| BOOT::|Elseif?| BOOT::|If?| - BOOT::|inclmsgNoSuchFile| BOOT::|inclmsgPrematureFin| - BOOT::|incFileInput| BOOT::|Top?| - BOOT::|inclmsgPrematureEOF| BOOT::|SkipPart?| - BOOT::|KeepPart?| BOOT:COMP BOOT:GETGENSYM - BOOT::|incNConsoles| BOOT::|Skipping?| BOOT::|incClassify| - BOOT::EXPAND-TABS BOOT::|incCommand?| BOOT::|incRenumber| - BOOT::|incFile| BOOT::|incPos| - BOOT:|initializeSetVariables| BOOT::|inclmsgSay| - BOOT::|inclmsgConStill| BOOT::|incStringStream| - BOOT::|inclmsgConActive| BOOT:NUMOFNODES FOAM::TYPE2INIT - BOOT:TRANSPGVAR FOAM::FOAM-FUNCTION-INFO BOOT::|GetValue| - BOOT::|hasToInfo| FOAM::INSERT-TYPES BOOT::|formatPred| - BOOT::|chaseInferences,foo| BOOT::|liftCond| - FOAM::FOAMPROGINFOSTRUCT-P BOOT::|formatInfo| - BOOT:TOKEN-TYPE BOOT::|addInformation,info| - BOOT:|updateSourceFiles| BOOT::|infoToHas| BOOT::|addInfo| - BOOT::|formatPredParts| BOOT::|printInfo| - BOOT::|linearFormat| BOOT::|formatOperationAlistEntry| - BOOT::|formatIf| BOOT:MKQ BOOT::|linearFormatName| - BOOT::|dollarPercentTran| BOOT::|string2Float| - BOOT::|specialChar| BOOT:TOKEN-SYMBOL BOOT::|hashCode?| - BOOT::|formatArgList| BOOT::|listOfPredOfTypePatternIds| - BOOT::|script2String| BOOT::|form2Fence1| - BOOT::|replaceGoGetSlot| BOOT::|constructorName| - BOOT::|sayModemap| BOOT:ACTION BOOT::|opIsHasCat| - BOOT::|isNewWorldDomain| BOOT::|formCollect2String| - BOOT::|DNameToSExpr1| BOOT::|tuple2String| - BOOT::|DNameFixEnum| BOOT::|formJoin2String| BOOT:ASSOCLEFT - BOOT::|DNameToSExpr| BOOT:|sayALGEBRA| - BOOT::|CompStrToString| BOOT::|record2String| - FOAM-USER::|AXL-spitSInt| BOOT::|computedMode| - BOOT::|formWrapId| BOOT::|getIProplist| - BOOT::|isBinaryInfix| BOOT::|mkAtreeValueOf| - BOOT::|collectDefTypesAndPreds| BOOT::|formatSignature| - BOOT::|freeOfSharpVars| BOOT::|unVectorize| - BOOT::|formatSignature0| BOOT::|isInternalFunctionName| - BOOT::|objEnv| BOOT:NREVERSE0 BOOT::|formatMapping| - BOOT::|canRemoveIsDomain?| BOOT:|sayFORTRAN| - BOOT::|formIterator2String| BOOT:|IS_#GENVAR| - BOOT::|removeIsDomains| BOOT:LISTOFATOMS - BOOT::|formatAttribute| BOOT::|formTuple2String| - BOOT::|numOfSpadArguments| BOOT::|args2Tuple| - BOOT::|blankList| BOOT::|removeBodyFromEnv| - BOOT::|form2StringWithWhere| BOOT::|reportOpSymbol| - BOOT::|apropos| BOOT::|formatModemap,fn| - BOOT::|listOfVariables| BOOT::|isFreeVar| - BOOT::|isLocalVar| BOOT::|expr2String| - BOOT::|isInternalMapName| BOOT::|atom2String|)) -(PROCLAIM - '(FTYPE (FUNCTION (T *) *) VMLISP:MAKE-APPENDSTREAM - VMLISP:MAKE-INSTREAM VMLISP:MAKE-OUTSTREAM - VMLISP:COMPILE-LIB-FILE BOOT:|OsRunProgram| - BOOT:|OsRunProgramToStream| BOOT::ASHARP - FOAM:COMPILE-AS-FILE BOOT:|Prompt| BOOT:|sayBrightlyNT|)) -(PROCLAIM - '(FTYPE (FUNCTION (T T T) (VALUES T T)) BOOT::|getScriptName| - FOAM:AXIOMXL-GLOBAL-NAME BOOT::|spadTraceAlias|)) -(PROCLAIM '(FTYPE (FUNCTION (T T *) (VALUES T T)) VMLISP:MDEF)) -(PROCLAIM '(FTYPE (FUNCTION (T *) STRING) VMLISP:MAKE-FULL-CVEC)) -(PROCLAIM - '(FTYPE (FUNCTION (T T) *) BOOT::|bcInputMatrixByFormula| - BOOT::|bcInputExplicitMatrix| BOOT::|htStringPad| - BOOT::|evalAndRwriteLispForm| BOOT::|mkAtreeWithSrcPos| - BOOT::|rwriteLispForm| BOOT::COMPILE-DEFUN BOOT::|doIt| - BOOT::BPIUNTRACE VMLISP:QUOTIENT BOOT::|print| - BOOT::|compilerDoitWithScreenedLisplib| - BOOT::|compilerDoit| BOOT::MONITOR-PRINVALUE BOOT::/TRACE-2 - VMLISP:|LAM,FILEACTQ| BOOT::|hasFormalMapVariable| - BOOT::|ScanOrPairVec| VMLISP:SUFFIX BOOT::PRINMATHOR0 - BOOT::|spadTrace| BOOT::|output| BOOT::|e01bffDefaultSolve| - BOOT::|e01safDefaultSolve| BOOT::|popUpNamedHTPage| - BOOT::|e01dafDefaultSolve| BOOT::|replaceNamedHTPage| - BOOT::|e02bafDefaultSolve| BOOT::|e02bdfDefaultSolve| - BOOT::|e02defDefaultSolve| BOOT::|sockSendFloat| - BOOT::SOCK-SEND-SIGNAL BOOT::SOCK-SEND-FLOAT - BOOT::SOCK-SEND-STRING BOOT::SOCK-SEND-INT BOOT::ERASE - BOOT::|sayErrorly| BOOT::|saturnSayErrorly| BOOT::|set1| - BOOT::|displaySetOptionInformation| BOOT::|mkGrepPattern| - BOOT::|showDoc| BOOT::|genSearchSayJump| BOOT::|oPageFrom| - BOOT::|showConstruct| BOOT::|htCommandToInputLine,fn| - BOOT::|grepConstructorSearch| BOOT::|showNamedDoc| - BOOT::|form2HtString,fnTail| BOOT::|xdrWrite| - BOOT::|spleI1| BOOT::|readData,xdrRead1| BOOT::|xdrRead| - BOOT::|sockSendSignal| BOOT::|htpLabelFilteredInputString| - BOOT::|e01bgfDefaultSolve| BOOT::|e01befDefaultSolve| - BOOT::|e01bafDefaultSolve| BOOT::|htGlossSearch| - BOOT::|htSetSystemVariable| BOOT::|htSetSystemVariableKind| - BOOT::|htSetNotAvailable| BOOT::|htShowLiteralsPage| - BOOT::|htCheck| BOOT::|htShowIntegerPage| - BOOT::|htShowFunctionPage| BOOT::|htSetFunCommandContinue| - BOOT::|htKill| BOOT::|htFunctionSetLiteral| - BOOT::|htShowSetPage| BOOT::ADDCLOSE BOOT::|htSetLiteral| - BOOT:|LispCompileFileQuietlyToObject| - ; BOOT::|findStringInFile| - BOOT::|ppPair| - BOOT::|getMinimalVarMode| BOOT::|checkAddSpaceSegments| - BOOT::|checkAddIndented| BOOT::|alistSize,count| - BOOT::|dbConformGen1| BOOT::|pickitForm| - BOOT::|koaPageFilterByCategory1| VMLISP::COPY-FILE - VMLISP::COPY-LIB-DIRECTORY BOOT::|c06ebfDefaultSolve| - BOOT::|c06gsfDefaultSolve| BOOT::|c06eafDefaultSolve| - BOOT::|c06gbfDefaultSolve| BOOT::|c06gqfDefaultSolve| - BOOT::|c06ecfDefaultSolve| BOOT::|c06gcfDefaultSolve| - BOOT::|d01gafDefaultSolve| BOOT::|spadcall2| - BOOT::|sublisV| BOOT::|sublisV,suba| BOOT::|fortError| - BOOT::|f04adfDefaultSolve| BOOT::|f04arfDefaultSolve| - BOOT::|koPageFromKKPage| BOOT::|kArgPage| BOOT::|npsystem| - BOOT::|f04asfDefaultSolve| - BOOT::|handleParsedSystemCommands| - BOOT::|handleTokensizeSystemCommands| - BOOT::|f07fdfDefaultSolve| BOOT::|tokenSystemCommand| - BOOT::|reportOpsFromLisplib1| BOOT::|handleNoParseCommands| - BOOT::|f07aefDefaultSolve| BOOT::|f07fefDefaultSolve| - BOOT::|f07adfDefaultSolve| BOOT::|addPatchesToLongLines| - BOOT::|kArgumentCheck| BOOT::COERCE-FAILURE-MSG - BOOT::|kxPage| BOOT::|kcnPage| BOOT::SAYBRIGHTLYNT1 - BOOT::|kcuPage| BOOT::|ksPage| BOOT::|conOpPage| - BOOT::|kcdoPage| BOOT::|kcdePage| BOOT::|kcdPage| - BOOT::|kccPage| BOOT::|patternCheck,subWild| - BOOT::|kcaPage| BOOT::|kcpPage| BOOT::|htDoneButton| - BOOT::|sockSendInt| BOOT::|kePage| BOOT::|sockSendString| - BOOT::|koaPageFilterByName| BOOT::|koaPageFilterByCategory| - BOOT::|koPageAux1| BOOT::|kcPage| BOOT::|getmode| - BOOT::|docSearch1| BOOT::|grepSearchQuery| - BOOT::|repeatSearch| BOOT::|reportOpsFromLisplib0| - BOOT::|reportOperations| BOOT::|generalSearchDo| - BOOT::|grepSearchJump| BOOT::|mkDetailedGrepPattern,conc| - BOOT::|kiPage| BOOT::|errorPage| - BOOT::|dbShowConsKindsFilter| BOOT::|koPage| - BOOT::|dbInfoChoose| BOOT::|kciPage| - BOOT::|dbInfoChooseSingle| BOOT::|dbSort| BOOT::|msgText| - BOOT::|bcSeriesByFormula| BOOT::|bcRealLimitGen1| - BOOT::|bcSeriesExpansion| BOOT::|ncloopInclude| - BOOT::|bcComplexLimit| BOOT::|bcRealLimit| - BOOT::|htFilterPage| BOOT::|bcPuiseuxSeries| - BOOT::KCL-OS-RUN-PROGRAM-TO-STREAM BOOT::|bcLaurentSeries| - BOOT::KCL-OS-RUN-PROGRAM BOOT::|bcTaylorSeries| - BOOT::|bcLinearSolveMatrix| BOOT::|bcMakeEquations| - BOOT::|bcMakeLinearEquations| BOOT::|bcLinearSolveEqns| - BOOT::|bcSolveSingle| BOOT::|bcInputEquations| BOOT::FC - BOOT::|bcSystemSolve| BOOT::|bcSolveEquationsNumerically| - BOOT::|bcSolveEquations| BOOT::|bcLinearSolve| - BOOT::|bcLinearMatrixGen| - BOOT::|bcLinearSolveMatrixInhomoGen| - BOOT::|bcLinearSolveMatrixInhomo| - BOOT::|bcLinearSolveMatrixHomo| BOOT::|finalExactRequest| - BOOT::|printMap1| BOOT::|htMkName| - BOOT::|makeLongSpaceString| BOOT::|makeLongTimeString| - BOOT::|nrtEval| BOOT::|f01mcfDefaultSolve| - BOOT::|f01rcfDefaultSolve| BOOT::|ncloopCommand| - BOOT::|ncloopInclude1| BOOT::|ncConversationPhase| - BOOT:DEFSTREAM BOOT::|inclHandleBug| BOOT::|evalSlotDomain| - BOOT::|ncEltQ| BOOT::|formArguments2String,fn|)) -(PROCLAIM - '(FTYPE (FUNCTION (T *) T) BOOT:|sayBrightly| BOOT:BLANKS - BOOT:MATCH-NEXT-TOKEN BOOT::|desiredMsg| - BOOT:|sayBrightlyI| BOOT:MATCH-CURRENT-TOKEN - VMLISP:RDEFIOSTREAM VMLISP:CATCHALL VMLISP:TAB - VMLISP:|F,PRINT-ONE| VMLISP:VMPRINT BOOT::FINDTAG - VMLISP:MAKE-HASHTABLE VMLISP:MAKE-FILENAME VMLISP:MACERR - VMLISP:PRETTYPRINT BOOT::|pfExpression| BOOT::|pfSymbol| - VMLISP:|LAM,EVALANDFILEACTQ| VMLISP:PRETTYPRIN0 - BOOT::|pfSymb| VMLISP::MAKE-INPUT-FILENAME - BOOT:|LispReadFromString| BOOT::MONITOR-ADD BOOT::|cpCms| - VMLISP::MAKE-FULL-NAMESTRING BOOT:|PrettyPrint| - BOOT:|PlainPrintOn| BOOT:|WriteLispExpr| BOOT:|WriteLine| - BOOT:|WriteString| BOOT:|ReadLineIntoString| - BOOT:|ReadBytesIntoVector| BOOT:|Pathname| - BOOT:|FullVector| BOOT:|FullBvec| BOOT:|FullString| - BOOT::PRINT-NEW-LINE BOOT::PRINT-FULL - BOOT::GET-BOOT-IDENTIFIER-TOKEN BOOT::COMPSPADFILES)) -(PROCLAIM - '(FTYPE (FUNCTION (T T) T) BOOT::|mkAliasList,fn| BOOT:PREDECESSOR - BOOT::|depthOfRecursion| BOOT::|formatJoinKey| - BOOT::|putBodyInEnv| BOOT::|mapDefsWithCorrectArgCount| - BOOT::|sayModemapWithNumber| BOOT::|addDefaults| BOOT:NLIST - BOOT::|formatOperation| BOOT::|get1defaultOp| - BOOT::|compileBody| BOOT::|makeLocalModemap| BOOT:NSTRCONC - BOOT::|saveDependentMapInfo| BOOT:GETRULEFUNLISTS - BOOT::|axFormatDecl| BOOT::|mkMapAlias| BOOT::|readData| - BOOT::|axFormatConstantOp| BOOT::|axFormatOpSig| - BOOT::|mkFormalArg| BOOT::|writeData| BOOT:POINT - BOOT::|mkValCheck| BOOT::|mkValueCheck| BOOT::|isPointer?| - BOOT::|wt| BOOT::|dqAppend| BOOT::|makePattern| - BOOT::|makeAxFile| BOOT::|clearDependencies| - BOOT::|getEqualSublis,fn| BOOT::|sourceFilesToAxFile| - BOOT::|getLocalVars| BOOT::|simplifyMapPattern| - BOOT::|getMapBody| BOOT:GETTAIL BOOT::|htpLabelInputString| - BOOT::|htpLabelSpadValue| BOOT::|putDependencies| - BOOT::STACK-PUSH BOOT:COMPARE BOOT::|htMakeDoneButton| - BOOT::|putDependencies,removeObsoleteDependencies| - BOOT::|makeNewDependencies| BOOT::|PARSE-Operation| - BOOT::|htInitPage| BOOT::|notCalled| BOOT::|htpProperty| - BOOT::|containsOp| BOOT::|makeRuleForm| - BOOT::|nonRecursivePart| BOOT::|outputFormat| - BOOT::|sayDroppingFunctions| BOOT::|nonRecursivePart1| - BOOT::|expandRecursiveBody| BOOT::|addDefMap| - BOOT::|e04nafSolve,fh| BOOT:FLAG BOOT::|ifCond| - BOOT::|incCommandTail| BOOT::|incTrunc| BOOT::|dollarTran| - BOOT:PAIR BOOT::CHAR-EQ BOOT::|PARSE-rightBindingPowerOf| - BOOT::|e04nafSolve,fi| BOOT:SUBLISNQ - BOOT::|writeInputLines| BOOT::|rempropI| BOOT:DELASC - BOOT::|showInput| BOOT::|showInOut| BOOT::SPADRREAD - BOOT:LASSOC BOOT::|ScanOrPairVec,ScanOrInner| BOOT::|getI| - BOOT::|mergeSignatureAndLocalVarAlists| BOOT::CHAR-NE - BOOT:S+ BOOT::|convertOpAlist2compilerInfo,formatSig| - BOOT::|getLisplibNoCache| BOOT::|getLisplib| - BOOT::|PARSE-leftBindingPowerOf| BOOT:MAKE-PARSE-FUNCTION - BOOT::|spadPrint| BOOT::|getSlotFromCategoryForm| - BOOT::|systemDependentMkAutoload| BOOT:MKPF - BOOT::|mkAutoLoad| BOOT:STRM BOOT::|wordFrom| - FOAM::|magicEq1| BOOT::|throwKeyedMsg1| - BOOT::|saturnThrowKeyedMsg| BOOT::|center| - BOOT::|substituteCategoryArguments| - BOOT::|isDomainConstructorForm| BOOT::|keyedSystemError1| - BOOT::|orderByDependency| BOOT::|saturnKeyedSystemError| - BOOT::|getFunctorOpsAndAtts| BOOT::|breakKeyedMsg| - BOOT::|fastSearchCurrentEnv| BOOT::|putMode| - BOOT::|splitListOn| BOOT::|putFlag| - BOOT::|mkAtreeNodeWithSrcPos| BOOT::|getMsgCatAttr| - BOOT::|DomainSubstitutionFunction| - BOOT::|transferSrcPosInfo| BOOT::|isNestedInstantiation| - BOOT::|DomainSubstitutionFunction,Subst| - BOOT::|mkAtree1WithSrcPos| BOOT::|wrapDomainSub| - BOOT::|listInitialSegment| BOOT::|compCategoryItem| - BOOT::|writeLib| - BOOT::|makeFunctorArgumentParameters,findExtrasP| - BOOT::|loadLibIfNecessary| BOOT::|rep| - BOOT::|collectDefTypesAndPreds,addPred| - BOOT::|setMsgPrefix| BOOT::|setMsgCatlessAttr| - BOOT::|getSignatureFromMode| - BOOT::|makeFunctorArgumentParameters,findExtras| - BOOT::|makeFunctorArgumentParameters,findExtras1| - BOOT::|autoLoad| BOOT::|isMacro| BOOT::|readLib| - BOOT::|getValueFromEnvironment| - BOOT::|unloadOneConstructor| - BOOT::|compileCases,FindNamesFor| BOOT::|asTupleNewCode| - BOOT::|macroExpandList| BOOT::|setMsgForcedAttrList| - BOOT::|macSubstituteId| BOOT::|atree2Tree1| - BOOT::|compileCases,isEltArgumentIn| - BOOT::|makeFunctorArgumentParameters,augmentSig| - BOOT::|mkAtree3,fn| BOOT::|macroExpandInPlace| - BOOT::|getErFromDbL| BOOT::|compJoin,getParms| - BOOT::|pfMapParts| BOOT::|erMsgCompare| - BOOT::|compareposns| BOOT::|pfCopyWithPos| - BOOT::|mkCategoryPackage,fn| BOOT::|getArgumentMode| - BOOT:REMFLAG BOOT::|listDecideHowMuch| - BOOT::|throwEvalTypeMsg| BOOT::|splitEncodedFunctionName| - BOOT:QLASSQ BOOT::|decideHowMuch| BOOT::|getArgValue1| - BOOT::|setMsgText| BOOT::|setMsgUnforcedAttrList| - BOOT::|genDomainViewList0| BOOT::|macLambda,mac| - BOOT::|macWhere,mac| - BOOT::|makeFunctorArgumentParameters,fn| - BOOT::|canCacheLocalDomain| - BOOT::|makeCategoryPredicates,fn| - BOOT::|makeCategoryPredicates,fnl| - BOOT::|getArgValueOrThrow| BOOT::|mac0SubstituteOuter| - BOOT::|insertPos| BOOT::|macLambdaParameterHandling| - BOOT::|genDomainViewName| BOOT::|isKeyQualityP| - BOOT::|queueUpErrors| BOOT::|thisPosIsEqual| - BOOT::|getOpArgTypes1| BOOT::|redundant| - BOOT::|argCouldBelongToSubdomain| BOOT::|thisPosIsLess| - BOOT::APPEND-N BOOT::|putFTText| BOOT::CONS-N - BOOT::|getModemap| BOOT::|sameMsg?| BOOT::EVAL-DEFUN - BOOT::|mkOpVec| BOOT::|resolveTCat| - BOOT::PRINT-AND-EVAL-DEFUN BOOT::|AssocBarGensym| - BOOT::|FromTo| BOOT::|compareMode2Arg| - BOOT::|c02affSolve,f| BOOT::|subCopy| - BOOT::|getOpArgTypes,f| BOOT::|isTowerWithSubdomain| - BOOT::|addEmptyCapsuleIfNecessary| BOOT::|constructM| - BOOT:|delete| BOOT::|c02agfSolve,f| BOOT::|bootStrapError| - BOOT::|getOpArgTypes| BOOT::|dqAddAppend| BOOT::|tracelet| - BOOT::/UNTRACE-2 BOOT:|rassoc| BOOT::|resolveTM1| - BOOT::|matchMmSigTar| BOOT::/UNTRACE-1 BOOT::|deepSubCopy| - BOOT::|CONTAINEDisDomain| BOOT::|hasCatExpression| - BOOT::PAIRTRACE BOOT::|spadUntrace| BOOT:LENGTHENVEC - BOOT::|defaultTypeForCategory| BOOT::DEF-IT BOOT:|breaklet| - BOOT::|mmCatComp| BOOT::|mergeSubs| BOOT::DEF-LET - BOOT::|hasCaty1| BOOT:STRINGPAD BOOT::|mkObjWrap| - BOOT:TRUNCLIST BOOT::|position1| BOOT::DEF-IS2 - BOOT::|defLET| BOOT::|defLETdcq| - BOOT::|sortAndReorderDmpExponents| BOOT::WHDEF - BOOT::|removeListElt| BOOT::|everyNth| BOOT::LET_ERROR - BOOT::|defIS| BOOT::DEF-IS-REV VMLISP:SETDIFFERENCE - BOOT::DEF-SELECT2 BOOT::DEF-SELECT1 BOOT::|addInformation| - BOOT::|varIsOnlyVarInPoly| BOOT::|makeCategoryPredicates| - BOOT::|compDefWhereClause,addSuchthat| VMLISP:DIVIDE - BOOT::NOTEQUALLIBS VMLISP:GETL BOOT::|modemapPattern| - BOOT::|removeVectorElt| BOOT::GETALIST - BOOT::|buildDatabase| BOOT::|mathPrint1| - BOOT::|getInverseEnvironment| BOOT::|getSuccessEnvironment| - BOOT::|getSystemModemaps| BOOT::|insertWOC| - BOOT::|getModemapsFromDatabase| BOOT::|removeCoreModemaps| - BOOT::|SubstWhileDesizing| BOOT::|resolveTTUnion| - BOOT::|resolveTTEq| BOOT::|rightBindingPowerOf| - BOOT::/GETOPTION BOOT::|resolveTTCC| - BOOT::|leftBindingPowerOf| BOOT::|stackSemanticError| - BOOT::/GETTRACEOPTIONS BOOT::|resolveTTRed| - BOOT::/TRACELET-PRINT BOOT::|resolveTTSpecial| - BOOT::MONITOR-PRINT BOOT::|compareTT| BOOT::|opWidth| - BOOT::|isConstantId| BOOT::|acceptableTypesToResolve| - BOOT::|resolveTCat1| BOOT::|getConditionsForCategoryOnType| - BOOT::|resolveTTAny| BOOT::|resolveTMOrCroak| - BOOT::|outputMapTran0| BOOT::|spliceTypeListForEmptyMode| - BOOT::MONITOR-EVALTRAN BOOT::|constructTowerT| - BOOT::|throwKeyedMsg| BOOT::|canCoerceExplicit2Mapping| - BOOT::|term1RWall| BOOT::|absolutelyCannotCoerce| - BOOT::|rassocSub| BOOT::|coerceOrConvertOrRetract| - VMLISP:NCONC2 BOOT::|term1RW| BOOT::|coerceOrRetract| - BOOT::|resolveTMTaggedUnion| BOOT::|canCoerceUnion| - BOOT::|acceptableTypesToResolve1| BOOT::|canCoercePermute| - BOOT::|computeTTTranspositions| BOOT::|resolveTM2| - BOOT::|newCanCoerceCommute| BOOT::|coerceIntCommute| - BOOT::|resolveTMRed| BOOT::|coerceInt1| BOOT::|pmatch| - BOOT::/TRACE-1 BOOT::|resolveTMEq| BOOT::|getUnionMode| - BOOT::|resolveTMEq1| BOOT::|isUnionMode| - BOOT::|coerceInt2Union| BOOT::|resolveTMSpecial| - BOOT::|coerceIntFromUnion| VMLISP:REMAINDER - BOOT::|resolveTMRecord| BOOT::|resolveTMUnion| - BOOT::|isFunction| BOOT::|coerceIntAlgebraicConstant| - BOOT::|coerceIntTower| BOOT::|coerceRetract| - BOOT::|compareTypeLists| BOOT::|modifyModeStack| - BOOT::|replaceSymbols| BOOT::|coerceIntTableOrFunction| - BOOT::|isDomainForm| BOOT::|coerceIntSpecial| - BOOT::/TRACELET-2 BOOT::|SubstWhileDesizingList| - BOOT::|coerceIntPermute| BOOT::|getProplist| - BOOT::|coerceBranch2Union| BOOT::ASSOCIATER - BOOT::/TRACELET-1 BOOT::|retractByFunction| - BOOT::|constructT| BOOT::MONITOR-PRINARGS-1 - BOOT::|outputComp| VMLISP:GGREATERP BOOT::|isDomainInScope| - BOOT::|canConvertByFunction| VMLISP:CGREATERP - BOOT::|canCoerceLocal| BOOT::|maxSuperType| - BOOT::|canCoerceTower| BOOT::/UPDATE-1 BOOT::|coerceInt0| - BOOT::|objSetMode| VMLISP:SORTBY BOOT::MONITOR-GETVALUE - VMLISP:|member| BOOT::MONITOR-EVALTRAN1 - BOOT::|coerceIntByMapInner| BOOT::|getConstantFromDomain| - BOOT::|valueArgsEqual?| BOOT::|traceDomainConstructor| - BOOT::|coerceIntByMap| BOOT::|equalZero| - BOOT::|replaceLast| BOOT::|coerceIntTest| VMLISP:ADDOPTIONS - BOOT::|isSubTowerOf| BOOT::|starstarcond| BOOT::|equalOne| - VMLISP:|assoc| VMLISP:SETSIZE BOOT::|evalSharpOne| - VMLISP:EFFACE BOOT::|canCoerceCommute| - BOOT::|clearDependentMaps| BOOT::|constantInDomain?| - VMLISP:EMBED BOOT::|translateMpVars2PVars| - VMLISP:LEXGREATERP VMLISP:RPLPAIR - BOOT::|addDmpLikeTermsAsTarget| VMLISP:HPUT* - BOOT::|genMpFromDmpTerm| VMLISP:STRING2ID-N - BOOT::|htMakeTemplates,substLabel| BOOT::|doDoitButton| - VMLISP:$FINDFILE BOOT::|keyedMsgCompFailure| BOOT::|objNew| - BOOT::|putValue| BOOT::|getAtree| BOOT::|putModeSet| - VMLISP:$SHOWLINE VMLISP:RDROPITEMS BOOT::|bottomUpType| - BOOT::|bottomUpIdentifier| BOOT::|transferPropsToNode| - BOOT::|getArgValue| BOOT::|bottomUpCompilePredicate| - BOOT::|bottomUpPredicate| BOOT::|putTarget| - BOOT::|getMinimalVariableTower| - BOOT::|computeTypeWithVariablesTarget| - BOOT::|removeUnionsAtStart| BOOT::|pushDownOp?| - BOOT::|e02gafSolve,fc| BOOT::|e02gafSolve,fr| - BOOT::|sayIntelligentMessageAboutOpAvailability| - BOOT::|getBasicMode0| BOOT::|mkObjCode| - BOOT::|intCodeGenCOERCE| BOOT::|canCoerceByMap| - BOOT::|canCoerceByFunction| BOOT::|isSubDomain| - BOOT::|absolutelyCanCoerceByCheating| - BOOT::|e04ucfSolve,fa| BOOT::|coerceCommuteTest| - BOOT::|asyGetAbbrevFromComments,fn| BOOT::|asySplit| - BOOT::|asyWrap| BOOT::GETDATABASE - BOOT::|asyAbbreviation,chk| BOOT::|asyTypeJoinPart| - BOOT::|setVector4part3| BOOT::|sublisProp| - BOOT::|setVector12,freeof| BOOT::|setVector4Onecat,form| - BOOT::|asyDisplay| BOOT::ERROR-FORMAT - BOOT::|asyAbbreviation| BOOT::|asyCattranConstructors| - BOOT::|DomainPrint| BOOT::|makeSF| BOOT::|asySimpPred| - BOOT::|setVector0| BOOT::|setVector3| BOOT::DIVIDE2 - BOOT::QUOTIENT2 BOOT::|htpSetName| BOOT::|sort| - BOOT::|defLET2| BOOT::|defLetForm| BOOT::|asyMapping| - BOOT::|defIS1| BOOT::|asySig| BOOT::|defISReverse| - BOOT::|addCARorCDR| BOOT::|defLET1| - BOOT::|asyExportAlist,fn| BOOT::|displayDatabase,fn| - BOOT::|quickAnd| BOOT::|asyCattranSig| BOOT::|asySigTarget| - BOOT::|asyMkSignature| BOOT::|asCategoryParts,build| - BOOT::/COMPINTERP BOOT::|unabbrevRecordComponent| - BOOT::|unabbrev1| BOOT::|makeByteWordVec2| - BOOT::|condAbbrev| BOOT::|unabbrevUnionComponent| - BOOT::|constructorNameConflict| BOOT::SPAD-PRINTTIME - BOOT::|htpLabelType| BOOT::|errorSupervisor| - BOOT::|sayErrorly1| BOOT::INTEGER-BIT BOOT::|chebeval| - BOOT::|rPsi| BOOT::|cpsireflect| BOOT::|cPsi| - BOOT::|BesselJRecur| BOOT::|substFromAlist| - BOOT::|BesselJAsymptOrder| BOOT::|BesselJAsympt| - BOOT::|PsiXotic| BOOT::|f01| BOOT::|brutef01| - BOOT::RBESSELJ BOOT::CPSI BOOT::RPSI BOOT::CHYPER0F1 - BOOT::CBESSELI BOOT::RBESSELI BOOT::CBESSELJ - BOOT::|formatLazyDomainForm| BOOT::|formatLazyDomain| - BOOT::|getDomainSigs1| BOOT::|showDomainsOp1| - BOOT::|devaluateSlotDomain| BOOT::|getDomainRefName| - BOOT::|andDnf| BOOT::|ordUnion| BOOT::|coafAndDnf| - BOOT::|orDel| BOOT::|orDnf| BOOT::|dnfContains,fn| - BOOT::|andReduce| BOOT::|simpBoolGiven| BOOT::|dnfContains| - BOOT::|coafAndCoaf| BOOT::|ordIntersection| - BOOT::|ordSetDiff| BOOT::|coafOrDnf| BOOT::|predCircular| - BOOT::|clearAllSlams,fn| BOOT::|assocCircular| - BOOT::|recurrenceError| BOOT::|countCircularAlist| - BOOT::|displaySetVariableSettings| BOOT::|sayCacheCount| - BOOT::|chebstareval| BOOT::|BesselIAsymptOrder| - BOOT::|horner| BOOT::|BesselKAsymptOrder| BOOT::|cbeta| - BOOT::|PsiAsymptotic| BOOT::|PsiEps| BOOT::|FloatError| - BOOT::|cgammaG| BOOT::|besselIback| BOOT::|rPsiW| - BOOT::|firstNonDelim| BOOT::|chebf01| BOOT::|BesselJ| - BOOT::|BesselI| BOOT::|grepSplit| BOOT::|grepConstruct1| - BOOT::|grepConstructDo| BOOT::|mkGrepPattern1,h| - BOOT::|pfCoerceto| BOOT::|stripOffSegments| - BOOT::|pfFromdom| BOOT::|pfRetractTo| BOOT::|pfRestrict| - BOOT::|mkGrepPattern1,split| BOOT::|testInput2Output| - BOOT::|hyperize| BOOT::|testPrin| BOOT::|grepCombine| - BOOT::|subMatch| BOOT::|bcAbb| BOOT::|lfrinteger| - BOOT::|getFortranType| BOOT::|wl| BOOT::|scanIgnoreLine| - BOOT::|makeVector| BOOT::|htPred2English,fn| BOOT::|posend| - BOOT::|functionAndJacobian,DF| BOOT::|isString?| - BOOT::|bcOpTable| BOOT::|xdrOpen| BOOT::|scanExponent| - BOOT::|scanCheckRadix| BOOT::|coerceUn2E| - BOOT::|inFirstNotSecond| BOOT::|coerceVal2E| - BOOT::|EnumPrint| BOOT::|scanInsert| VMLISP::WRAP - BOOT::|RecordPrint| BOOT::|coerceRe2E| - BOOT::|syIgnoredFromTo| BOOT::|sySpecificErrorHere| - BOOT::|pfTree| BOOT::|makeList| - BOOT::|setVector4Onecat,Supplementaries| BOOT::|pfSuch| - BOOT::|compCategories1| BOOT::|pfParen| BOOT::|pfPretend| - BOOT::|pfComDefinition| BOOT::|pfMLambda| - BOOT::|resolvePatternVars| BOOT::|cons5| - BOOT::|makeMissingFunctionEntry| BOOT::|pfHide| - BOOT::|setVector5| BOOT::|d02kefSolve,fd| - BOOT::|mkVectorWithDeferral| BOOT::|d02kefSolve,fe| - BOOT::|d02gbfSolve,ff| BOOT::|pfBracketBar| - BOOT::|d02gbfSolve,fg| BOOT::|pfIdPos| BOOT::|ProcessCond| - BOOT::|DescendCodeAdd| BOOT::|LookUpSigSlots| - BOOT::|DomainPrintSubst| BOOT::|d02gbfSolve,fc| - BOOT::|partPessimise| BOOT::|d02gbfSolve,fd| - BOOT::|pfBraceBar| BOOT::|sublisProp,inspect| - BOOT::|pfTagged| BOOT::|HasCategory| BOOT::|d02gbfSolve,fa| - BOOT::|HasSignature| BOOT::|d02gbfSolve,fb| - BOOT::|HasAttribute| BOOT::|pfWDeclare| - BOOT::|InvestigateConditions,Conds| BOOT::|pfBracket| - BOOT::|pfDWhere| BOOT::|NewbFVectorCopy| - BOOT::|DescendCodeVarAdd| BOOT::|getDomainView| - BOOT::|pfBrace| BOOT::|d02gafSolve,fe| - BOOT::|d02gafSolve,fc| BOOT::|pfOr| BOOT::|pfAnd| - BOOT::|d03edfSolve,fb| BOOT::|pfTLam| - BOOT::|stringChar2Integer| BOOT::|reshape| - BOOT::|e01dafSolve,h| BOOT::|hashCombine| - BOOT::|e01dafSolve,k| BOOT::|hashType| VMLISP:$REPLACE - VMLISP:UNIONQ BOOT::|spadSysBranch| - BOOT::|htSystemVariables,gn| BOOT::|postFlatten| - BOOT::|gatherGlossLines| VMLISP:|intersection| - BOOT::|postFlattenLeft| BOOT::|postTranSegment| - VMLISP:DEFINE-FUNCTION BOOT::SEGMENT BOOT::|pfTyped| - BOOT::|postScriptsForm| BOOT::|htCheckList| - BOOT::|htSetvarDoneButton| BOOT::|htMakePathKey,fn| - BOOT::|npLeftAssoc| VMLISP:SETDIFFERENCEQ - BOOT::|htMarkTree| BOOT::|pfCollect| BOOT::|pfQualType| - BOOT::|deltaContour| BOOT::ADD-PARENS-AND-SEMIS-TO-LINE - BOOT::|getUniqueSignature| VMLISP:INTERSECTIONQ - BOOT::|AMFCR,redefinedList| BOOT::|putDomainsInScope| - BOOT::INITIAL-SUBSTRING BOOT::|compFormMatch,match| - BOOT::STOREBLANKS BOOT::|compFormMatch| BOOT::ESCAPED - BOOT::PARSEPILES BOOT::|addNewDomain| BOOT::|htDoNothing| - BOOT::|AMFCR,redefined| BOOT::|domainMember| - BOOT::|e04ycfSolve,fb| BOOT::MONITOR-WRITE - BOOT::|htpSetDomainPvarSubstList| BOOT::|coerceByModemap| - BOOT::|htpLabelFilter| BOOT::|profileDisplayOp| - BOOT::|htpLabelSpadType| BOOT::|pfAssign| - BOOT::|htpSetDomainVariableAlist| BOOT::|convertOrCroak| - BOOT::|htpSetDomainConditions| - BOOT::|intersectionEnvironment| BOOT::|pfRule| - BOOT::|coerceExit| BOOT::|resolveTM| - BOOT::|autoCoerceByModemap| BOOT::|coerceExtraHard| - BOOT::|hasType| BOOT::|getConstructorMode| - BOOT::|getConstructorFormOfMode| BOOT::|pfWhere| - BOOT::|coerceHard| BOOT::|npRightAssoc| - BOOT::|coerceSubset| BOOT::|reportCircularCacheStats| - BOOT::|mkCircularCountAlist| BOOT::|pfPushMacroBody| - BOOT::|pfMacro| BOOT::|coerceEasy| BOOT::|keyedSystemError| - BOOT::|chaseInferences| BOOT::|say2PerLineWidth| - BOOT::|getFormModemaps| BOOT::|prEnv,tran| BOOT::|qArg| - BOOT::|npMissingMate| BOOT::|canFit2ndEntry| - BOOT::|sayKeyedMsgLocal| BOOT::|mkUnion| - BOOT::|printEnv,tran| BOOT::|listTruncate| - BOOT::|newHasTest| BOOT::|makeCategoryForm| - BOOT::ADDOPERATIONS BOOT::ASHARPMKAUTOLOADFUNCTION - BOOT::|HGETandCount| BOOT::|consForHashLookup| - BOOT::|sayKeyedMsgAsTeX| BOOT::|SymMemQ| BOOT::|addToSlam| - BOOT::|throwPatternMsg| BOOT::DELDATABASE - BOOT::|sayPatternMsg| BOOT::|getKeyedMsgInDb| - BOOT::|lassocShift| BOOT::|htMakeTemplates| - BOOT::|isKeyedMsgInDb| BOOT::|patternVarsOf1| - BOOT::GETCONSTRUCTOR BOOT::|pfFromDom| BOOT::|symEqual| - BOOT::|domainEqualList| BOOT::SET-LIB-FILE-GETTER - BOOT::|pfApplication| BOOT::|rightJustifyString| - BOOT::|remHashEntriesWith0Count,fn| - BOOT::|globalHashtableStats| BOOT::|lassocShiftQ| - BOOT::|pfWDec| BOOT::|pileForest| BOOT::|canCoerce;| - BOOT::|pileForest1| BOOT::|canCoerce1| BOOT::DAASENAME - BOOT::|pileTree| BOOT::|eqpileTree| BOOT::|pileCtree| - BOOT::|resolveTT;| BOOT::WRAPDOMARGS BOOT::|evalCategory| - BOOT::|replaceSharps| BOOT::|ofCategory| - BOOT::|canCoerceFrom;| BOOT::|canCoerceFrom0| - BOOT::|isEqualOrSubDomain| BOOT::|hasCorrectTarget| - BOOT::MAKE-DATABASES BOOT::|resolveTT1| - BOOT::|applyWithOutputToString| BOOT::|isDomainSubst,fn| - BOOT::|isDomainSubst,findSub| BOOT::|insertModemap| - BOOT::|makeBigFloat| BOOT::REDUCTION-PRINT - BOOT::|mkAlistOfExplicitCategoryOps,fn| BOOT::REMOVER - BOOT::STACK-LOAD BOOT::ESCAPE-KEYWORDS BOOT::|allLASSOCs| - BOOT::MAKE-PARSE-FUNCTION1 BOOT::|pairList| - BOOT::INITIAL-SUBSTRING-P BOOT::|finalizeDocumentation,fn| - BOOT::|formatOpSignature| BOOT::|sayKeyedMsg| - BOOT::|transDocList| BOOT::MAKE-PARSE-FUNC-FLATTEN - BOOT::|recordAttributeDocumentation| - BOOT::|recordDocumentation| - BOOT::|recordSignatureDocumentation| BOOT::|macroExpand| - BOOT::|checkRewrite| BOOT::|checkComments| - BOOT::|checkExtract| BOOT::|checkTrim| - BOOT::|spadSysChoose| BOOT::|testError| - BOOT::|spadtestValueHook| BOOT::|checkIsValidType,fn| - BOOT::|transDoc| BOOT::|checkIndentedLines| - BOOT::SAYBRIGHTLY1 BOOT::|pvarPredTran| BOOT::|mkAbbrev| - BOOT::|addSuffix| BOOT::|processPackage,opt| - BOOT::|subTree| BOOT::|mkRepititionAssoc,mkRepfun| - BOOT::|setPackageLocals| BOOT::|UnionPrint| - BOOT::|JoinInner| BOOT::|objNewWrap| - BOOT::|coerceByFunction| BOOT::|MappingPrint| - BOOT::|parseTypeEvaluateArgs| BOOT::|createEnum| - BOOT::|parseTranCheckForRecord| BOOT::|installConstructor| - BOOT::|AncestorP| BOOT::|SourceLevelSubset| - BOOT::|JoinInner,AddPredicate| BOOT::|mkAnd| BOOT::|mkOr| - BOOT::|SigListUnion| BOOT::|PredImplies| - BOOT::|DescendantP| BOOT::|mkOr2| BOOT::|SigOpsubsume| - BOOT::|SourceLevelSubsume| BOOT::|compMakeCategoryObject| - BOOT::|MachineLevelSubset| BOOT::|MachineLevelSubsume| - BOOT::|SigListOpSubsume| BOOT::|SigEqual| - BOOT::|SigListMember| BOOT::|CategoryPrint| BOOT::|mkAnd2| - BOOT::|categoryParts,build| - BOOT::|catPairUnion,addConflict| - BOOT::|clearCategoryTable1| BOOT::|parseCases,casefn| - BOOT::|hasCat| BOOT::|superSub| BOOT::|encodeCategoryAlist| - BOOT::|simpCategoryOr| BOOT::|tempExtendsCat| - BOOT::CONVERSATION1 BOOT::|addDomainToTable| - BOOT::|mkCategoryOr| BOOT::/EMBED-Q - BOOT::|formalSubstitute| - BOOT::|updateCategoryTableForDomain| - BOOT::|simpCatHasAttribute| BOOT::|testExtend| - BOOT::|mergeOr| BOOT::|newHasTest,fn| BOOT::|simpOrUnion1| - BOOT::|updateCategoryTable| BOOT::|substDomainArgs| - BOOT::|NRTreplaceLocalTypes| BOOT::|dcOpPrint| - BOOT::|predicateBitIndex,pn| BOOT::|augmentPredCode| - BOOT::|mungeAddGensyms| BOOT::|htSayExpose| - BOOT::|makeCompactSigCode| BOOT::|evalDomainOpPred,process| - BOOT::|makeGoGetSlot| BOOT::|dbShowOpHeading| - BOOT::|makePrefixForm| BOOT::|dbShowOperationLines| - BOOT::|buildBitTable,fn| BOOT::|makeCompactDirect1| - BOOT::|augmentPredVector| BOOT::|simpOrDumb| - BOOT::|dbReduceByForm| BOOT::|dbContrivedForm| - BOOT::|dbReduceByOpSignature| BOOT::|dcOpLatchPrint| - BOOT::|reduceByGroup| BOOT::|dbGetCondition| - BOOT::|dbGetOrigin| BOOT::|koCatOps| BOOT::|modemap2Sig| - BOOT::|substInOrder| BOOT::|pairlis| BOOT::|getDcForm| - BOOT::|koCatAttrsAdd| BOOT::|getSubstInsert| - BOOT::|integerAssignment2Fortran1| BOOT::|koOps,fn| - BOOT::|getAllModemapsFromDatabase| BOOT::|koOps,merge| - BOOT::|exp2FortOptimizeCS1,pushCsStacks| - BOOT::|fortFormatTypes| BOOT::|segment2| BOOT::|whoUses| - BOOT::|fortranifyIntrinsicFunctionName| - BOOT::|expression2Fortran1| BOOT::|dispfortarrayexp| - BOOT::|fortFormatIfGoto| BOOT::|koCatAttrs| - BOOT::|dbGetContrivedForm| BOOT::|dispfortexpj| - BOOT::|assignment2Fortran1| BOOT::|beenHere| - BOOT::|dispfortexpf| BOOT::|htSayConstructor| - BOOT::|stringPrefix?| VMLISP::PUTINDEXTABLE - VMLISP::WRITE-INDEXTABLE BOOT::|NRTsetVector4Part2| - BOOT::|consDomainName| BOOT::|NRTencode| - BOOT::|consDomainForm| BOOT::|deltaTran| BOOT::|consSig| - BOOT::|NRTaddToSlam| BOOT::|deepChaseInferences| - BOOT::|c06gsfSolve,g| BOOT::|c06gsfSolve,f| - BOOT::|NRTdescendCodeTran| BOOT::|mergeAppend| - BOOT::|NRTgetLocalIndex1| BOOT::|vectorLocation| - BOOT::|c06frfSolve,fy| BOOT::|c06frfSolve,gy| - BOOT::|c06frfSolve,fx| BOOT::|c06frfSolve,gx| - BOOT::|c06gqfSolve,g| BOOT::|c06gqfSolve,f| - BOOT::|c06fpfSolve,f| BOOT::|c06fpfSolve,g| - BOOT::|c06fqfSolve,f| BOOT::|c06fqfSolve,g| - BOOT::|c06fufSolve,fy| BOOT::|c06fufSolve,gy| - BOOT::|c06fufSolve,fx| BOOT::|c06fufSolve,gx| - BOOT:|ListIsLength?| BOOT:|ListMemberQ?| BOOT:|ListMember?| - BOOT:|ListRemoveQ| BOOT:|ListNRemoveQ| BOOT:|ListUnion| - BOOT:|ListUnionQ| BOOT:|ListIntersection| - BOOT:|ListIntersectionQ| BOOT:|ListAdjoin| - BOOT:|ListAdjoinQ| BOOT:|AlistAssoc| BOOT:|AlistRemove| - BOOT:|AlistAssocQ| BOOT:|AlistRemoveQ| BOOT:|AlistAdjoinQ| - BOOT:|AlistUnionQ| BOOT::|rePackageTran| - BOOT::|ncINTERPFILE| BOOT:|TableUnset| - BOOT::|updateSymbolTable| FOAM:|printDFloat| - FOAM:|printSFloat| FOAM:|fputs| FOAM:|printBInt| - FOAM:|fputc| FOAM:|printSInt| FOAM:|printString| - FOAM:|printChar| BOOT::|incAppend| BOOT::|segment1| - BOOT::|intersectionContour,unifiable| BOOT::|getStatement| - BOOT::|deltaContour,contourDifference| - BOOT::|makeCommonEnvironment,makeSameLength| BOOT::DELLASOS - BOOT::|addContour,fn| BOOT::|fortranifyFunctionName| - BOOT::|displayOpModemaps| BOOT::|fortFormatTypes1| - BOOT::|f02aefSolve,l| FOAM:|PtrMagicEQ| BOOT::|hasOption| - BOOT::|intersectionContour| BOOT::|commandErrorIfAmbiguous| - BOOT::|intersectionContour,computeIntersection| - BOOT::|f04adfSolve,f| BOOT::|f04adfSolve,g| - BOOT::|makeCommonEnvironment| BOOT::|makeLiteral| - BOOT::|isLiteral| BOOT::|f04mcfSolve,f| - BOOT::|f04mcfSolve,g| BOOT::|f04qafSolve,h| BOOT::|mapInto| - BOOT::|f04qafSolve,k| BOOT::|stringMatches?| - BOOT::|basicMatch?| BOOT::|optionError| - BOOT::|displayProperties| BOOT::|mkErrorExpr,highlight| - BOOT::|f04adfSolve,fb| BOOT::|mkErrorExpr,highlight1| - BOOT::|coerce| BOOT::|numOfOccurencesOf| BOOT::|sublisR| - BOOT::|compMapCond''| BOOT::|getAndSay| - BOOT::|intersectionContour,interProplist| BOOT::|position| - BOOT::|satDownLink| BOOT::|getmodeOrMapping| - BOOT::|intersectionContour,compare| - BOOT::|intersectionContour,modeCompare| - BOOT::|getAbbreviation| BOOT::|koAttrs| - BOOT::|GEQNSUBSTLIST,GSUBSTinner| BOOT::|isCategoryForm| - BOOT::|resolve| BOOT::|convert| BOOT::|flatten| - BOOT::|f04jgfSolve,f| BOOT::|npsynonym| - BOOT::|f04jgfSolve,g| BOOT::|getImports,import| - BOOT::|f04arfSolve,f| BOOT::|f04arfSolve,g| - BOOT::|modeEqual| BOOT::|f04mbfSolve,l| - BOOT::|displayWarning| BOOT::|f04mbfSolve,o| - BOOT::|addContour| BOOT::|f04asfSolve,f| - BOOT::|f04asfSolve,g| BOOT::|deleteAssoc| - BOOT::|purgeNewConstructorLines| - BOOT::|filterListOfStrings| BOOT::|asyDocumentation,fn| - BOOT::|satisfiesRegularExpressions| BOOT::|displayProplist| - BOOT::|transformAndRecheckComments| - BOOT::|displaySemanticError| BOOT::|asySignature| - BOOT::|f04mbfSolve,h| BOOT::|asyTypeUnitDeclare| - BOOT::|f04mbfSolve,k| BOOT::|asyCatSignature| - BOOT::|dbSpreadComments| BOOT::|computeAncestorsOf| - BOOT::|descendantsOf| BOOT::|f04atfSolve,f| - BOOT::|f04atfSolve,g| BOOT::|f04adfSolve,gb| - BOOT::|reportOpsFromLisplib| BOOT::|f07fdfSolve,fa| - BOOT::|f07fdfSolve,fb| BOOT::|f07aefSolve,fa| - BOOT::|f07aefSolve,faa| BOOT::|f07adfSolve,fa| - BOOT::|f07adfSolve,fb| BOOT::|childArgCheck| - BOOT::|f07aefSolve,fb| BOOT::POSN1 BOOT::|assocCar| - BOOT::|childAssoc| BOOT::|f07fefSolve,fb| - BOOT::|f07fefSolve,fbb| BOOT::|ancestorsAdd| - BOOT::|f07fefSolve,fa| BOOT::|quickOr| - BOOT::|f07fefSolve,faa| BOOT::|f07aefSolve,fbb| - BOOT::|explodeIfs,gn| BOOT::|f01qdfSolve,fa| - BOOT::|f01qdfSolve,ga| BOOT::|dbGatherDataImplementation| - BOOT::|dbMakeSignature| BOOT::|dbExposed?| - BOOT::|getRegistry| BOOT::|opAlistCount| - BOOT::|f01rdfSolve,gb| BOOT::|bcStarSpaceOp| - BOOT::|evalDomainOpPred,convert| BOOT::|f02aefSolve,f| - BOOT:|Sort| BOOT::|f02aefSolve,g| BOOT:|SortInPlace| - BOOT::|evalDomainOpPred,evpred| BOOT::|f02aefSolve,h| - BOOT::|evalDomainOpPred,evpred1| BOOT::|f02abfSolve,f| - BOOT::|f02abfSolve,g| BOOT::|f02aafSolve,f| - BOOT::|f02aafSolve,g| BOOT::|evalDomainOpPred| - BOOT::|getDomainOpTable,memq| BOOT::|f02ajfSolve,h| - BOOT::|f02ajfSolve,l| BOOT::|superMatch?| - BOOT::|f02affSolve,f| BOOT::|f02affSolve,g| - BOOT:|ByteFileWriteLine| BOOT::NREVERSE-N - BOOT::|f02adfSolve,h| BOOT::|f02adfSolve,l| - FOAM:|fiSetDebugger| BOOT::TRUNCLIST-1 - BOOT::|f02bjfSolve,h| BOOT::-REDUCE-OP - BOOT::|f02bjfSolve,l| BOOT::OR2 BOOT::|f02axfSolve,h| - BOOT::AND2 BOOT::|f02axfSolve,l| BOOT::|f02ajfSolve,f| - BOOT::REPEAT-TRAN BOOT::|f02ajfSolve,g| BOOT::MKPFFLATTEN - BOOT::|f02akfSolve,h| BOOT:|StreamSetPosition| - BOOT::|f02akfSolve,l| BOOT::MKPF1 BOOT::|f02axfSolve,f| - BOOT::|f02axfSolve,g| BOOT::-REPEAT BOOT::|f02xefSolve,fb| - BOOT::|CONTAINED,EQUAL| BOOT::|f02xefSolve,gb| - BOOT::|CONTAINED,EQ| BOOT::|f02awfSolve,h| - BOOT::|f02awfSolve,l| BOOT::|kPageArgs| - BOOT::|dbSubConform| BOOT::|f02akfSolve,f| - BOOT::|f02akfSolve,g| BOOT:|PathnameWithType| - BOOT::MARKHASH BOOT:|PathnameWithDirectory| - BOOT::|f02bjfSolve,f| BOOT::|f02bjfSolve,g| - BOOT::|f02adfSolve,f| BOOT::|f02adfSolve,g| BOOT::|,MIN| - BOOT:|PathnameWithinDirectory| - BOOT::|domainDescendantsOf,jfn| - BOOT::|domainDescendantsOf,catScreen| BOOT::|,MAX| - BOOT:|PathnameWithinOsEnvVar| BOOT::LEXLESSEQP - BOOT::|,DIFFERENCE| BOOT::GLESSEQP BOOT::MAKE-INIT-VECTOR - BOOT::|,TIMES| BOOT::|,PLUS| BOOT::|f02awfSolve,f| - BOOT::|f02awfSolve,g| BOOT::SUBB BOOT::|getCDTEntry| - BOOT::|f02xefSolve,fa| BOOT::|f02xefSolve,ga| - BOOT::|stuffSlots| BOOT::|domainDescendantsOf| BOOT::DO_LET - BOOT::|f02agfSolve,f| BOOT:|CsetMember?| - BOOT::|f02agfSolve,g| BOOT::|measureCommon,fn| - BOOT:|CsetUnion| BOOT::|f02wefSolve,fb| - BOOT::|f02wefSolve,gb| BOOT::|deleteWOC| - BOOT::|f02bbfSolve,f| BOOT::|next| BOOT::|f02bbfSolve,g| - BOOT::|suffix?| BOOT::|list2LongerVec| - BOOT::|f02wefSolve,fa| BOOT::|mkCurryFun| - BOOT::|f02wefSolve,ga| BOOT::|logicalMatch?| - BOOT::|subCopy0| BOOT::|patternCheck,wild| - BOOT:|StringFromToEnd| BOOT::|beforeAfter| - BOOT::|deepSubCopyOrNil| BOOT::|patternCheck,pos| - BOOT:|StringGreater?| BOOT::|deepSubCopy0| BOOT::|prefix?| - BOOT:|StringPrefix?| BOOT::|subCopyOrNil| - BOOT::|htpSetInputAreaAlist| BOOT::|termRW1| - BOOT::|processInteractive| BOOT::|termRW| - BOOT::|maskMatch?| BOOT::|tdAdd| BOOT::|filterByTopic| - BOOT::|addTopic2Documentation| BOOT::|addStats| - BOOT::|transferCodeCon| BOOT::|compileCases| - BOOT::|transferClassCodes| BOOT::|addArgumentConditions| - BOOT::|NRTassignCapsuleFunctionSlot| - BOOT::|reportSpadTrace| BOOT::BVEC-NOR BOOT::BVEC-NAND - BOOT::|addDomain| BOOT::|giveFormalParametersValues| - BOOT::PRINT-DEFUN BOOT::|augmentTraceNames| - BOOT::|stripOffSubdomainConditions| - BOOT::|untraceDomainLocalOps| BOOT::TRANSLABEL1 - BOOT::|getOption| BOOT::TRANSLABEL BOOT::|traceOptionError| - BOOT::GET-GLIPH-TOKEN BOOT::|funfind,LAM| - BOOT::|mergePathnames| BOOT::|subTypes| BOOT::|lassocSub| - BOOT::|dbWordFrom| BOOT::|commandUserLevelError| - BOOT::|applyGrep| BOOT::|htButtonOn?| - BOOT::|generalSearchString| BOOT::|zsystemdevelopment1| - BOOT::|grepForAbbrev| BOOT::|match?| BOOT::|commandError| - BOOT::|optionUserLevelError| BOOT::|firstDelim| BOOT::/READ - BOOT::|kciReduceOpAlist| BOOT::|dbInfoTran| - BOOT::|koPageInputAreaUnchanged?| BOOT::|dbInfoWrapOrigin| - BOOT::|insert| BOOT::|dbInfoSigMatch| BOOT::|ancestorsOf| - BOOT::|compIterator| BOOT::|getIdentity| - BOOT::|augmentHasArgs| BOOT::|processInteractive1| - BOOT::|recordAndPrint| BOOT::|interpretTopLevel| - BOOT::|substituteSegmentedMsg| - BOOT::|dbSpecialExpandIfNecessary| BOOT::|sameUnionBranch| - BOOT::|htpSetPageDescription| BOOT::|testBitVector| - BOOT::|dbShowConsDoc| BOOT::|printTypeAndTimeNormal| - BOOT::|satTypeDownLink| BOOT::|printTypeAndTimeSaturn| - BOOT::|mkDocLink| BOOT::|addParameterTemplates| - BOOT::|hasPair| BOOT::|htpAddToPageDescription| - BOOT::|getAliasIfTracedMapParameter| BOOT::|pfAbSynOp?| - BOOT::|printTypeAndTime| BOOT::|phReportMsgs| - BOOT::|untraceDomainConstructor,keepTraced?| - BOOT::|htpButtonValue| BOOT::|htSayConstructorName| - BOOT::|getMapSig| BOOT::|spadTrace,isTraceable| - BOOT::|removeOption| BOOT::|screenLocalLine| - BOOT::|undoSteps| BOOT::|agg| BOOT::|diffAlist| - BOOT::|undoSingleStep| BOOT::|htSayBind| - BOOT::|bcConstructor| BOOT::|checkArgs| - BOOT::SPADTAGS-FROM-DIRECTORY BOOT::|matSuperList1| - BOOT::|getBindingPowerOf| BOOT::|matSubList1| - BOOT::|matWList1| BOOT::NAG-FILES BOOT::|htpLabelDefault| - BOOT::GET-NAG-CHAPTER BOOT::|setNAGBootAutloadProperties| - BOOT::|htpLabelErrorMsg| BOOT::|setBootAutloadProperties| - BOOT::|setUpDefault| BOOT::|setBootAutoLoadProperty| - BOOT::|mkBootAutoLoad| BOOT::|matWList| VMLISP::ECQEXP - BOOT::|npTypedForm1| BOOT::|htMakeDoitButton| BOOT::|prnd| - BOOT::|reportAO| BOOT::BVEC-XOR BOOT::BVEC-OR - VMLISP::DCQEXP BOOT::BVEC-AND BOOT::BVEC-GREATER - BOOT::BVEC-EQUAL BOOT::BVEC-CONCAT BOOT::|stringLE1| - BOOT::BVEC-MAKE-FULL BOOT::|scylla| BOOT::|mkSuperSub| - BOOT::|EqualBarGensym| BOOT::|pfReturn| BOOT::|pfSpread| - BOOT::|npTypedForm| BOOT::|after| - BOOT::|optCatch,changeThrowToGo| - BOOT::|optCatch,hasNoThrows| - BOOT::|optCatch,changeThrowToExit| - BOOT::|optimizeFunctionDef,replaceThrowByReturn| - BOOT::|optCallSpecially,lookup| BOOT::|EqualBarGensym,fn| - BOOT::|pfLp| BOOT::|optimizeFunctionDef,fn| - BOOT::|htpSetRadioButtonAlist| BOOT::|pfWrong| - BOOT::|pfForin| BOOT::|pfDefinition| BOOT::|pfReturnTyped| - BOOT::|pfLam| BOOT::|pfIfThenOnly| BOOT::|pfExit| - BOOT::|printNamedStatsByProperty| BOOT::|Delay| - BOOT::|initializeTimedNames| BOOT::|searchTailEnv| - BOOT::|searchCurrentEnv| BOOT::|search| - BOOT::|e04ycfSolve,fc| BOOT::|insertWOC,fn| BOOT::|mkObj| - VMLISP:|union| BOOT::|coerceInt| BOOT::|deleteAssocWOC| - BOOT::|e04nafSolve,fa| BOOT::|deleteAssocWOC,fn| - BOOT::|e04nafSolve,fb| BOOT::|deleteLassoc| BOOT::REMALIST - BOOT::|sublisNQ| BOOT::|BooleanEquality| - BOOT::|sublisNQ,fn| BOOT::|modemapsHavingTarget| - BOOT::|PPtoFile| BOOT::|positionInVec| - BOOT::|e04mbfSolve,fa| BOOT::|e04mbfSolve,fb| - BOOT::|mkIterVarSub| BOOT::|lazyOldAxiomDomainDevaluate| - BOOT::|lazyOldAxiomDomainHashCode| BOOT::|declare| - BOOT::|declareMap| BOOT::|concat1| BOOT::|upfreeWithType| - BOOT::|uplocalWithType| BOOT::|deleteAll| - BOOT::|oldAxiomCategoryDevaluate| BOOT::|SExprToDName| - BOOT::|oldAxiomPreCategoryDevaluate| - BOOT::|checkForFreeVariables| BOOT::|f01rdfSolve,fa| - BOOT::|f01rdfSolve,ga| BOOT::|oldAxiomDomainDevaluate| - BOOT::|newHasCategory| BOOT::|orderedDefaults| - BOOT::|f01rdfSolve,fb| BOOT::|attributeNthParent| BOOT:DROP - BOOT::|oldAxiomDomainHashCode| BOOT::|attributeHashCode| - BOOT::|oldAxiomPreCategoryHashCode| - BOOT::|attributeDevaluate| BOOT::|f01refSolve,fa| - BOOT::|f01refSolve,ga| BOOT::|oldAxiomCategoryHashCode| - BOOT:APPLYR BOOT::|f01qcfSolve,f| BOOT::|evalLET| - BOOT::|f01qcfSolve,g| BOOT::|domainEqual| BOOT:STRINGSUFFIX - BOOT::|f01qefSolve,fa| BOOT::|compileIs| - BOOT::|f01qefSolve,ga| BOOT::|f01rcfSolve,fa| - BOOT::|f01rcfSolve,ga| BOOT:CONVERSATION - BOOT::|evalLETchangeValue| BOOT::|isPatternMatch| - BOOT::|seteltable| BOOT::|intSayKeyedMsg| - BOOT::|upLispCall| BOOT::|genIFvalCode| BOOT::|evalLETput| - BOOT::|f01qdfSolve,fb| BOOT::|f01qdfSolve,gb| - BOOT::|intloopProcessString| BOOT::|ncloopDQlines| - BOOT::|intloopInclude1| BOOT::|intloopInclude| - BOOT::|upIFgenValue| BOOT::|putPvarModes| - BOOT::|ncloopPrefix?| BOOT::|intloopPrefix?| - BOOT::|phIntReportMsgs| BOOT::|processMsgList| - BOOT::|phParse| BOOT:TAKE BOOT::|isPatMatch| - BOOT::|intloopReadConsole| BOOT::|streamChop| - BOOT::|inclFname| BOOT::|incDrop| BOOT:SETANDFILE - BOOT:PUSH-REDUCTION BOOT::|inclmsgFileCycle| - BOOT::|assertCond| BOOT::|incActive?| BOOT:TAILFN - BOOT:RPLACW BOOT::|incStream| BOOT::|inclHandleSay| - BOOT::|inclHandleWarning| BOOT:FLAGP - BOOT::|inclHandleError| BOOT:?ORDER BOOT::|incRenumberLine| - BOOT::|incRenumberItem| BOOT::|lnSetGlobalNum| BOOT:S* - FOAM::ALLOC-PROG-INFO BOOT::|liftCond,lcAnd| - BOOT::|actOnInfo| BOOT::|mkJoin| BOOT::|plural| - BOOT::|e04ucfSolve,fb| BOOT:MAKENEWOP BOOT::|has| - BOOT::|containedRight| BOOT::|hashTypeForm| BOOT:CONTAINED - BOOT::|oldAxiomPreCategoryParents| - BOOT::|oldAxiomCategoryDefaultPackage| BOOT:POINTW - BOOT::|linearFormatForm| BOOT::|newHasAttribute| - BOOT::|oldAxiomCategoryParentCount| - BOOT::|findSubstitutionOrder?,fn| BOOT::|app2StringConcat0| - BOOT::|formDecl2String| BOOT::|sayLooking1| - BOOT::|formJoin1| BOOT::|app2StringWrap| BOOT:S- - BOOT::|mkLessOrEqual| BOOT::|formArguments2String| - BOOT::|putValueValue| BOOT::|asTupleNew| BOOT::|objSetVal| - BOOT::|objNewCode| FOAM-USER::H-ERROR BOOT::|displayRule| - BOOT::|coerceInteractive| BOOT::|canMakeTuple| - FOAM-USER::H-STRING BOOT:CARCDREXPAND - BOOT::|formatOpSymbol| FOAM-USER::H-INTEGER - BOOT::|addPatternPred| BOOT::|interpMap| BOOT::|mkLocalVar| - BOOT:/EMBED-1 BOOT::|findLocalVars1| - BOOT::|queryUserKeyedMsg| BOOT::|mkFreeVar| - BOOT::|findLocalVars|)) -(PROCLAIM - '(FTYPE (FUNCTION NIL FIXNUM) BOOT::HEAPELAPSED - BOOT:|OsProcessNumber| BOOT::KCL-OS-PROCESS-NUMBER)) -(PROCLAIM - '(FTYPE (FUNCTION NIL (VALUES T T)) BOOT::MAKE-CLOSEDFN-NAME - BOOT::|genVariable| BOOT::|genSomeVariable| - BOOT::|genDomainVar| BOOT:GENVAR)) diff --git a/src/interp/intint.lisp.pamphlet b/src/interp/intint.lisp index d132ad87..d08cc8fd 100644 --- a/src/interp/intint.lisp.pamphlet +++ b/src/interp/intint.lisp @@ -1,18 +1,7 @@ -\documentclass{article} -\usepackage{axiom} -\begin{document} -\title{\$SPAD/src/interp intint.lisp} -\author{Timothy Daly} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{License} -<<license>>= ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are @@ -42,9 +31,6 @@ ;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -@ -<<*>>= -<<license>> (in-package "BOOT") @@ -130,13 +116,13 @@ (defun |setCurrentLine| (s) (setq |$currentLine| - (cond ((null |$currentLine|) s) - ((stringp |$currentLine|) - (cons |$currentLine| - (if (stringp s) (cons s nil) s))) - (t (rplacd (last |$currentLine|) - (if (stringp s) (cons s nil) s)) - |$currentLine|)))) + (cond ((null |$currentLine|) s) + ((stringp |$currentLine|) + (cons |$currentLine| + (if (stringp s) (cons s nil) s))) + (t (rplacd (last |$currentLine|) + (if (stringp s) (cons s nil) s)) + |$currentLine|)))) (defun |intnplisp| (s) (setq |$currentLine| s) @@ -160,9 +146,3 @@ ;;(defun |readingFile?| () ;; |$ReadingFile|) -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/interp/macros.lisp.pamphlet b/src/interp/macros.lisp index 2799b0e9..b46f1864 100644 --- a/src/interp/macros.lisp.pamphlet +++ b/src/interp/macros.lisp @@ -1,112 +1,7 @@ -%% Oh Emacs, this is a -*- Lisp -*- file despite apperance. -\documentclass{article} -\usepackage{axiom} - -\title{\File{src/interp/macros.lisp} Pamphlet} -\author{Timothy Daly} - -\begin{document} -\maketitle - -\begin{abstract} -\end{abstract} - -\tableofcontents -\eject - -\begin{verbatim} -PURPOSE: Provide generally useful macros and functions for MetaLanguage - and Boot code. Contents are organized along Common Lisp datatype - lines, with sections numbered to match the section headings of the - Common Lisp Reference Manual, by Guy Steele, Digital Press, 1984, - Digital Press Order Number EY-00031-DP. This way you can - look up the corresponding section in the manual and see if - there isn't a cleaner and non-VM-specific way of doing things. - -\end{verbatim} - -\section{Performance change} - -Camm has identified a performace problem during compiles. There is -a loop that continually adds one element to a vector. This causes -the vector to get extended by 1 and copied. These patches fix the -problem since vectors with fill pointers don't need to be copied. - -These cut out the lion's share of the gc problem -on this compile. 30min {\tt ->} 7 min on my box. There is still some gc -churning in cons pages due to many calls to 'list' with small n. One -can likely improve things further with an appropriate (declare -(:dynamic-extent ...)) in the right place -- gcl will allocate such -lists on the C stack (very fast). - -\subsection{lengthenvec} - -The original code was: -\begin{verbatim} -(defun lengthenvec (v n) - (if (adjustable-array-p v) (adjust-array v n) - (replace (make-array n) v))) -\end{verbatim} - -<<lengthenvec>>= -(defun lengthenvec (v n) - (if - (and (array-has-fill-pointer-p v) (adjustable-array-p v)) - (if - (>= n (array-total-size v)) - (adjust-array v (* n 2) :fill-pointer n) - (progn - (setf (fill-pointer v) n) - v)) - (replace (make-array n :fill-pointer t) v))) - -@ - -\subsection{make-init-vector} - -The original code was -\begin{verbatim} -(defun make-init-vector (n val) (make-array n :initial-element val)) -\end{verbatim} - -<<make-init-vector>>= -(defun make-init-vector (n val) - (make-array n :initial-element val :fill-pointer t)) - -@ - -\section{DEFUN CONTAINED} - -The [[CONTAINED]] predicate is used to walk internal structures -such as modemaps to see if the $X$ object occurs within $Y$. One -particular use is in a function called [[isPartialMode]] (see -i-funsel.boot) to decide -if a modemap is only partially complete. If this is true then the -modemap will contain the constant [[$EmptyMode]]. So the call -ends up being [[CONTAINED |$EmptyMode| Y]]. -<<DEFUN CONTAINED>>= -#-:CCL -(DEFUN CONTAINED (X Y) - (if (symbolp x) - (contained\,eq X Y) - (contained\,equal X Y))) - -(defun contained\,eq (x y) - (if (atom y) (eq x y) - (or (contained\,eq x (car y)) (contained\,eq x (cdr y))))) - -(defun contained\,equal (x y) - (cond ((atom y) (equal x y)) - ((equal x y) 't) - ('t (or (contained\,equal x (car y)) (contained\,equal x (cdr y)))))) - -@ - -\section{License} - -<<license>>= ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are @@ -136,9 +31,27 @@ ends up being [[CONTAINED |$EmptyMode| Y]]. ;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -@ -<<*>>= -<<license>> +;; PURPOSE: Provide generally useful macros and functions for MetaLanguage +;; and Boot code. Contents are organized along Common Lisp datatype +;; lines, with sections numbered to match the section headings of the +;; Common Lisp Reference Manual, by Guy Steele, Digital Press, 1984, +;; Digital Press Order Number EY-00031-DP. This way you can +;; look up the corresponding section in the manual and see if +;; there isn't a cleaner and non-VM-specific way of doing things. + + +;; Camm has identified a performace problem during compiles. There is +;; a loop that continually adds one element to a vector. This causes +;; the vector to get extended by 1 and copied. These patches fix the +;; problem since vectors with fill pointers don't need to be copied. +;; +;; These cut out the lion's share of the gc problem +;; on this compile. 30min {\tt ->} 7 min on my box. There is still some gc +;; churning in cons pages due to many calls to 'list' with small n. One +;; can likely improve things further with an appropriate (declare +;; (:dynamic-extent ...)) in the right place -- gcl will allocate such +;; lists on the C stack (very fast). + (import-module "sys-macros") (in-package "BOOT") @@ -302,8 +215,8 @@ ends up being [[CONTAINED |$EmptyMode| Y]]. (defun |delete| (item sequence) (cond ((symbolp item) (remove item sequence :test #'eq)) - ((and (atom item) (not (arrayp item))) (remove item sequence)) - (T (remove item sequence :test #'equalp)))) + ((and (atom item) (not (arrayp item))) (remove item sequence)) + (T (remove item sequence :test #'equalp)))) @@ -349,7 +262,7 @@ ends up being [[CONTAINED |$EmptyMode| Y]]. "Returns a list of the first N elements of list X." (COND ((EQL N 0) NIL) ((> N 0) (CONS (CAR X) (TAKE (1- N) (CDR X)))) - ((>= (setq m (+ (length x) N)) 0) (drop m x)) + ((>= (setq m (+ (length x) N)) 0) (drop m x)) ((CROAK (list "Bad args to DROP" N X))))) (DEFUN NUMOFNODES (X) (if (ATOM X) 0 (+ 1 (NUMOFNODES (CAR X)) (NUMOFNODES (CDR X))))) @@ -401,7 +314,21 @@ ends up being [[CONTAINED |$EmptyMode| Y]]. ; 15.5 Using Lists as Sets -<<DEFUN CONTAINED>> +#-:CCL +(DEFUN CONTAINED (X Y) + (if (symbolp x) + (contained\,eq X Y) + (contained\,equal X Y))) + +(defun contained\,eq (x y) + (if (atom y) (eq x y) + (or (contained\,eq x (car y)) (contained\,eq x (cdr y))))) + +(defun contained\,equal (x y) + (cond ((atom y) (equal x y)) + ((equal x y) 't) + ('t (or (contained\,equal x (car y)) (contained\,equal x (cdr y)))))) + (DEFUN PREDECESSOR (TL L) "Returns the sublist of L whose CDR is EQ to TL." @@ -434,16 +361,16 @@ ends up being [[CONTAINED |$EmptyMode| Y]]. (DEFUN ADDASSOC (X Y L) "Put the association list pair (X . Y) into L, erasing any previous association for X" (COND ((ATOM L) - (CONS (CONS X Y) L)) + (CONS (CONS X Y) L)) ((EQUAL X (CAAR L)) - (CONS (CONS X Y) (CDR L))) + (CONS (CONS X Y) (CDR L))) ((CONS (CAR L) (ADDASSOC X Y (CDR L)))))) (DEFUN DELLASOS (U V) "Remove any assocation pair (U . X) from list V." (COND ((ATOM V) NIL) ((EQUAL U (CAAR V)) - (CDR V)) + (CDR V)) ((CONS (CAR V) (DELLASOS U (CDR V)))))) @@ -451,11 +378,11 @@ ends up being [[CONTAINED |$EmptyMode| Y]]. (DEFUN LASSOC (X Y) "Return the datum associated with key X in association list Y." (PROG NIL - A - (COND ((ATOM Y) - (RETURN NIL)) + A + (COND ((ATOM Y) + (RETURN NIL)) ((EQUAL (CAAR Y) X) - (RETURN (CDAR Y))) ) + (RETURN (CDAR Y))) ) (SETQ Y (CDR Y)) (GO A))) @@ -463,11 +390,11 @@ ends up being [[CONTAINED |$EmptyMode| Y]]. (DEFUN |rassoc| (X Y) "Return the key associated with datum X in association list Y." (PROG NIL - A - (COND ((ATOM Y) - (RETURN NIL)) + A + (COND ((ATOM Y) + (RETURN NIL)) ((EQUAL (CDAR Y) X) - (RETURN (CAAR Y))) ) + (RETURN (CAAR Y))) ) (SETQ Y (CDR Y)) (GO A))) @@ -500,8 +427,20 @@ ends up being [[CONTAINED |$EmptyMode| Y]]. ; 17.6 Changing the Dimensions of an Array -<<lengthenvec>> -<<make-init-vector>> +(defun lengthenvec (v n) + (if + (and (array-has-fill-pointer-p v) (adjustable-array-p v)) + (if + (>= n (array-total-size v)) + (adjust-array v (* n 2) :fill-pointer n) + (progn + (setf (fill-pointer v) n) + v)) + (replace (make-array n :fill-pointer t) v))) + +(defun make-init-vector (n val) + (make-array n :initial-element val :fill-pointer t)) + ; 22 INPUT/OUTPUT @@ -576,7 +515,7 @@ ends up being [[CONTAINED |$EmptyMode| Y]]. (defun |sayBrightly| (x &optional (out-stream *standard-output*)) (COND ((NULL X) NIL) - (|$sayBrightlyStream| (sayBrightly1 X |$sayBrightlyStream|)) + (|$sayBrightlyStream| (sayBrightly1 X |$sayBrightlyStream|)) ((IS-CONSOLE out-stream) (sayBrightly1 X out-stream)) ((sayBrightly1 X out-stream) (sayBrightly1 X *terminal-io*)))) @@ -586,7 +525,7 @@ ends up being [[CONTAINED |$EmptyMode| Y]]. (defun |sayBrightlyNT| (x &optional (S *standard-output*)) (COND ((NULL X) NIL) - (|$sayBrightlyStream| (sayBrightlyNT1 X |$sayBrightlyStream|)) + (|$sayBrightlyStream| (sayBrightlyNT1 X |$sayBrightlyStream|)) ((IS-CONSOLE S) (sayBrightlyNT1 X S)) ((sayBrightly1 X S) (sayBrightlyNT1 X *terminal-io*)))) @@ -595,7 +534,7 @@ ends up being [[CONTAINED |$EmptyMode| Y]]. (defun sayBrightly1 (X *standard-output*) (if (ATOM X) - (progn (BRIGHTPRINT-0 X) (TERPRI) (force-output)) + (progn (BRIGHTPRINT-0 X) (TERPRI) (force-output)) (progn (BRIGHTPRINT X) (TERPRI) (force-output)))) (defvar |$algebraOutputStream| *standard-output*) @@ -614,13 +553,13 @@ ends up being [[CONTAINED |$EmptyMode| Y]]. (defun |sayMSG2File| (msg) (PROG (file str) - (SETQ file (|makePathname| '|spadmsg| '|listing| |$listingDirectory|)) - (SETQ str - (DEFIOSTREAM - (CONS '(MODE . OUTPUT) (CONS (CONS 'FILE file) NIL)) - 255 0)) - (sayBrightly1 msg str) - (SHUT str) ) ) + (SETQ file (|makePathname| '|spadmsg| '|listing| |$listingDirectory|)) + (SETQ str + (DEFIOSTREAM + (CONS '(MODE . OUTPUT) (CONS (CONS 'FILE file) NIL)) + 255 0)) + (sayBrightly1 msg str) + (SHUT str) ) ) (defvar |$fortranOutputStream|) @@ -647,7 +586,7 @@ ends up being [[CONTAINED |$EmptyMode| Y]]. (DEFUN BLANKS (N &optional (stream *standard-output*)) "Print N blanks." (do ((i 1 (the fixnum(1+ i)))) - ((> i N))(declare (fixnum i n)) (princ " " stream))) + ((> i N))(declare (fixnum i n)) (princ " " stream))) ; 23 FILE SYSTEM INTERFACE @@ -655,8 +594,8 @@ ends up being [[CONTAINED |$EmptyMode| Y]]. (DEFUN DEFSTREAM (file MODE) (if (member mode '(i input)) - (MAKE-INSTREAM file) - (MAKE-OUTSTREAM file))) + (MAKE-INSTREAM file) + (MAKE-OUTSTREAM file))) ; 23.3 Renaming, Deleting and Other File Operations @@ -698,8 +637,8 @@ terminals and empty or at-end files. In Common Lisp, we must assume record size (defun coerce-failure-msg (val mode) (STRCONC (MAKE-REASONABLE (STRINGIMAGE val)) - " cannot be coerced to mode " - (STRINGIMAGE (|devaluate| mode)))) + " cannot be coerced to mode " + (STRINGIMAGE (|devaluate| mode)))) (defmacro |check-subtype| (pred submode val) `(|assert| ,pred (coerce-failure-msg ,val ,submode))) @@ -769,7 +708,7 @@ terminals and empty or at-end files. In Common Lisp, we must assume record size ((and (symbolp (car sexpr)) (macro-function (car sexpr))) (do () ((not (and (consp sexpr) (symbolp (car sexpr)) - (macro-function (car sexpr))))) + (macro-function (car sexpr))))) (setq sexpr (macroexpand sexpr))) (if (consp sexpr) (let ((a (car sexpr)) (b (caadr sexpr))) @@ -777,7 +716,7 @@ terminals and empty or at-end files. In Common Lisp, we must assume record size (cons a (list (cons b (mapcar #'macroexpandall (cdadr sexpr))))) (mapcar #'macroexpandall sexpr))) sexpr)) - ('else + ('else (mapcar #'macroexpandall sexpr)))) @@ -851,10 +790,10 @@ terminals and empty or at-end files. In Common Lisp, we must assume record size ;;(defun expand-tabs (str) ;; (let ((bpos (nonblankloc str)) -;; (tpos (indent-pos str))) +;; (tpos (indent-pos str))) ;; (if (eql bpos tpos) str ;; (concatenate 'string (make-string tpos :initial-element #\space) -;; (subseq str bpos))))) +;; (subseq str bpos))))) (defun expand-tabs (str) (if (and (stringp str) (> (length str) 0)) (let ((bpos (nonblankloc str)) @@ -880,16 +819,16 @@ terminals and empty or at-end files. In Common Lisp, we must assume record size ;; returns the cons of applying func to args and a string produced ;; from standard-output while executing. (let* ((out-stream (make-string-output-stream)) - (curoutstream out-stream) - (|$algebraOutputStream| out-stream) + (curoutstream out-stream) + (|$algebraOutputStream| out-stream) (erroroutstream out-stream) - val) + val) (declare (special curoutstream |$algebraOutputStream|)) (setq *standard-output* out-stream) (setq *terminal-io* out-stream) (setq val (catch 'spad_reader - (catch 'TOP_LEVEL - (apply (symbol-function func) args)))) + (catch 'TOP_LEVEL + (apply (symbol-function func) args)))) (cons val (get-output-stream-string *standard-output*)))) (defun |breakIntoLines| (str) @@ -898,7 +837,7 @@ terminals and empty or at-end files. In Common Lisp, we must assume record size (setq eol (position #\Newline str :start bol)) (if (null eol) (return)) (if (> eol bol) - (setq line-list (cons (subseq str bol eol) line-list))) + (setq line-list (cons (subseq str bol eol) line-list))) (setq bol (+ eol 1))) (nreverse line-list))) @@ -910,8 +849,8 @@ terminals and empty or at-end files. In Common Lisp, we must assume record size (defmacro |try| (X) `(LET ((|$autoLine|)) - (declare (special |$autoLine|)) - (|tryToFit| (|saveState|) ,X))) + (declare (special |$autoLine|)) + (|tryToFit| (|saveState|) ,X))) (defmacro |embrace| (X) `(|wrapBraces| (|saveC|) ,X (|restoreC|))) (defmacro |indentNB| (X) `(|wrapBraces| (|saveD|) ,X (|restoreD|))) @@ -926,7 +865,7 @@ terminals and empty or at-end files. In Common Lisp, we must assume record size (setq state (|saveState| 't)) (or (LET ((|$autoLine|)) - (declare (special |$autoLine|)) + (declare (special |$autoLine|)) (and ,a (|formatRight| '|formatPreferPile| ,b ,c ,d))) (|restoreState| state) (and (eqcar ,b (quote seq)) @@ -950,7 +889,7 @@ terminals and empty or at-end files. In Common Lisp, we must assume record size (or (markhash ,b 0) (LET ((|$autoLine|)) - (declare (special |$autoLine|)) + (declare (special |$autoLine|)) (and ,a (|formatRight| '|formatPreferPile| ,b ,c ,d))) (|restoreState| state) (markhash ,b 1) @@ -979,15 +918,9 @@ terminals and empty or at-end files. In Common Lisp, we must assume record size (defmacro |Record| (&rest x) `(|Record0| (LIST ,@(COLLECT (IN Y X) - (list 'CONS (MKQ (CADR Y)) (CADDR Y)))))) + (list 'CONS (MKQ (CADR Y)) (CADDR Y)))))) (defmacro |:| (tag expr) `(LIST '|:| ,(MKQ tag) ,expr)) -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/interp/metalex.lisp b/src/interp/metalex.lisp index aa5be9ba..06e13fc5 100644 --- a/src/interp/metalex.lisp +++ b/src/interp/metalex.lisp @@ -1,5 +1,7 @@ ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are diff --git a/src/interp/monitor.lisp.pamphlet b/src/interp/monitor.lisp index 47fc8fd4..28477ea7 100644 --- a/src/interp/monitor.lisp.pamphlet +++ b/src/interp/monitor.lisp @@ -1,330 +1,7 @@ -\documentclass{article} -\usepackage{axiom} -\begin{document} -\title{\$SPAD/src/interp monitor.lisp} -\author{Timothy Daly} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\begin{verbatim} -MONITOR - -This file contains a set of function for monitoring the execution -of the functions in a file. It constructs a hash table that contains -the function name as the key and monitor-data structures as the value - -The technique is to use a :cond parameter on trace to call the -monitor-incr function to incr the count every time a function is called - -*monitor-table* HASH TABLE - is the monitor table containing the hash entries -*monitor-nrlibs* LIST of STRING - list of NRLIB filenames that are monitored -*monitor-domains* LIST of STRING - list of domains to monitor-report (default is all exposed domains) -monitor-data STRUCTURE - is the defstruct name of records in the table - name is the first field and is the name of the monitored function - count contains a count of times the function was called - monitorp is a flag that skips counting if nil, counts otherwise - sourcefile is the name of the file that contains the source code - - ***** SETUP, SHUTDOWN **** - -monitor-inittable () FUNCTION - creates the hashtable and sets *monitor-table* - note that it is called every time this file is loaded -monitor-end () FUNCTION - unhooks all of the trace hooks - - ***** TRACE, UNTRACE ***** - -monitor-add (name &optional sourcefile) FUNCTION - sets up the trace and adds the function to the table -monitor-delete (fn) FUNCTION - untraces a function and removes it from the table -monitor-enable (&optional fn) FUNCTION - starts tracing for all (or optionally one) functions that - are in the table -monitor-disable (&optional fn) FUNCTION - stops tracing for all (or optionally one) functions that - are in the table - -***** COUNTING, RECORDING ***** - -monitor-reset (&optional fn) FUNCTION - reset the table count for the table (or optionally, for a function) -monitor-incr (fn) FUNCTION - increments the count information for a function - it is called by trace to increment the count -monitor-decr (fn) FUNCTION - decrements the count information for a function -monitor-info (fn) FUNCTION - returns the monitor-data structure for a function - -***** FILE IO ***** - -monitor-write (items file) FUNCTION - writes a list of symbols or structures to a file -monitor-file (file) FUNCTION - will read a file, scan for defuns, monitor each defun - NOTE: monitor-file assumes that the file has been loaded - -***** RESULTS ***** - -monitor-results () FUNCTION - returns a list of the monitor-data structures -monitor-untested () FUNCTION - returns a list of files that have zero counts -monitor-tested (&optional delete) FUNCTION - returns a list of files that have nonzero counts - optionally calling monitor-delete on those functions - -***** CHECKPOINT/RESTORE ***** -monitor-checkpoint (file) FUNCTION - save the *monitor-table* in a loadable form -monitor-restore (file) FUNCTION - restore a checkpointed file so that everything is monitored - -***** ALGEBRA ***** -monitor-autoload () FUNCTION - traces autoload of algebra to monitor corresponding source files - NOTE: this requires the /spad/int/algebra directory -monitor-dirname (args) FUNCTION - expects a list of 1 libstream (loadvol's arglist) and monitors the source - this is a function called by monitor-autoload -monitor-nrlib (nrlib) FUNCTION - takes an nrlib name as a string (eg POLY) and returns a list of - monitor-data structures from that source file -monitor-report () FUNCTION - generate a report of the monitored activity for domains in - *monitor-domains* -monitor-spadfile (name) FUNCTION - given a spad file, report all NRLIBS it creates - this adds each NRLIB name to *monitor-domains* but does not - trace the functions from those domains -monitor-percent () FUNCTION - ratio of (functions executed)/(functions traced) -monitor-apropos (str) FUNCTION - given a string, find all monitored symbols containing the string - the search is case-insensitive. returns a list of monitor-data items - -for example: - suppose we have a file "/u/daly/testmon.lisp" that contains: - (defun foo1 () (print 'foo1)) - (defun foo2 () (print 'foo2)) - (defun foo3 () (foo1) (foo2) (print 'foo3)) - (defun foo4 () (print 'foo4)) - - an example session is: - - ; FIRST WE LOAD THE FILE (WHICH INITS *monitor-table*) - - >(load "/u/daly/monitor.lisp") - Loading /u/daly/monitor.lisp - Finished loading /u/daly/monitor.lisp - T - - ; SECOND WE LOAD THE TESTMON FILE - >(load "/u/daly/testmon.lisp") - T - - ; THIRD WE MONITOR THE FILE - >(monitor-file "/u/daly/testmon.lisp") - monitoring "/u/daly/testmon.lisp" - NIL - - ; FOURTH WE CALL A FUNCTION FROM THE FILE (BUMP ITS COUNT) - >(foo1) - - FOO1 - FOO1 - - ; AND ANOTHER FUNCTION (BUMP ITS COUNT) - >(foo2) - - FOO2 - FOO2 - - ; AND A THIRD FUNCTION THAT CALLS THE OTHER TWO (BUMP ALL THREE) - >(foo3) - - FOO1 - FOO2 - FOO3 - FOO3 - - ; CHECK THAT THE RESULTS ARE CORRECT - - >(monitor-results) - (#S(MONITOR-DATA NAME FOO1 COUNT 2 MONITORP T SOURCEFILE - "/u/daly/testmon.lisp") - #S(MONITOR-DATA NAME FOO2 COUNT 2 MONITORP T SOURCEFILE - "/u/daly/testmon.lisp") - #S(MONITOR-DATA NAME FOO3 COUNT 1 MONITORP T SOURCEFILE - "/u/daly/testmon.lisp")) - #S(MONITOR-DATA NAME FOO4 COUNT 0 MONITORP T SOURCEFILE - "/u/daly/testmon.lisp")) - - ; STOP COUNTING CALLS TO FOO2 - - >(monitor-disable 'foo2) - NIL - - ; INVOKE FOO2 THRU FOO3 - - >(foo3) - - FOO1 - FOO2 - FOO3 - FOO3 - - ; NOTICE THAT FOO1 AND FOO3 WERE BUMPED BUT NOT FOO2 - >(monitor-results) - (#S(MONITOR-DATA NAME FOO1 COUNT 3 MONITORP T SOURCEFILE - "/u/daly/testmon.lisp") - #S(MONITOR-DATA NAME FOO2 COUNT 2 MONITORP NIL SOURCEFILE - "/u/daly/testmon.lisp") - #S(MONITOR-DATA NAME FOO3 COUNT 2 MONITORP T SOURCEFILE - "/u/daly/testmon.lisp")) - #S(MONITOR-DATA NAME FOO4 COUNT 0 MONITORP T SOURCEFILE - "/u/daly/testmon.lisp")) - - ; TEMPORARILY STOP ALL MONITORING - - >(monitor-disable) - NIL - - ; CHECK THAT NOTHING CHANGES - - >(foo3) - - FOO1 - FOO2 - FOO3 - FOO3 - - ; NO COUNT HAS CHANGED - - >(monitor-results) - (#S(MONITOR-DATA NAME FOO1 COUNT 3 MONITORP NIL SOURCEFILE - "/u/daly/testmon.lisp") - #S(MONITOR-DATA NAME FOO2 COUNT 2 MONITORP NIL SOURCEFILE - "/u/daly/testmon.lisp") - #S(MONITOR-DATA NAME FOO3 COUNT 2 MONITORP NIL SOURCEFILE - "/u/daly/testmon.lisp")) - #S(MONITOR-DATA NAME FOO4 COUNT 0 MONITORP T SOURCEFILE - "/u/daly/testmon.lisp")) - - ; MONITOR ONLY CALLS TO FOO1 - - >(monitor-enable 'foo1) - T - - ; FOO3 CALLS FOO1 - - >(foo3) - - FOO1 - FOO2 - FOO3 - FOO3 - - ; FOO1 HAS CHANGED BUT NOT FOO2 OR FOO3 - - >(monitor-results) - (#S(MONITOR-DATA NAME FOO1 COUNT 4 MONITORP T SOURCEFILE - "/u/daly/testmon.lisp") - #S(MONITOR-DATA NAME FOO2 COUNT 2 MONITORP NIL SOURCEFILE - "/u/daly/testmon.lisp") - #S(MONITOR-DATA NAME FOO3 COUNT 2 MONITORP NIL SOURCEFILE - "/u/daly/testmon.lisp")) - #S(MONITOR-DATA NAME FOO4 COUNT 0 MONITORP T SOURCEFILE - "/u/daly/testmon.lisp")) - - ; MONITOR EVERYBODY - - >(monitor-enable) - NIL - - ; CHECK THAT EVERYBODY CHANGES - - >(foo3) - - FOO1 - FOO2 - FOO3 - FOO3 - - ; EVERYBODY WAS BUMPED - - >(monitor-results) - (#S(MONITOR-DATA NAME FOO1 COUNT 5 MONITORP T SOURCEFILE - "/u/daly/testmon.lisp") - #S(MONITOR-DATA NAME FOO2 COUNT 3 MONITORP T SOURCEFILE - "/u/daly/testmon.lisp") - #S(MONITOR-DATA NAME FOO3 COUNT 3 MONITORP T SOURCEFILE - "/u/daly/testmon.lisp")) - #S(MONITOR-DATA NAME FOO4 COUNT 0 MONITORP T SOURCEFILE - "/u/daly/testmon.lisp")) - - ; WHAT FUNCTIONS WERE TESTED? - - >(monitor-tested) - (FOO1 FOO2 FOO3) - - ; WHAT FUNCTIONS WERE NOT TESTED? - - >(monitor-untested) - (FOO4) - - ; UNTRACE THE WHOLE WORLD, MONITORING CANNOT RESTART - - >(monitor-end) - NIL - - ; CHECK THE RESULTS - - >(monitor-results) - (#S(MONITOR-DATA NAME FOO1 COUNT 5 MONITORP T SOURCEFILE - "/u/daly/testmon.lisp") - #S(MONITOR-DATA NAME FOO2 COUNT 3 MONITORP T SOURCEFILE - "/u/daly/testmon.lisp") - #S(MONITOR-DATA NAME FOO3 COUNT 3 MONITORP T SOURCEFILE - "/u/daly/testmon.lisp")) - #S(MONITOR-DATA NAME FOO4 COUNT 0 MONITORP T SOURCEFILE - "/u/daly/testmon.lisp")) - - ; CHECK THAT THE FUNCTIONS STILL WORK - - >(foo3) - - FOO1 - FOO2 - FOO3 - FOO3 - - ; CHECK THAT MONITORING IS NOT OCCURING - - >(monitor-results) - (#S(MONITOR-DATA NAME FOO1 COUNT 5 MONITORP T SOURCEFILE - "/u/daly/testmon.lisp") - #S(MONITOR-DATA NAME FOO2 COUNT 3 MONITORP T SOURCEFILE - "/u/daly/testmon.lisp") - #S(MONITOR-DATA NAME FOO3 COUNT 3 MONITORP T SOURCEFILE - "/u/daly/testmon.lisp")) - #S(MONITOR-DATA NAME FOO4 COUNT 0 MONITORP T SOURCEFILE - "/u/daly/testmon.lisp")) - -\end{verbatim} -\section{License} -<<license>>= ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are @@ -354,9 +31,6 @@ for example: ;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -@ -<<*>>= -<<license>> (in-package "BOOT") @@ -798,9 +472,3 @@ for example: (push v result))) *monitor-table*) result)) -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/interp/newaux.lisp.pamphlet b/src/interp/newaux.lisp index 687b2fbf..8837c699 100644 --- a/src/interp/newaux.lisp.pamphlet +++ b/src/interp/newaux.lisp @@ -1,16 +1,36 @@ -\documentclass{article} -\usepackage{axiom} -\begin{document} -\title{\$SPAD/src/interp newaux.lisp} -\author{Timothy Daly} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{Operator Precedence Table Initialization} -\begin{verbatim} +;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. +;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. +;; +;; Redistribution and use in source and binary forms, with or without +;; modification, are permitted provided that the following conditions are +;; met: +;; +;; - Redistributions of source code must retain the above copyright +;; notice, this list of conditions and the following disclaimer. +;; +;; - Redistributions in binary form must reproduce the above copyright +;; notice, this list of conditions and the following disclaimer in +;; the documentation and/or other materials provided with the +;; distribution. +;; +;; - Neither the name of The Numerical ALgorithms Group Ltd. nor the +;; names of its contributors may be used to endorse or promote products +;; derived from this software without specific prior written permission. +;; +;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +;; IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +;; TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +;; PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER +;; OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +;; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +;; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +;; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ; PURPOSE: This file sets up properties which are used by the Boot lexical ; analyzer for bottom-up recognition of operators. Also certain ; other character-class definitions are included, as well as @@ -23,9 +43,7 @@ ; 3. RENAMETOK Table ; 4. GENERIC Table ; 5. Character syntax class predicates -\end{verbatim} -\subsection{LED and NUD Tables} -\begin{verbatim} + ; **** 1. LED and NUD Tables ; ** TABLE PURPOSE @@ -54,8 +72,11 @@ ; this is just an ordinary operator (as opposed to a surfix operator like ; if-then-else). -\end{verbatim} -<<LEDNUDTables>>= + + +(IMPORT-MODULE "macros") +(in-package "BOOT") + ; ** TABLE CREATION (defparameter OpAssoc nil @@ -143,14 +164,12 @@ (|then| 0 114) (|else| 0 114))) -@ -\section{Gliph Table} -Gliphs are symbol clumps. The gliph property of a symbol gives -the tree describing the tokens which begin with that symbol. -The token reader uses the gliph property to determine the longest token. -Thus [[:=]] is read as one token not as [[:]] followed by [[=]]. - -<<GLIPHTable>>= + +;; Gliphs are symbol clumps. The gliph property of a symbol gives +;; the tree describing the tokens which begin with that symbol. +;; The token reader uses the gliph property to determine the longest token. +;; Thus `:=' is read as one token not as `:' followed by `='. + (mapcar #'(lambda (x) (makeprop (car x) 'gliph (cdr x))) `( ( \| (\)) ) @@ -167,86 +186,27 @@ Thus [[:=]] is read as one token not as [[:]] followed by [[=]]. ( ^ (=) ) ( \~ (=) ) ( \: (=) (-) (\:)))) - -@ -\subsection{Rename Token Table} -RENAMETOK defines alternate token strings which can be used for different -keyboards which define equivalent tokens. -<<RENAMETOKTable>>= + +;; RENAMETOK defines alternate token strings which can be used for different +;; keyboards which define equivalent tokens. + (mapcar #'(lambda (x) (MAKEPROP (CAR X) 'RENAMETOK (CADR X)) (MAKENEWOP X NIL)) '((\(\| \[) ; (| |) means [] (\|\) \]) (\(< \{) ; (< >) means {} (>\) \}))) + +;; GENERIC operators be suffixed by `$' qualifications in SPAD code. +;; `$' is then followed by a domain label, such as I for Integer, which +;; signifies which domain the operator refers to. For example `+$Integer' +;; is `+' for Integers. -@ -\subsection{Generic function table} -GENERIC operators be suffixed by [[$]] qualifications in SPAD code. -[[$]] is then followed by a domain label, such as I for Integer, which -signifies which domain the operator refers to. For example [[+$Integer]] -is [[+]] for Integers. -<<GENERICTable>>= (mapcar #'(lambda (x) (MAKEPROP X 'GENERIC 'TRUE)) '(- = * |rem| |mod| |quo| |div| / ** |exquo| + - < > <= >= ^= )) -@ -\subsection{Character Syntax Table} -<<CharacterSyntaxTable>>= (defun SPECIALCASESYNTAX () (OR (AND (char= TOK '#\#) (DIGITP CHR)))) (defun TERMINATOR (CHR) (member CHR '(#\ #\( #\) #\. #\; #\, #\Return)) :test #'char=) -@ -\section{License} -<<license>>= -;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. -;; All rights reserved. -;; -;; Redistribution and use in source and binary forms, with or without -;; modification, are permitted provided that the following conditions are -;; met: -;; -;; - Redistributions of source code must retain the above copyright -;; notice, this list of conditions and the following disclaimer. -;; -;; - Redistributions in binary form must reproduce the above copyright -;; notice, this list of conditions and the following disclaimer in -;; the documentation and/or other materials provided with the -;; distribution. -;; -;; - Neither the name of The Numerical ALgorithms Group Ltd. nor the -;; names of its contributors may be used to endorse or promote products -;; derived from this software without specific prior written permission. -;; -;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -;; IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED -;; TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -;; PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER -;; OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -;; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -;; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -;; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -@ -<<*>>= -<<license>> - -(IMPORT-MODULE "macros") -(in-package "BOOT") - -<<LEDNUDTables>> -<<GLIPHTable>> -<<RENAMETOKTable>> -<<GENERICTable>> -<<CharacterSyntaxTable>> -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/interp/nlib.lisp.pamphlet b/src/interp/nlib.lisp index e16a57b7..e462977e 100644 --- a/src/interp/nlib.lisp.pamphlet +++ b/src/interp/nlib.lisp @@ -1,51 +1,7 @@ -%% Oh Emacs, this is a -*- Lisp -*- file despite apperance. -\documentclass{article} -\usepackage{axiom} - -\title{\File{src/interp/nlib.lisp} Pamphlet} -\author{Timothy Daly} - -\begin{document} -\maketitle - -\begin{abstract} -\end{abstract} - -\tableofcontents -\eject - -\section{GCL code.lsp name change} - -When we compile an algebra file we create an NRLIB directory which contains -several files. One of the files is named [[code.lsp]]. -On certain platforms this causes linking problems for GCL. -The problem is that the compiler produces an init code block which is -sensitive to the name of the source file. -Since all of the [[code.lsp]] files have the same name all of -the init blocks have the same name. At link time this causes -the names to collide. Here we rename the file before we compile, -do the compile, and then rename the result back to [[code.o]]. -This code used to read: -but has been changed to read: -<<code.lsp name change>>= -#-:GCL (recompile-lib-file-if-necessary - (concat (namestring filespec) "/code.lsp")) -#+:GCL (let* ((base (pathname-name filespec)) - (code (concatenate 'string (namestring filespec) "/code.lsp")) - (temp (concatenate 'string (namestring filespec) "/" base ".lsp")) - (o (make-pathname :type "o"))) - (si::system (format nil "cp ~S ~S" code temp)) - (recompile-lib-file-if-necessary temp) - (si::system (format nil "mv ~S ~S~%" - (namestring (merge-pathnames o temp)) - (namestring (merge-pathnames o code))))) -@ - -\section{License} - -<<license>>= ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are @@ -75,9 +31,6 @@ but has been changed to read: ;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -@ -<<*>>= -<<license>> (IMPORT-MODULE "macros") (in-package "BOOT") @@ -105,34 +58,34 @@ but has been changed to read: ;; (RDEFIOSTREAM ((MODE . IO) (FILE fn ft dir))) IO is I,O,INPUT,OUTPUT (defun rdefiostream (options &optional (missing-file-error-flag t)) (let ((mode (cdr (assoc 'mode options))) - (file (assoc 'file options)) - (stream nil) - (fullname nil) - (indextable nil)) + (file (assoc 'file options)) + (stream nil) + (fullname nil) + (indextable nil)) (cond ((equal (elt (string mode) 0) #\I) - ;;(setq fullname (make-input-filename (cdr file) 'LISPLIB)) - (setq fullname (make-input-filename (cdr file) 'NIL)) - (setq stream (get-input-index-stream fullname)) + ;;(setq fullname (make-input-filename (cdr file) 'LISPLIB)) + (setq fullname (make-input-filename (cdr file) 'NIL)) + (setq stream (get-input-index-stream fullname)) (if (null stream) - (if missing-file-error-flag - (ERROR (format nil "Library ~s doesn't exist" - ;;(make-filename (cdr file) 'LISPLIB)) - (make-filename (cdr file) 'NIL))) - NIL) + (if missing-file-error-flag + (ERROR (format nil "Library ~s doesn't exist" + ;;(make-filename (cdr file) 'LISPLIB)) + (make-filename (cdr file) 'NIL))) + NIL) (make-libstream :mode 'input :dirname fullname :indextable (get-index-table-from-stream stream) - :indexstream stream))) + :indexstream stream))) ((equal (elt (string mode) 0) #\O) - ;;(setq fullname (make-full-namestring (cdr file) 'LISPLIB)) - (setq fullname (make-full-namestring (cdr file) 'NIL)) - (case (|directoryp| fullname) - (-1 (makedir fullname)) - (0 (error (format nil "~s is an existing file, not a library" fullname))) - (otherwise)) - (multiple-value-setq (stream indextable) (get-io-index-stream fullname)) - (make-libstream :mode 'output :dirname fullname - :indextable indextable - :indexstream stream )) + ;;(setq fullname (make-full-namestring (cdr file) 'LISPLIB)) + (setq fullname (make-full-namestring (cdr file) 'NIL)) + (case (|directoryp| fullname) + (-1 (makedir fullname)) + (0 (error (format nil "~s is an existing file, not a library" fullname))) + (otherwise)) + (multiple-value-setq (stream indextable) (get-io-index-stream fullname)) + (make-libstream :mode 'output :dirname fullname + :indextable indextable + :indexstream stream )) ('t (ERROR "Unknown MODE"))))) @@ -152,23 +105,23 @@ but has been changed to read: (defun get-index-table-from-stream (stream) (let ((pos (read stream))) (cond ((numberp pos) - (file-position stream pos) - (read stream)) - (t pos)))) + (file-position stream pos) + (read stream)) + (t pos)))) (defun get-io-index-stream (dirname) (let* ((index-file (concat dirname "/" *index-filename*)) - (stream (open index-file :direction :io :if-exists :overwrite - :if-does-not-exist :create)) - (indextable ()) - (pos (read stream nil nil))) + (stream (open index-file :direction :io :if-exists :overwrite + :if-does-not-exist :create)) + (indextable ()) + (pos (read stream nil nil))) (cond ((numberp pos) - (file-position stream pos) - (setq indextable (read stream)) - (file-position stream pos)) - (t (file-position stream 0) - (princ " " stream) - (setq indextable pos))) + (file-position stream pos) + (setq indextable (read stream)) + (file-position stream pos)) + (t (file-position stream 0) + (princ " " stream) + (setq indextable pos))) (values stream indextable))) ;substitute indextable in dirname @@ -207,50 +160,50 @@ but has been changed to read: (defun rread (key rstream &optional (error-val nil error-val-p)) (if (equal (libstream-mode rstream) 'output) (error "not input stream")) (let* ((entry - (and (stringp key) - (assoc key (libstream-indextable rstream) :test #'string=))) - (file-or-pos (and entry (caddr entry)))) + (and (stringp key) + (assoc key (libstream-indextable rstream) :test #'string=))) + (file-or-pos (and entry (caddr entry)))) (cond ((null entry) - (if error-val-p error-val (error (format nil "key ~a not found" key)))) - ((null (caddr entry)) (cdddr entry)) ;; for small items - ((numberp file-or-pos) - (file-position (libstream-indexstream rstream) file-or-pos) - (read (libstream-indexstream rstream))) - (t - (with-open-file - (stream (concat (libstream-dirname rstream) "/" file-or-pos)) - (read stream))) ))) + (if error-val-p error-val (error (format nil "key ~a not found" key)))) + ((null (caddr entry)) (cdddr entry)) ;; for small items + ((numberp file-or-pos) + (file-position (libstream-indexstream rstream) file-or-pos) + (read (libstream-indexstream rstream))) + (t + (with-open-file + (stream (concat (libstream-dirname rstream) "/" file-or-pos)) + (read stream))) ))) (defvar *lib-var*) ;; (RKEYIDS filearg) -- interned version of keys (defun rkeyids (&rest filearg) (mapcar #'intern (mapcar #'car (getindextable - (make-input-filename filearg 'NIL))))) + (make-input-filename filearg 'NIL))))) ;;(defun rkeyids (&rest filearg) ;; (mapcar #'intern (mapcar #'car (getindextable -;; (make-input-filename filearg 'LISPLIB))))) +;; (make-input-filename filearg 'LISPLIB))))) ;; (RWRITE cvec item rstream) (defun rwrite (key item rstream) (if (equal (libstream-mode rstream) 'input) (error "not output stream")) (let ((stream (libstream-indexstream rstream)) - (pos (if item (cons (file-position (libstream-indexstream rstream)) nil) - (cons nil item)))) ;; for small items + (pos (if item (cons (file-position (libstream-indexstream rstream)) nil) + (cons nil item)))) ;; for small items (make-entry (string key) rstream pos) (when (numberp (car pos)) - (write item :stream stream :level nil :length nil - :circle t :array t :escape t) - (terpri stream)))) + (write item :stream stream :level nil :length nil + :circle t :array t :escape t) + (terpri stream)))) (defun make-entry (key rstream value-or-pos) (let ((entry (assoc key (libstream-indextable rstream) :test #'equal))) (if (null entry) - (push (setq entry (cons key (cons 0 value-or-pos))) - (libstream-indextable rstream)) + (push (setq entry (cons key (cons 0 value-or-pos))) + (libstream-indextable rstream)) (progn - (if (stringp (caddr entry)) ($erase (caddr entry))) - (setf (cddr entry) value-or-pos))) + (if (stringp (caddr entry)) ($erase (caddr entry))) + (setf (cddr entry) value-or-pos))) entry)) ;;(defun rshut (rstream) @@ -276,24 +229,46 @@ but has been changed to read: (defun rpackfile (filespec) (setq filespec (make-filename filespec)) (if (string= (pathname-type filespec) "NRLIB") -<<code.lsp name change>> +#-:GCL (recompile-lib-file-if-necessary + (concat (namestring filespec) "/code.lsp")) + +;; When we compile an algebra file we create an NRLIB directory which contains +;; several files. One of the files is named [[code.lsp]]. +;; On certain platforms this causes linking problems for GCL. +;; The problem is that the compiler produces an init code block which is +;; sensitive to the name of the source file. +;; Since all of the [[code.lsp]] files have the same name all of +;; the init blocks have the same name. At link time this causes +;; the names to collide. Here we rename the file before we compile, +;; do the compile, and then rename the result back to [[code.o]]. +;; This code used to read: +;; but has been changed to read: +#+:GCL (let* ((base (pathname-name filespec)) + (code (concatenate 'string (namestring filespec) "/code.lsp")) + (temp (concatenate 'string (namestring filespec) "/" base ".lsp")) + (o (make-pathname :type "o"))) + (si::system (format nil "cp ~S ~S" code temp)) + (recompile-lib-file-if-necessary temp) + (si::system (format nil "mv ~S ~S~%" + (namestring (merge-pathnames o temp)) + (namestring (merge-pathnames o code))))) ;; only pack non libraries to avoid lucid file handling problems (let* ((rstream (rdefiostream (list (cons 'file filespec) (cons 'mode 'input)))) - (nstream nil) - (nindextable nil) - (nrstream nil) - (index-file-name (concat (truename filespec) "/" *index-filename*)) - (temp-index-file-name (make-pathname :name "oldindex" - :defaults index-file-name))) + (nstream nil) + (nindextable nil) + (nrstream nil) + (index-file-name (concat (truename filespec) "/" *index-filename*)) + (temp-index-file-name (make-pathname :name "oldindex" + :defaults index-file-name))) (rename-file index-file-name temp-index-file-name ) ;; stays until closed (multiple-value-setq (nstream nindextable) (get-io-index-stream filespec)) (setq nrstream (make-libstream :mode 'output :dirname filespec - :indextable nindextable - :indexstream nstream )) + :indextable nindextable + :indexstream nstream )) (dolist (entry (libstream-indextable rstream)) - (rwrite (car entry) (rread (car entry) rstream) nrstream) - (if (stringp (caddr entry)) - (delete-file (concat filespec "/" (caddr entry))))) + (rwrite (car entry) (rread (car entry) rstream) nrstream) + (if (stringp (caddr entry)) + (delete-file (concat filespec "/" (caddr entry))))) (close (libstream-indexstream rstream)) (delete-file temp-index-file-name) (rshut nrstream))) @@ -305,8 +280,8 @@ but has been changed to read: (bdate (and (probe-file bfile) (file-write-date bfile))) (ldate (and (probe-file lfile) (file-write-date lfile)))) (if ldate - (if (and bdate (> bdate ldate)) nil - (progn (compile-lib-file lfile) (list bfile)))))) + (if (and bdate (> bdate ldate)) nil + (progn (compile-lib-file lfile) (list bfile)))))) #+:CCL (defun recompile-lib-file-if-necessary (lfile) @@ -333,21 +308,21 @@ but has been changed to read: (defun spad-fixed-arg (fname ) (and (equal (symbol-package fname) (find-package "BOOT")) (not (get fname 'compiler::spad-var-arg)) - (search ";" (symbol-name fname)) + (search ";" (symbol-name fname)) (or (get fname 'compiler::fixed-args) - (setf (get fname 'compiler::fixed-args) t))) + (setf (get fname 'compiler::fixed-args) t))) nil) #+:AKCL (defun compile-lib-file (fn &rest opts) (unwind-protect (progn - (trace (compiler::fast-link-proclaimed-type-p - :exitcond nil - :entrycond (spad-fixed-arg (car system::arglist)))) - (trace (compiler::t1defun :exitcond nil - :entrycond (spad-fixed-arg (caar system::arglist)))) - (apply #'compile-file fn opts)) + (trace (compiler::fast-link-proclaimed-type-p + :exitcond nil + :entrycond (spad-fixed-arg (car system::arglist)))) + (trace (compiler::t1defun :exitcond nil + :entrycond (spad-fixed-arg (caar system::arglist)))) + (apply #'compile-file fn opts)) (untrace compiler::fast-link-proclaimed-type-p compiler::t1defun))) #+:CCL (define-function 'compile-lib-file #'compile-file) @@ -362,14 +337,14 @@ but has been changed to read: ;; cms file operations (defun make-filename (filearg &optional (filetype nil)) (let ((filetype (if (symbolp filetype) - (symbol-name filetype) - filetype))) + (symbol-name filetype) + filetype))) (cond ((pathnamep filearg) (cond ((pathname-type filearg) (namestring filearg)) - (t (namestring (make-pathname :directory (pathname-directory filearg) - :name (pathname-name filearg) - :type filetype))))) + (t (namestring (make-pathname :directory (pathname-directory filearg) + :name (pathname-name filearg) + :type filetype))))) ;; Previously, given a filename containing "." and ;; an extension this function would return filearg. MCD 23-8-95. ((and (stringp filearg) (pathname-type filearg) (null filetype)) filearg) @@ -377,16 +352,16 @@ but has been changed to read: ;; (or (pathname-type filearg) (null filetype))) ;; filearg) ((and (stringp filearg) (stringp filetype) - (pathname-type filearg) - (string-equal (pathname-type filearg) filetype)) + (pathname-type filearg) + (string-equal (pathname-type filearg) filetype)) filearg) ((consp filearg) (make-filename (car filearg) (or (cadr filearg) filetype))) (t (if (stringp filetype) (setq filetype (intern filetype "BOOT"))) - (let ((ft (or (cdr (assoc filetype $filetype-table)) filetype))) - (if ft - (concatenate 'string (string filearg) "." (string ft)) - (string filearg))))))) + (let ((ft (or (cdr (assoc filetype $filetype-table)) filetype))) + (if ft + (concatenate 'string (string filearg) "." (string ft)) + (string filearg))))))) (defun make-full-namestring (filearg &optional (filetype nil)) (namestring (merge-pathnames (make-filename filearg filetype)))) @@ -396,10 +371,10 @@ but has been changed to read: (defun get-directory-list (ft &aux (cd (namestring (get-current-directory)))) (cond ((member ft '("NRLIB" "DAASE" "EXPOSED") :test #'string=) - (if (eq |$UserLevel| '|development|) - (cons cd $library-directory-list) - $library-directory-list)) - (t (adjoin cd + (if (eq |$UserLevel| '|development|) + (cons cd $library-directory-list) + $library-directory-list)) + (t (adjoin cd (adjoin (namestring (user-homedir-pathname)) $directory-list :test #'string=) :test #'string=)))) @@ -412,11 +387,11 @@ but has been changed to read: (dirs (get-directory-list ft)) (newfn nil)) (if (or (null dirname) (eqcar dirname :relative)) - (dolist (dir dirs (probe-name filename)) - (when - (probe-file - (setq newfn (concatenate 'string dir filename))) - (return newfn))) + (dolist (dir dirs (probe-name filename)) + (when + (probe-file + (setq newfn (concatenate 'string dir filename))) + (return newfn))) (probe-name filename)))) (defun $FILEP (&rest filearg) (make-full-namestring filearg)) @@ -424,10 +399,10 @@ but has been changed to read: (defun $findfile (filespec filetypelist) (let ((file-name (if (consp filespec) (car filespec) filespec)) - (file-type (if (consp filespec) (cadr filespec) nil))) + (file-type (if (consp filespec) (cadr filespec) nil))) (if file-type (push file-type filetypelist)) (some #'(lambda (ft) (make-input-filename file-name ft)) - filetypelist))) + filetypelist))) ;; ($ERASE filearg) -> 0 if succeeds else 1 (defun $erase (&rest filearg) @@ -444,10 +419,10 @@ but has been changed to read: (defun $FCOPY (filespec1 filespec2) (let ((name1 (make-full-namestring filespec1)) - (name2 (make-full-namestring filespec2))) + (name2 (make-full-namestring filespec2))) (if (library-file name1) - (copy-lib-directory name1 name2) - (copy-file name1 name2)))) + (copy-lib-directory name1 name2) + (copy-file name1 name2)))) #+(OR :AKCL (AND :CCL :UNIX)) @@ -460,9 +435,3 @@ but has been changed to read: (system (concat "cp " namestring1 " " namestring2))) -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/interp/nocompil.lisp.pamphlet b/src/interp/nocompil.lisp index 6e7b6bf1..3adc630a 100644 --- a/src/interp/nocompil.lisp.pamphlet +++ b/src/interp/nocompil.lisp @@ -1,39 +1,7 @@ -\documentclass{article} -\usepackage{axiom} -\begin{document} -\title{\$SPAD/src/interp nocompil.lisp} -\author{Timothy Daly} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -The function {\bf protected-symbol-warn} was added because it is -used in {\bf setvart.boot} but apparently is nowhere defined. It -is probably primitive to {\bf CCL}. - -The function {\bf protect-symbols} was added because it is -used in {\bf setvart.boot} but apparently is nowhere defined. It -is probably primitive to {\bf CCL}. - -The output of these functions is just a noisy warning message -and this has been commented out. -\section{GCL cmpnote function} -GCL keeps noting the fact that the compiler is performing tail-recursion. -Bill Schelter added this as a debugging tool for Axiom and it was never -removed. Patching the lisp code in the GCL build fails as the system -is actually built from the pre-compiled C code. Thus, we can only step -on this message after the fact. The cmpnote function is used nowhere -else in GCL so stepping on the function call seems best. We're unhappy -with this hack and will try to convince the GCL crowd to fix this. -<<gcl-cmpnote>>= -#+:gcl (defun compiler::cmpnote (&rest x)) -@ -\section{License} -<<license>>= ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are @@ -63,11 +31,28 @@ with this hack and will try to convince the GCL crowd to fix this. ;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -@ -<<*>>= -<<license>> -<<gcl-cmpnote>> +;; The function {\bf protected-symbol-warn} was added because it is +;; used in {\bf setvart.boot} but apparently is nowhere defined. It +;; is probably primitive to {\bf CCL}. + +;; The function {\bf protect-symbols} was added because it is +;; used in {\bf setvart.boot} but apparently is nowhere defined. It +;; is probably primitive to {\bf CCL}. + +;; The output of these functions is just a noisy warning message +;; and this has been commented out. +;; \section{GCL cmpnote function} +;; GCL keeps noting the fact that the compiler is performing tail-recursion. +;; Bill Schelter added this as a debugging tool for Axiom and it was never +;; removed. Patching the lisp code in the GCL build fails as the system +;; is actually built from the pre-compiled C code. Thus, we can only step +;; on this message after the fact. The cmpnote function is used nowhere +;; else in GCL so stepping on the function call seems best. We're unhappy +;; with this hack and will try to convince the GCL crowd to fix this. + + +#+:gcl (defun compiler::cmpnote (&rest x)) (import-module "boot-pkg") (in-package "BOOT") @@ -90,9 +75,3 @@ with this hack and will try to convince the GCL crowd to fix this. #+:ccl (format t "protected-symbol-warn called with ~A~%" arg)) -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/interp/nspadaux.lisp b/src/interp/nspadaux.lisp index 299b5240..cc31a68a 100644 --- a/src/interp/nspadaux.lisp +++ b/src/interp/nspadaux.lisp @@ -1,5 +1,7 @@ ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are diff --git a/src/interp/obey.lisp b/src/interp/obey.lisp index 8636fef4..9d19fa1f 100644 --- a/src/interp/obey.lisp +++ b/src/interp/obey.lisp @@ -1,5 +1,7 @@ ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are diff --git a/src/interp/parsing.lisp b/src/interp/parsing.lisp index 54ee8efd..21ec9745 100644 --- a/src/interp/parsing.lisp +++ b/src/interp/parsing.lisp @@ -1,5 +1,7 @@ ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are diff --git a/src/interp/patches.lisp.pamphlet b/src/interp/patches.lisp index 25dd354f..408e92d9 100644 --- a/src/interp/patches.lisp.pamphlet +++ b/src/interp/patches.lisp @@ -1,32 +1,7 @@ -\documentclass{article} -\usepackage{axiom} -\begin{document} -\title{\$SPAD/src/interp patches.lisp} -\author{Timothy Daly} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\subsection{toplevel} -The function top-level is the very root of the normal invocation -history stack. Control will pass to the restart function which is -also in this file. - -For some unknown reason toplevel was redefined to incorrectly -call lisp::unwind whereas it is defined (in this file) to be -interned in the boot package. We've returned toplevel to its -previous definition. -<<toplevel>>= -(defun toplevel (&rest foo) (throw '|top_level| '|restart|)) -;;(defun toplevel (&rest foo) (lisp::unwind)) - -@ -\section{License} -<<license>>= ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are @@ -56,9 +31,6 @@ previous definition. ;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -@ -<<*>>= -<<license>> (in-package "BOOT") ;;patches for now @@ -82,8 +54,8 @@ previous definition. (defun |mkAutoLoad| (fn cname) (function (lambda (&rest args) - (|autoLoad| fn cname) - (apply cname args)))) + (|autoLoad| fn cname) + (apply cname args)))) (setq |$printTimeIfTrue| nil) @@ -103,7 +75,16 @@ previous definition. (|sayKeyedMsg| 'S2IZ0070 (list (namestring *default-pathname-defaults*))))) -<<toplevel>> +;; The function top-level is the very root of the normal invocation +;; history stack. Control will pass to the restart function which is +;; also in this file. +;; For some unknown reason toplevel was redefined to incorrectly +;; call lisp::unwind whereas it is defined (in this file) to be +;; interned in the boot package. We've returned toplevel to its +;; previous definition. +(defun toplevel (&rest foo) (throw '|top_level| '|restart|)) +;;(defun toplevel (&rest foo) (lisp::unwind)) + (define-function 'top-level #'toplevel) (define-function 'unwind #'|spadThrow|) (define-function 'resume #'|spadThrow|) @@ -147,8 +128,8 @@ previous definition. ((string= type "boot") #-:CCL (boot input-file - (setq lfile (make-pathname :type "lisp" - :defaults input-file))) + (setq lfile (make-pathname :type "lisp" + :defaults input-file))) #+:CCL (boot input-file (setq lfile (make-pathname :name (pathname-name input-file) @@ -157,7 +138,7 @@ previous definition. ((string= type "lisp") (load input-file)) ((string= type "bbin") (load input-file)) ((and (string= type "input") - |$useNewParser|) + |$useNewParser|) (|ncINTERPFILE| input-file Echo-Meta)) (t (spad input-file))))) @@ -171,8 +152,8 @@ previous definition. (setq |$algebraOutputStream| (setq |$fortranOutputStream| (setq |$texOutputStream| - (setq |$formulaOutputStream| - (setq |conOutStream| (make-synonym-stream '*terminal-io*)))))) + (setq |$formulaOutputStream| + (setq |conOutStream| (make-synonym-stream '*terminal-io*)))))) ;; non-interactive restarts... (defun restart0 () @@ -216,7 +197,7 @@ previous definition. (setq |$sourceFiles| ()) ;; set in readSpad2Cmd -(setq |$localVars| ()) ;checked by isType +(setq |$localVars| ()) ;checked by isType (setq |$highlightFontOn| (concat " " |$boldString|)) (setq |$highlightFontOff| (concat |$normalString| " ")) @@ -240,12 +221,12 @@ previous definition. (UNTRACE) (|untrace| NIL) (|clearClams|) - ;; bind output to nulloutstream + ;; bind output to nulloutstream (let ((*standard-output* (make-broadcast-stream))) - (|resetWorkspaceVariables|)) + (|resetWorkspaceVariables|)) (setq |$specialCharacters| |$plainRTspecialCharacters|) - (load (make-absolute-filename "lib/interp/obey")) + (load (make-absolute-filename "lib/interp/obey")) (system:disksave filename :restart-function restart-hook :full-gc t)) #+:Lucid (define-function 'user::save-system #'boot::save-system) (defun |undoINITIALIZE| () ()) @@ -279,17 +260,17 @@ previous definition. (setq line (read-line in nil nil)) (cond ((null line) - (when key - (setf (gethash key *msghash*) msg)) - (throw 'done nil)) + (when key + (setf (gethash key *msghash*) msg)) + (throw 'done nil)) ((= (length line) 0)) ((char= (schar line 0) #\S) - (when key - (setf (gethash key *msghash*) msg)) - (setq key (intern line "BOOT")) - (setq msg "")) + (when key + (setf (gethash key *msghash*) msg)) + (setq key (intern line "BOOT")) + (setq msg "")) ('else - (setq msg (concatenate 'string msg line))))))))) + (setq msg (concatenate 'string msg line))))))))) (defun |fetchKeyedMsg| (key ignore) (declare (ignore ignore)) @@ -331,16 +312,16 @@ previous definition. (defun |setViewportProcess| () (setq |$ViewportProcessToWatch| (stringimage (CDR - (|processInteractive| '(|key| (|%%| -2)) NIL) )))) + (|processInteractive| '(|key| (|%%| -2)) NIL) )))) (defun |waitForViewport| () (progn (do () ((not (zerop (obey - (concat - "ps " - |$ViewportProcessToWatch| - " > /dev/null"))))) + (concat + "ps " + |$ViewportProcessToWatch| + " > /dev/null"))))) ()) (|sockSendInt| |$MenuServer| 1) (|setIOindex| (- |$IOindex| 3)) @@ -358,7 +339,7 @@ previous definition. (defun print-xdr-stream (x y z) (format y "XDR:~A" (xdr-stream-name x))) #+:akcl (defstruct (xdr-stream - (:print-function print-xdr-stream)) + (:print-function print-xdr-stream)) "A structure to hold XDR streams. The stream is printed out." (handle ) ;; this is what is used for xdr-open xdr-read xdr-write (name )) ;; this is used for printing @@ -415,9 +396,3 @@ previous definition. (setq echo-meta nil) (defun /versioncheck (n) (unless (= n /MAJOR-VERSION) (throw 'versioncheck -1))) -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} CMUCL {\bf src/interp/util.lisp.pamphlet} -\end{thebibliography} -\end{document} diff --git a/src/interp/postprop.lisp b/src/interp/postprop.lisp index 30ac7248..857ec26b 100644 --- a/src/interp/postprop.lisp +++ b/src/interp/postprop.lisp @@ -1,5 +1,7 @@ ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are diff --git a/src/interp/preparse.lisp.pamphlet b/src/interp/preparse.lisp index 55eb34d9..5c2cf911 100644 --- a/src/interp/preparse.lisp.pamphlet +++ b/src/interp/preparse.lisp @@ -1,44 +1,7 @@ -\documentclass{article} -\usepackage{axiom} -\begin{document} -\title{\$SPAD/src/interp preparse.lisp} -\author{Timothy Daly} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\begin{verbatim} -NAME: Pre-Parsing Code -PURPOSE: BOOT lines are massaged by PREPARSE to make them easier to parse: - 1. Trailing -- comments are removed (this is already done, actually). - 2. Comments between { and } are removed. - 3. BOOT code is column-sensitive. Code which lines up columnarly is - parenthesized and semicolonized accordingly. For example, - - a - b - c - d - e - - becomes - - a - (b; - c - d) - e - - Note that to do this correctly, we also need to keep track of - parentheses already in the code. - -\end{verbatim} -\section{License} -<<license>>= ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are @@ -68,9 +31,31 @@ PURPOSE: BOOT lines are massaged by PREPARSE to make them easier to parse: ;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -@ -<<*>>= -<<license>> +;; NAME: Pre-Parsing Code +;; PURPOSE: BOOT lines are massaged by PREPARSE to make them easier to parse: +;; 1. Trailing -- comments are removed (this is already done, actually). +;; 2. Comments between { and } are removed. +;; 3. BOOT code is column-sensitive. Code which lines up columnarly is +;; parenthesized and semicolonized accordingly. For example, +;; +;; a +;; b +;; c +;; d +;; e +;; +;; becomes +;; +;; a +;; (b; +;; c +;; d) +;; e +;; +;; Note that to do this correctly, we also need to keep track of +;; parentheses already in the code. + + (IMPORT-MODULE "fnewmeta") @@ -113,19 +98,19 @@ PURPOSE: BOOT lines are massaged by PREPARSE to make them easier to parse: (defun PREPARSE (Strm &aux (stack ())) (SETQ $COMBLOCKLIST NIL $skipme NIL) (when $preparse-last-line - (if (pairp $preparse-last-line) - (setq stack $preparse-last-line) - (push $preparse-last-line stack)) + (if (pairp $preparse-last-line) + (setq stack $preparse-last-line) + (push $preparse-last-line stack)) (setq $INDEX (- $INDEX (length stack)))) (let ((U (PREPARSE1 stack))) (if $skipme (preparse strm) (progn - (if $preparseReportIfTrue (PARSEPRINT U)) - (setq |$headerDocumentation| NIL) - (SETQ |$docList| NIL) - (SETQ |$maxSignatureLineNumber| 0) - (SETQ |$constructorLineNumber| (IFCAR (IFCAR U))) - U)))) + (if $preparseReportIfTrue (PARSEPRINT U)) + (setq |$headerDocumentation| NIL) + (SETQ |$docList| NIL) + (SETQ |$maxSignatureLineNumber| 0) + (SETQ |$constructorLineNumber| (IFCAR (IFCAR U))) + U)))) (defun PREPARSE1 (LineList) (PROG (($LINELIST LineList) $EchoLineStack NUM A I L PSLOC @@ -145,8 +130,8 @@ PURPOSE: BOOT lines are massaged by PREPARSE to make them easier to parse: (PREPARSE-ECHO LineList) (setq $preparse-last-line nil) ;don't reread this line (SETQ LINE a) - (CATCH 'SPAD_READER (|doSystemCommand| (subseq LINE 1))) - (GO READLOOP))) + (CATCH 'SPAD_READER (|doSystemCommand| (subseq LINE 1))) + (GO READLOOP))) (setq L (LENGTH A)) (if (EQ L 0) (GO READLOOP)) (setq PSLOC SLOC) @@ -197,9 +182,9 @@ PURPOSE: BOOT lines are massaged by PREPARSE to make them easier to parse: (when (and LINES (EQL SLOC 0)) (IF (AND NCOMBLOCK (NOT (ZEROP (CAR NCOMBLOCK)))) (FINCOMBLOCK NUM NUMS LOCS NCOMBLOCK linelist)) - (IF (NOT (IS-CONSOLE in-stream)) - (setq $preparse-last-line - (nreverse $echolinestack))) + (IF (NOT (IS-CONSOLE in-stream)) + (setq $preparse-last-line + (nreverse $echolinestack))) (RETURN (PAIR (NREVERSE NUMS) (PARSEPILES (NREVERSE LOCS) (NREVERSE LINES))))) (cond ((> PARENLEV 0) (PUSH NIL LOCS) (setq SLOC PSLOC) (GO REREAD))) @@ -225,22 +210,22 @@ PURPOSE: BOOT lines are massaged by PREPARSE to make them easier to parse: (DEFUN FINCOMBLOCK (NUM OLDNUMS OLDLOCS NCBLOCK linelist) (PUSH (COND ((EQL (CAR NCBLOCK) 0) (CONS (1- NUM) (REVERSE (CDR NCBLOCK)))) - ;; comment for constructor itself paired with 1st line -1 + ;; comment for constructor itself paired with 1st line -1 ('T (COND ($EchoLineStack (setq NUM (POP $EchoLineStack)) (PREPARSE-ECHO linelist) (SETQ $EchoLineStack (LIST NUM)))) - (cons + (cons ;; scan backwards for line to left of current - (DO ((onums oldnums (cdr onums)) - (olocs oldlocs (cdr olocs)) - (sloc (car ncblock))) - ((null onums) nil) - (if (and (numberp (car olocs)) - (<= (car olocs) sloc)) - (return (car onums)))) - (REVERSE (CDR NCBLOCK))))) + (DO ((onums oldnums (cdr onums)) + (olocs oldlocs (cdr olocs)) + (sloc (car ncblock))) + ((null onums) nil) + (if (and (numberp (car olocs)) + (<= (car olocs) sloc)) + (return (car onums)))) + (REVERSE (CDR NCBLOCK))))) $COMBLOCKLIST)) (defun PARSEPRINT (L) @@ -276,7 +261,7 @@ PURPOSE: BOOT lines are massaged by PREPARSE to make them easier to parse: ((INITIAL-SUBSTRING ")endif" LINE) (RETURN (preparseReadLine X))) ((INITIAL-SUBSTRING ")fin" LINE) - (RETURN (CONS IND NIL)))))) + (RETURN (CONS IND NIL)))))) (RETURN (SKIP-IFBLOCK X)) ) ) (DEFUN SKIP-TO-ENDIF (X) @@ -307,8 +292,8 @@ PURPOSE: BOOT lines are massaged by PREPARSE to make them easier to parse: ((INITIAL-SUBSTRING ")endif" LINE) (RETURN (preparseReadLine X))) ((INITIAL-SUBSTRING ")fin" LINE) - (SETQ *EOF* T) - (RETURN (CONS IND NIL)) ) ))) + (SETQ *EOF* T) + (RETURN (CONS IND NIL)) ) ))) (RETURN (CONS IND LINE)) )) (DEFUN preparseReadLine1 (X) @@ -412,9 +397,3 @@ C. If the entire line consists of the single keyword then or else, leave it alon (SETELT LINE (MAXINDEX LINE) CHAR) (if (char= CHAR #\;) LINE (suffix #\; LINE))) ((suffix char LINE)))) -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/interp/property.lisp.pamphlet b/src/interp/property.lisp index d79d44d3..08cd1b57 100644 --- a/src/interp/property.lisp.pamphlet +++ b/src/interp/property.lisp @@ -1,40 +1,7 @@ -%% Oh Emacs, this is a -*- Lisp -*- file despite apperance. -\documentclass{article} -\usepackage{axiom} - -\title{\File{src/interp/property.lisp} Pamphlet} -\author{Timothy Daly} - -\begin{document} -\maketitle - -\begin{abstract} -\end{abstract} - -\tableofcontents -\eject - -\begin{verbatim} -This file contains most of the code that puts properties on -identifiers in the Scratchpad II system. If it was not possible -to actually put the code here, we have pointers to where such -property list manipulation is being done. - -Pointers: -o see NEWAUX LISP for some code that puts GENERIC and RENAMETOK - properties on identifiers for the parser -o coerceIntCommute puts the "commute" property on constructors. -o coerceRetract puts the "retract" property on constructors. -o there is some code at the end of SPECEVAL BOOT that puts "up" - properties on some special handlers. - -\end{verbatim} - -\section{License} - -<<license>>= ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are @@ -64,25 +31,21 @@ o there is some code at the end of SPECEVAL BOOT that puts "up" ;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -@ -\section{bug fix} +;; This file contains most of the code that puts properties on +;; identifiers in the Scratchpad II system. If it was not possible +;; to actually put the code here, we have pointers to where such +;; property list manipulation is being done. + +;; Pointers: +;; o see NEWAUX LISP for some code that puts GENERIC and RENAMETOK +;; properties on identifiers for the parser +;; o coerceIntCommute puts the "commute" property on constructors. +;; o coerceRetract puts the "retract" property on constructors. +;; o there is some code at the end of SPECEVAL BOOT that puts "up" +;; properties on some special handlers. -These two lines were commented out in the original sources. -However both of these lines involved control characters that -latex cannot handle. control-V and control-H should be the -actual control characters, not the text replacement shown here. -;;(control-V |parseUpArrow|) -;;(|control-H| |parseLeftArrow|) -<<clip>>= -@ -We have a similar problem with the control-G character. -;; (control-G |compContained|) -<<clip1>>= -@ -<<*>>= -<<license>> (in-package "BOOT") @@ -170,10 +133,10 @@ We have a similar problem with the control-G character. (|binom| SUBSPAN |binomSub|) (|binom| SUPERSPAN |binomSuper|) (|binom| WIDTH |binomWidth|) - (ALTSUPERSUB APP |altSuperSubApp|) - (ALTSUPERSUB SUBSPAN |altSuperSubSub|) + (ALTSUPERSUB APP |altSuperSubApp|) + (ALTSUPERSUB SUBSPAN |altSuperSubSub|) (ALTSUPERSUB SUPERSPAN |altSuperSubSuper|) - (ALTSUPERSUB WIDTH |altSuperSubWidth|) + (ALTSUPERSUB WIDTH |altSuperSubWidth|) (BOX APP |boxApp|) (BOX SUBSPAN |boxSub|) (BOX SUPERSPAN |boxSuper|) @@ -190,7 +153,7 @@ We have a similar problem with the control-G character. (MATRIX SUBSPAN |matSub|) (MATRIX SUPERSPAN |matSuper|) (MATRIX WIDTH |matWidth|) - (NOTHING APP |nothingApp|) + (NOTHING APP |nothingApp|) (NOTHING SUPERSPAN |nothingSuper|) (NOTHING SUBSPAN |nothingSub|) (NOTHING WIDTH |nothingWidth|) @@ -208,10 +171,10 @@ We have a similar problem with the control-G character. (PAREN SUBSPAN |qTSub|) (PAREN SUPERSPAN |qTSuper|) (PAREN WIDTH |qTWidth|) - (ROOT APP |rootApp|) - (ROOT SUBSPAN |rootSub|) + (ROOT APP |rootApp|) + (ROOT SUBSPAN |rootSub|) (ROOT SUPERSPAN |rootSuper|) - (ROOT WIDTH |rootWidth|) + (ROOT WIDTH |rootWidth|) (ROW WIDTH |eq0|) (SC APP |appsc|) (SC SUBSPAN |agggsub|) @@ -219,10 +182,10 @@ We have a similar problem with the control-G character. (SC WIDTH |widthSC|) (SETQ APP |appsetq|) (SETQ WIDTH |letWidth|) - (SLASH APP |slashApp|) + (SLASH APP |slashApp|) (SLASH SUBSPAN |slashSub|) (SLASH SUPERSPAN |slashSuper|) - (SLASH WIDTH |slashWidth|) + (SLASH WIDTH |slashWidth|) (SUB APP |appsub|) (SUB SUBSPAN |subSub|) (SUB SUPERSPAN |subSuper|) @@ -400,7 +363,12 @@ We have a similar problem with the control-G character. (\: |parseColon|) (|::| |parseCoerce|) (@ |parseAtSign|) -<<clip>> +;; These two lines were commented out in the original sources. +;; However both of these lines involved control characters that +;; latex cannot handle. control-V and control-H should be the +;; actual control characters, not the text replacement shown here. +;; ;;(control-V |parseUpArrow|) +;; ;;(|control-H| |parseLeftArrow|) (|and| |parseAnd|) (CATEGORY |parseCategory|) (|construct| |parseConstruct|) @@ -440,7 +408,7 @@ We have a similar problem with the control-G character. (COLLECT |postCollect|) (|:BF:| |postBigFloat|) (|in| |postin|) ;" the infix operator version of in" - (IN |postIn|) ;" the iterator form of in" + (IN |postIn|) ;" the iterator form of in" (REPEAT |postRepeat|) (|TupleCollect| |postTupleCollect|) (|add| |postAdd|) @@ -456,7 +424,7 @@ We have a similar problem with the control-G character. (|Join| |postJoin|) (|Signature| |postSignature|) (CATEGORY |postCategory|) -;;( |postDef|) +;;( |postDef|) (== |postDef|) (|==>| |postMDef|) (|->| |postMapping|) @@ -584,7 +552,9 @@ We have a similar problem with the control-G character. (|:| |compColon|) (\:\: |compCoerce|) (QUOTE |compQuote|) -<<clip1>> +;; We have a similar problem with the control-G character. +;; ;; (control-G |compContained|) + (|add| |compAdd|) (CAPSULE |compCapsule|) (|case| |compCase|) @@ -631,9 +601,3 @@ We have a similar problem with the control-G character. (LET |compSetqInteractive|) )) (MAKEPROP (CAR X) 'INTERACTIVE (CREATE-SBC (CADR X)))) -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/interp/setq.lisp.pamphlet b/src/interp/setq.lisp index 6e8e580a..bc9908ac 100644 --- a/src/interp/setq.lisp.pamphlet +++ b/src/interp/setq.lisp @@ -1,24 +1,7 @@ -%% Oh Emacs, this is a -*- Lisp -*- file despite apperance. -\documentclass{article} -\usepackage{axiom} - -\title{\File{src/interp/setq.lisp} Pamphlet} -\author{Timothy Daly} - -\begin{document} - -\maketitle -\begin{abstract} -\end{abstract} - -\tableofcontents -\eject - -\section{License} - -<<license>>= ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are @@ -48,9 +31,6 @@ ;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -@ -<<*>>= -<<license>> (setq copyrights '( "Copyright The Numerical Algorithms Group Limited 1991-94." @@ -95,8 +75,8 @@ (SETQ |$compileOnlyCertainItems| NIL) (SETQ |$devaluateList| NIL) (SETQ |$doNotCompressHashTableIfTrue| NIL) -(SETQ |$mutableChecking| NIL) ; used in DEFINE BOOT -(SETQ |$mutableDomains| NIL) ; checked in DEFINE BOOT +(SETQ |$mutableChecking| NIL) ; used in DEFINE BOOT +(SETQ |$mutableDomains| NIL) ; checked in DEFINE BOOT (SETQ |$functionLocations| NIL) (SETQ |$functorLocalParameters| NIL) ; used in compSymbol (SETQ /RELEASE '"UNKNOWN") @@ -128,8 +108,8 @@ (SETQ INITCOLUMN 0) (SETQ |$functionTable| NIL) (SETQ |$spaddefs| NIL) -(SETQ |$xeditIsConsole| NIL) -(SETQ |$echoInputLines| NIL) ;; This is in SETVART also +(SETQ |$xeditIsConsole| NIL) +(SETQ |$echoInputLines| NIL) ;; This is in SETVART also (SETQ |$Slot1DataBase| (MAKE-HASHTABLE 'ID)) ;; See NRUNTIME BOOT (SETQ |$pfKeysForBrowse| NIL) (SETQ MARG 0) @@ -161,12 +141,12 @@ (SETQ |$InterpreterMacroAlist| '((|%i| . (|complex| 0 1)) - (|%e| . (|exp| 1)) - (|%pi| . (|pi|)) - (|SF| . (|DoubleFloat|)) - (|%infinity| . (|infinity|)) - (|%plusInfinity| . (|plusInfinity|)) - (|%minusInfinity| . (|minusInfinity|)))) + (|%e| . (|exp| 1)) + (|%pi| . (|pi|)) + (|SF| . (|DoubleFloat|)) + (|%infinity| . (|infinity|)) + (|%plusInfinity| . (|plusInfinity|)) + (|%minusInfinity| . (|minusInfinity|)))) ;; variables controlling companion pages (see copage.boot) (SETQ |$HTCompanionWindowID| nil) @@ -185,7 +165,7 @@ (SETQ RLGENSYMLST NIL) (SETQ XTOKENREADER 'SPADTOK) (SETQ |$delimiterTokenList| - '(| | |)| |(| |{| |}| |[| |]| ENDOFLINECHR EOI EOL |END_LINE|)) + '(| | |)| |(| |{| |}| |[| |]| ENDOFLINECHR EOI EOL |END_LINE|)) (SETQ |$generalTokenIfTrue| NIL) (SETQ OPASSOC NIL) (SETQ SPADSYSKEY '(EOI EOL)) @@ -214,60 +194,60 @@ ;; These were originally in INIT LISP -(SETQ |$dependeeClosureAlist| NIL) +(SETQ |$dependeeClosureAlist| NIL) (SETQ |$userModemaps| NIL) (SETQ |$functorForm| NIL) (SETQ |$InitialCommandSynonymAlist| '( - (|?| . "what commands") - (|ap| . "what things") - (|apr| . "what things") + (|?| . "what commands") + (|ap| . "what things") + (|apr| . "what things") (|apropos| . "what things") - (|cache| . "set functions cache") - (|cl| . "clear") - (|cls| . "zsystemdevelopment )cls") - (|cms| . "system") - (|co| . "compiler") - (|d| . "display") - (|dep| . "display dependents") + (|cache| . "set functions cache") + (|cl| . "clear") + (|cls| . "zsystemdevelopment )cls") + (|cms| . "system") + (|co| . "compiler") + (|d| . "display") + (|dep| . "display dependents") (|dependents| . "display dependents") - (|e| . "edit") + (|e| . "edit") (|expose| . "set expose add constructor") - (|fc| . "zsystemdevelopment )c") - (|fd| . "zsystemdevelopment )d") - (|fdt| . "zsystemdevelopment )dt") - (|fct| . "zsystemdevelopment )ct") - (|fctl| . "zsystemdevelopment )ctl") - (|fe| . "zsystemdevelopment )e") - (|fec| . "zsystemdevelopment )ec") - (|fect| . "zsystemdevelopment )ect") - (|fns| . "exec spadfn") + (|fc| . "zsystemdevelopment )c") + (|fd| . "zsystemdevelopment )d") + (|fdt| . "zsystemdevelopment )dt") + (|fct| . "zsystemdevelopment )ct") + (|fctl| . "zsystemdevelopment )ctl") + (|fe| . "zsystemdevelopment )e") + (|fec| . "zsystemdevelopment )ec") + (|fect| . "zsystemdevelopment )ect") + (|fns| . "exec spadfn") (|fortran| . "set output fortran") - (|h| . "help") - (|hd| . "system hypertex &") - (|kclam| . "boot clearClams ( )") + (|h| . "help") + (|hd| . "system hypertex &") + (|kclam| . "boot clearClams ( )") (|killcaches| . "boot clearConstructorAndLisplibCaches ( )") - (|patch| . "zsystemdevelopment )patch") - (|pause| . "zsystemdevelopment )pause") + (|patch| . "zsystemdevelopment )patch") + (|pause| . "zsystemdevelopment )pause") (|prompt| . "set message prompt") (|recurrence| . "set functions recurrence") (|restore| . "history )restore") - (|save| . "history )save") + (|save| . "history )save") (|startGraphics| . "system $AXIOM/lib/viewman &") (|startNAGLink| . "system $AXIOM/lib/nagman &") (|stopGraphics| . "lisp (|sockSendSignal| 2 15)") (|stopNAGLink| . "lisp (|sockSendSignal| 8 15)") - (|time| . "set message time") - (|type| . "set message type") + (|time| . "set message time") + (|type| . "set message type") (|unexpose| . "set expose drop constructor") - (|up| . "zsystemdevelopment )update") + (|up| . "zsystemdevelopment )update") (|version| . "lisp *yearweek*") - (|w| . "what") - (|wc| . "what categories") - (|wd| . "what domains") + (|w| . "what") + (|wc| . "what categories") + (|wd| . "what domains") (|who| . "lisp (pprint credits)") - (|wp| . "what packages") - (|ws| . "what synonyms") + (|wp| . "what packages") + (|ws| . "what synonyms") )) (SETQ |$CommandSynonymAlist| (COPY |$InitialCommandSynonymAlist|)) @@ -303,7 +283,7 @@ (SETQ |$tracedMapSignatures| ()) (SETQ |$highlightAllowed| 'T) - ;" used in BRIGHTPRINT and is a )set variable" + ;" used in BRIGHTPRINT and is a )set variable" (SETQ |$printStorageIfTrue| NIL) ;; storage info disabled in common lisp @@ -349,44 +329,44 @@ ;; Following were originally in EXPLORE BOOT -(SETQ |$xdatabase| NIL) +(SETQ |$xdatabase| NIL) (SETQ |$CatOfCatDatabase| NIL) (SETQ |$DomOfCatDatabase| NIL) (SETQ |$JoinOfDomDatabase| NIL) (SETQ |$JoinOfCatDatabase| NIL) -(SETQ |$attributeDb| NIL) +(SETQ |$attributeDb| NIL) (SETQ |$abbreviateIfTrue| NIL) -(SETQ |$deltax| 0) -(SETQ |$deltay| 0) -(SETQ |$displayDomains| 'T) -(SETQ |$displayTowardAncestors| NIL) -(SETQ |$focus| NIL) +(SETQ |$deltax| 0) +(SETQ |$deltay| 0) +(SETQ |$displayDomains| 'T) +(SETQ |$displayTowardAncestors| NIL) +(SETQ |$focus| NIL) (SETQ |$focusAccessPath| NIL) (SETQ |$minimumSeparation| 3) -(SETQ |$origMaxColumn| 80) +(SETQ |$origMaxColumn| 80) (SETQ |$origMaxRow| 20) -(SETQ |$origMinColumn| 1) +(SETQ |$origMinColumn| 1) (SETQ |$origMinRow| 1) ;; ---- start of initial settings for variables used in test.boot (SETQ |$testOutputLineFlag| NIL) ;; referenced by charyTop, prnd - ;; to stash lines + ;; to stash lines (SETQ |$testOutputLineStack| NIL) ;; saves lines to be printed - ;; (needed to convert lines for use - ;; in hypertex) -(SETQ |$runTestFlag| NIL) ;; referenced by maPrin to stash - ;; output by recordAndPrint to not - ;; print type/time -(SETQ |$mkTestFlag| NIL) ;; referenced by READLN to stash input - ;; by maPrin to stash output - ;; by recordAndPrint to write i/o - ;; onto $testStream -(SETQ |$mkTestInputStack| NIL) ;; saves input for $testStream - ;; (see READLN) -(SETQ |$mkTestOutputStack| NIL) ;; saves output for $testStream - ;; (see maPrin) + ;; (needed to convert lines for use + ;; in hypertex) +(SETQ |$runTestFlag| NIL) ;; referenced by maPrin to stash + ;; output by recordAndPrint to not + ;; print type/time +(SETQ |$mkTestFlag| NIL) ;; referenced by READLN to stash input + ;; by maPrin to stash output + ;; by recordAndPrint to write i/o + ;; onto $testStream +(SETQ |$mkTestInputStack| NIL) ;; saves input for $testStream + ;; (see READLN) +(SETQ |$mkTestOutputStack| NIL) ;; saves output for $testStream + ;; (see maPrin) ;; ---- end of initial settings for variables used in test.boot @@ -487,9 +467,3 @@ "Dan Zwillinger" )) -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/interp/sfsfun-l.lisp.pamphlet b/src/interp/sfsfun-l.lisp index c7c992e0..b969fb53 100644 --- a/src/interp/sfsfun-l.lisp.pamphlet +++ b/src/interp/sfsfun-l.lisp @@ -1,18 +1,7 @@ -\documentclass{article} -\usepackage{axiom} -\begin{document} -\title{\$SPAD/src/interp sfsfun-l.lisp} -\author{Timothy Daly} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{License} -<<license>>= ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are @@ -42,9 +31,6 @@ ;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -@ -<<*>>= -<<license>> (in-package "BOOT") @@ -62,8 +48,8 @@ (defun c-to-r (c) (let ((r (realpart c)) (i (imagpart c))) (if (or (zerop i) (< (abs i) (* 1.0E-10 (abs r)))) - r - (|error| "Result is not real.")) )) + r + (|error| "Result is not real.")) )) ;; Wrappers for functions in the special function package (defun rlngamma (x) (|lnrgamma| x) ) @@ -83,9 +69,3 @@ (defun cbesseli (v z) (c-to-s (|BesselI| (s-to-c v) (s-to-c z)) )) (defun chyper0f1 (a z) (c-to-s (|chebf01| (s-to-c a) (s-to-c z)) )) -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/interp/sockio.lisp.pamphlet b/src/interp/sockio.lisp index 2a585267..66b8aebc 100644 --- a/src/interp/sockio.lisp.pamphlet +++ b/src/interp/sockio.lisp @@ -1,18 +1,7 @@ -\documentclass{article} -\usepackage{axiom} -\begin{document} -\title{\$SPAD/src/interp sockio.lisp} -\author{Timothy Daly} -\maketitle -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject -\section{License} -<<license>>= ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are @@ -42,9 +31,6 @@ ;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -@ -<<*>>= -<<license>> ;; load C socket functions @@ -180,10 +166,10 @@ (defconstant SessionIO 4) (defconstant MessageServer 5) (defconstant InterpWindow 6) -(defconstant KillSpad 7) -(defconstant DebugWindow 8) +(defconstant KillSpad 7) +(defconstant DebugWindow 8) (defconstant NAGLinkServer 8) -(defconstant Forker 9) +(defconstant Forker 9) ;; same constants for use in BOOT (defconstant |$SessionManager| SessionManager) @@ -192,10 +178,10 @@ (defconstant |$SessionIO| SessionIO) (defconstant |$MessageServer| MessageServer) (defconstant |$InterpWindow| InterpWindow) -(defconstant |$KillSpad| KillSpad) +(defconstant |$KillSpad| KillSpad) (defconstant |$DebugWindow| DebugWindow) (defconstant |$NAGLinkServer| NAGLinkServer) -(defconstant |$Forker| Forker) +(defconstant |$Forker| Forker) ;; Session Manager action requests @@ -210,8 +196,8 @@ (defconstant QuietSpadCommand 9) (defconstant CloseClient 10) (defconstant QueryClients 11) -(defconstant QuerySpad 12) -(defconstant NonSmanSession 13) +(defconstant QuerySpad 12) +(defconstant NonSmanSession 13) (defconstant KillLispSystem 14) (defconstant |$CreateFrame| CreateFrame) @@ -225,27 +211,27 @@ (defconstant |$QuietSpadCommand| QuietSpadCommand) (defconstant |$CloseClient| CloseClient) (defconstant |$QueryClients| QueryClients) -(defconstant |$QuerySpad| QuerySpad) -(defconstant |$NonSmanSession| NonSmanSession) +(defconstant |$QuerySpad| QuerySpad) +(defconstant |$NonSmanSession| NonSmanSession) (defconstant |$KillLispSystem| KillLispSystem) ;; signal types (from /usr/include/sys/signal.h) #+(and :Lucid (not :ibm/370)) (progn - (defconstant SIGUSR1 16) ;; user defined signal 1 - (defconstant SIGUSR2 17) ;; user defined signal 2 + (defconstant SIGUSR1 16) ;; user defined signal 1 + (defconstant SIGUSR2 17) ;; user defined signal 2 ) #+:RIOS (progn - (defconstant SIGUSR1 30) ;; user defined signal 1 - (defconstant SIGUSR2 31) ;; user defined signal 2 + (defconstant SIGUSR1 30) ;; user defined signal 1 + (defconstant SIGUSR2 31) ;; user defined signal 2 ) #+:IBMPS2 (progn - (defconstant SIGUSR1 30) ;; user defined signal 1 - (defconstant SIGUSR2 31) ;; user defined signal 2 + (defconstant SIGUSR1 30) ;; user defined signal 1 + (defconstant SIGUSR2 31) ;; user defined signal 2 ) (setq |$NaNvalue| (NANQ)) @@ -255,9 +241,3 @@ (setq |$plusInfinity| MOST-POSITIVE-LONG-FLOAT) (setq |$minusInfinity| (- |$plusInfinity|)) -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/interp/spad.lisp.pamphlet b/src/interp/spad.lisp index da3cd6a4..b1735557 100644 --- a/src/interp/spad.lisp.pamphlet +++ b/src/interp/spad.lisp @@ -1,25 +1,7 @@ -%% Oh Emacs, this is a -*- Lisp -*- file despite apperance. - -\documentclass{article} -\usepackage{axiom} - -\title{\File{src/interp/spad.lisp} Pamphlet} -\author{Timothy Daly} - -\begin{document} -\maketitle - -\begin{abstract} -\end{abstract} - -\tableofcontents -\eject - -\section{License} - -<<license>>= ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are @@ -49,12 +31,8 @@ ;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -@ - -<<*>>= -<<license>> -; NAME: Scratchpad Package +; NAME: Scratchpad Package ; PURPOSE: This is an initialization and system-building file for Scratchpad. (IMPORT-MODULE "bootlex") @@ -136,14 +114,14 @@ (DEFUN /TRANSPAD (X) (PROG (proplist) - (setq proplist (LIST '(FLUID . |true|) - (CONS '|special| - (COPY-TREE |$InitialDomainsInScope|)))) - (SETQ |$InteractiveFrame| - (|addBinding| '|$DomainsInScope| proplist - (|addBinding| '|$Information| NIL - (COPY-TREE |$InitialModemapFrame|)))) - (RETURN (PROGN (S-PROCESS X) NIL)))) + (setq proplist (LIST '(FLUID . |true|) + (CONS '|special| + (COPY-TREE |$InitialDomainsInScope|)))) + (SETQ |$InteractiveFrame| + (|addBinding| '|$DomainsInScope| proplist + (|addBinding| '|$Information| NIL + (COPY-TREE |$InitialModemapFrame|)))) + (RETURN (PROGN (S-PROCESS X) NIL)))) ;; NIL needed below since END\_UNIT is not generated by current parser @@ -151,26 +129,26 @@ (SETQ |$compCount| 0) (EMBED '|comp| '(LAMBDA (X Y Z) - (PROG (U) - (SETQ |$compCount| (1+ |$compCount|)) - (SETQ |yesOrNo| (if (SETQ U (|comp| X Y Z)) - (if (EQUAL (SECOND U) Y) '|yes| (SECOND U)) - ('T '|no|))) - (|sayBrightly| (CONS (MAKE-FULL-CVEC |$compCount| " ") - (LIST X " --> " Y '|%b| |yesOrNo| '|%d|))) - (SETQ |$compCount| (1- |$compCount|)) - (RETURN U) ))) + (PROG (U) + (SETQ |$compCount| (1+ |$compCount|)) + (SETQ |yesOrNo| (if (SETQ U (|comp| X Y Z)) + (if (EQUAL (SECOND U) Y) '|yes| (SECOND U)) + ('T '|no|))) + (|sayBrightly| (CONS (MAKE-FULL-CVEC |$compCount| " ") + (LIST X " --> " Y '|%b| |yesOrNo| '|%d|))) + (SETQ |$compCount| (1- |$compCount|)) + (RETURN U) ))) (|comp| $x $m $f) (UNEMBED '|comp|)) (defun READ-SPAD (FN FM TO) (LET ((proplist - (LIST '(FLUID . |true|) - (CONS '|special| (COPY-TREE |$InitialDomainsInScope|))))) + (LIST '(FLUID . |true|) + (CONS '|special| (COPY-TREE |$InitialDomainsInScope|))))) (SETQ |$InteractiveFrame| - (|addBinding| '|$DomainsInScope| proplist - (|addBinding| '|$Information| NIL - (|makeInitialModemapFrame|)))) + (|addBinding| '|$DomainsInScope| proplist + (|addBinding| '|$Information| NIL + (|makeInitialModemapFrame|)))) (READ-SPAD0 FN 'SPAD FM TO))) (defun READ-INPUT (FN FM TO) (READ-SPAD0 FN 'INPUT FM TO)) @@ -182,8 +160,8 @@ (defun UNCONS (X) (COND ((ATOM X) X) - ((EQCAR X 'CONS) (CONS (SECOND X) (UNCONS (THIRD X)))) - (T (ERROR "UNCONS")))) + ((EQCAR X 'CONS) (CONS (SECOND X) (UNCONS (THIRD X)))) + (T (ERROR "UNCONS")))) (defun OPTIMIZE\&PRINT (X) (PRETTYPRINT (/MDEF X))) @@ -191,17 +169,17 @@ (let (c msg) (setq C (+ A B)) (setq MSG (STRCONC "(" (STRINGIMAGE A) " + " (STRINGIMAGE B) - " = " (STRINGIMAGE C) " MS.)")) + " = " (STRINGIMAGE C) " MS.)")) (PRINT (STRCONC (STRINGPAD "" (DIFFERENCE 80 (SIZE MSG))) MSG)))) (defun SPAD-MODETRAN (X) (D-TRAN X)) (defun SPAD-EVAL (X) (COND ((ATOM X) (EVAL X)) - ((CONS (FIRST X) (MAPCAR #'SPAD-EVAL (CDR X)))))) + ((CONS (FIRST X) (MAPCAR #'SPAD-EVAL (CDR X)))))) ;************************************************************************ -; SYSTEM COMMANDS +; SYSTEM COMMANDS ;************************************************************************ (defun CLEARDATABASE () (OBEY "ERASE MODEMAP DATABASE")) @@ -212,9 +190,9 @@ (defun READLISP (UPPER_CASE_FG) (let (v expr val ) (setq EXPR (READ-FROM-STRING - (IF UPPER_CASE_FG (string-upcase (line-buffer CURRENT-LINE)) - (line-buffer CURRENT-LINE)) - t nil :start (Line-CURRENT-INDEX CURRENT-LINE))) + (IF UPPER_CASE_FG (string-upcase (line-buffer CURRENT-LINE)) + (line-buffer CURRENT-LINE)) + t nil :start (Line-CURRENT-INDEX CURRENT-LINE))) (VMPRINT EXPR) (setq VAL ((LAMBDA (|$InteractiveMode|) (EVAL EXPR)) NIL)) (FORMAT t "~&VALUE = ~S" VAL) @@ -233,7 +211,7 @@ ; (SETQ /EDITFILE (LIST /EDIT-FN /EDIT-FT /EDIT-FM)) (SETQ /EDITFILE L) (COND - (Q (/RQ)) + (Q (/RQ)) ('T (/RF)) ) (FLAG |boot-NewKEY| 'KEY) (|terminateSystemCommand|) @@ -248,8 +226,8 @@ (defun /COMPINTERP (L OPTS) (SETQ /EDITFILE (/MKINFILENAM L)) (COND ((EQUAL OPTS "rf") (/RF)) - ((EQUAL OPTS "rq") (/RQ)) - ('T (/RQ-LIB))) + ((EQUAL OPTS "rq") (/RQ)) + ('T (/RQ-LIB))) (|terminateSystemCommand|) (|spadPrompt|)) @@ -281,18 +259,18 @@ (defun GP2COND (L) (COND ((NOT L) (ERROR "GP2COND")) - ((NOT (CDR L)) - (COND ((EQCAR (FIRST L) 'COLON) - (CONS (SECOND L) (LIST (LIST T 'FAIL)))) - (T (LIST (LIST T (FIRST L)))) )) - ((EQCAR (FIRST L) 'COLON) (CONS (CDAR L) (GP2COND (CDR L)))) - (T (ERROR "GP2COND")))) + ((NOT (CDR L)) + (COND ((EQCAR (FIRST L) 'COLON) + (CONS (SECOND L) (LIST (LIST T 'FAIL)))) + (T (LIST (LIST T (FIRST L)))) )) + ((EQCAR (FIRST L) 'COLON) (CONS (CDAR L) (GP2COND (CDR L)))) + (T (ERROR "GP2COND")))) (FLAG JUNKTOKLIST 'KEY) (defmacro |report| (L) (SUBST (SECOND L) 'x - '(COND ($reportFlag (sayBrightly x)) ((QUOTE T) NIL)))) + '(COND ($reportFlag (sayBrightly x)) ((QUOTE T) NIL)))) (defmacro |DomainSubstitutionMacro| (&rest L) (|DomainSubstitutionFunction| (first L) (second L))) @@ -343,54 +321,54 @@ (defun S-PROCESS (X) (let ((|$Index| 0) - (*print-pretty* t) - ($MACROASSOC ()) - ($NEWSPAD T) - (|$compUniquelyIfTrue| nil) - |$currentFunction| - |$topOp| - (|$semanticErrorStack| ()) - (|$warningStack| ()) - (|$returnMode| |$EmptyMode|) - (|$leaveLevelStack| ()) - $TOP_LEVEL |$insideFunctorIfTrue| |$insideExpressionIfTrue| - |$insideCoerceInteractiveHardIfTrue| |$insideWhereIfTrue| - |$insideCategoryIfTrue| |$insideCapsuleFunctionIfTrue| |$form| - (|$e| |$EmptyEnvironment|) - (|$genSDVar| 0) - (|$VariableCount| 0) - (|$previousTime| (TEMPUS-FUGIT))) + (*print-pretty* t) + ($MACROASSOC ()) + ($NEWSPAD T) + (|$compUniquelyIfTrue| nil) + |$currentFunction| + |$topOp| + (|$semanticErrorStack| ()) + (|$warningStack| ()) + (|$returnMode| |$EmptyMode|) + (|$leaveLevelStack| ()) + $TOP_LEVEL |$insideFunctorIfTrue| |$insideExpressionIfTrue| + |$insideCoerceInteractiveHardIfTrue| |$insideWhereIfTrue| + |$insideCategoryIfTrue| |$insideCapsuleFunctionIfTrue| |$form| + (|$e| |$EmptyEnvironment|) + (|$genSDVar| 0) + (|$VariableCount| 0) + (|$previousTime| (TEMPUS-FUGIT))) (prog ((CURSTRM CUROUTSTREAM) |$s| |$x| |$m| u) - (declare (special CURSTRM |$s| |$x| |$m| CUROUTSTREAM)) - (SETQ |$exitModeStack| ()) - (SETQ |$postStack| nil) - (SETQ |$TraceFlag| T) - (if (NOT X) (RETURN NIL)) - (setq X (if $BOOT (DEF-RENAME (|new2OldLisp| X)) - (|parseTransform| (|postTransform| X)))) - ;; (if |$TranslateOnly| (RETURN (SETQ |$Translation| X))) - (when |$postStack| (|displayPreCompilationErrors|) (RETURN NIL)) - (COND (|$PrintOnly| - (format t "~S =====>~%" |$currentLine|) - (RETURN (PRETTYPRINT X)))) - (if (NOT $BOOT) - (if |$InteractiveMode| - (|processInteractive| X NIL) - (if (setq U (|compTopLevel| X |$EmptyMode| - |$InteractiveFrame|)) - (SETQ |$InteractiveFrame| (third U)))) - (DEF-PROCESS X)) - (if |$semanticErrorStack| (|displaySemanticErrors|)) - (TERPRI)))) + (declare (special CURSTRM |$s| |$x| |$m| CUROUTSTREAM)) + (SETQ |$exitModeStack| ()) + (SETQ |$postStack| nil) + (SETQ |$TraceFlag| T) + (if (NOT X) (RETURN NIL)) + (setq X (if $BOOT (DEF-RENAME (|new2OldLisp| X)) + (|parseTransform| (|postTransform| X)))) + ;; (if |$TranslateOnly| (RETURN (SETQ |$Translation| X))) + (when |$postStack| (|displayPreCompilationErrors|) (RETURN NIL)) + (COND (|$PrintOnly| + (format t "~S =====>~%" |$currentLine|) + (RETURN (PRETTYPRINT X)))) + (if (NOT $BOOT) + (if |$InteractiveMode| + (|processInteractive| X NIL) + (if (setq U (|compTopLevel| X |$EmptyMode| + |$InteractiveFrame|)) + (SETQ |$InteractiveFrame| (third U)))) + (DEF-PROCESS X)) + (if |$semanticErrorStack| (|displaySemanticErrors|)) + (TERPRI)))) (MAKEPROP 'END_UNIT 'KEY T) (defun |process| (x) (COND ((NOT (EQ TOK 'END_UNIT)) - (SETQ DEBUGMODE 'NO) - (SPAD_SYNTAX_ERROR) - (if |$InteractiveMode| (|spadThrow|)) - (S-PROCESS x)))) + (SETQ DEBUGMODE 'NO) + (SPAD_SYNTAX_ERROR) + (if |$InteractiveMode| (|spadThrow|)) + (S-PROCESS x)))) (defun |evalSharpOne| (x \#1) (declare (special \#1)) (EVAL x)) @@ -398,12 +376,12 @@ (defun |New,ENTRY,1| () (let (ZZ str N RLGENSYMFG RLGENSYMLST |NewFLAG| XCAPE *PROMPT* - SINGLELINEMODE OK ISID NBLNK COUNT CHR ULCASEFG ($LINESTACK 'BEGIN_UNIT) - $TOKSTACK COMMENTCHR TOK LINE BACK INPUTSTREAM XTRANS - XTOKENREADER STACK STACKX TRAPFLAG) + SINGLELINEMODE OK ISID NBLNK COUNT CHR ULCASEFG ($LINESTACK 'BEGIN_UNIT) + $TOKSTACK COMMENTCHR TOK LINE BACK INPUTSTREAM XTRANS + XTOKENREADER STACK STACKX TRAPFLAG) (SETQ XTRANS '|boot-New| - XTOKENREADER 'NewSYSTOK - SYNTAX_ERROR 'SPAD_SYNTAX_ERROR) + XTOKENREADER 'NewSYSTOK + SYNTAX_ERROR 'SPAD_SYNTAX_ERROR) (FLAG |boot-NewKEY| 'KEY) (SETQ *PROMPT* 'Scratchpad-II) (PROMPT) @@ -415,8 +393,8 @@ (SETQ ULCASEFG T) (setq STR (|New,ENTRY,2| '|PARSE-NewEXPR| '|process| curinstream)) (if (/= 0 (setq N (NOTE STR))) - (progn (SETQ CURINSTREAM (POINTW N CURINSTREAM))) - ) + (progn (SETQ CURINSTREAM (POINTW N CURINSTREAM))) + ) '|END_OF_New|)) (defun |New,ENTRY,2| (RULE FN INPUTSTREAM) (declare (special INPUTSTREAM)) @@ -433,35 +411,35 @@ (defmacro try (X) `(LET ((|$autoLine|)) - (declare (special |$autoLine|)) - (|tryToFit| (|saveState|) ,X))) + (declare (special |$autoLine|)) + (|tryToFit| (|saveState|) ,X))) (mapcar #'(lambda (X) (MAKEPROP (CAR X) 'format (CADR X))) - '((COMMENT |formatCOMMENT|) - (SEQ |formatSEQ|) - (DEF |formatDEF|) - (LET |formatLET|) - (\: |formatColon|) - (ELT |formatELT|) - (SEGMENT |formatSEGMENT|) - (COND |formatCOND|) - (SCOND |formatSCOND|) - (QUOTE |formatQUOTE|) - (CONS |formatCONS|) - (|where| |formatWHERE|) - (APPEND |formatAPPEND|) - (REPEAT |formatREPEAT|) - (COLLECT |formatCOLLECT|) - (REDUCE |formatREDUCE|))) + '((COMMENT |formatCOMMENT|) + (SEQ |formatSEQ|) + (DEF |formatDEF|) + (LET |formatLET|) + (\: |formatColon|) + (ELT |formatELT|) + (SEGMENT |formatSEGMENT|) + (COND |formatCOND|) + (SCOND |formatSCOND|) + (QUOTE |formatQUOTE|) + (CONS |formatCONS|) + (|where| |formatWHERE|) + (APPEND |formatAPPEND|) + (REPEAT |formatREPEAT|) + (COLLECT |formatCOLLECT|) + (REDUCE |formatREDUCE|))) (defmacro |incTimeSum| (a b) (if (not |$InteractiveTimingStatsIfTrue|) a (let ((key b) (oldkey (gensym)) (val (gensym))) - `(prog (,oldkey ,val) - (setq ,oldkey (|incrementTimeSum| ,key)) - (setq ,val ,a) - (|incrementTimeSum| ,oldkey) - (return ,val))))) + `(prog (,oldkey ,val) + (setq ,oldkey (|incrementTimeSum| ,key)) + (setq ,val ,a) + (|incrementTimeSum| ,oldkey) + (return ,val))))) (defun GLESSEQP (X Y) (NOT (GGREATERP X Y))) @@ -473,19 +451,19 @@ (DEFUN ASSOCIATER (FN LST) (COND ((NULL LST) NIL) - ((NULL (CDR LST)) (CAR LST)) - ((LIST FN (CAR LST) (ASSOCIATER FN (CDR LST)))))) + ((NULL (CDR LST)) (CAR LST)) + ((LIST FN (CAR LST) (ASSOCIATER FN (CDR LST)))))) (defun ISLOCALOP-1 (IND) "Curindex points at character after '.'" (prog (selector buf termtok (NEWCHR (NEXTCHARACTER))) (if (TERMINATOR NEWCHR) (RETURN NIL)) (setq SELECTOR - (do ((x nil)) - (nil) - (if (terminator newchr) - (reverse x) - (push (setq newchr (nextcharacter)) x)))) + (do ((x nil)) + (nil) + (if (terminator newchr) + (reverse x) + (push (setq newchr (nextcharacter)) x)))) (if (EQUAL NEWCHR '\.) (RETURN (ISLOCALOP-1 IND))) (setq BUF (GETSTR (LENGTH SELECTOR))) (mapc #'(lambda (x) (suffix x buf)) selector) @@ -493,7 +471,7 @@ (setq TERMTOK (INTERN BUF)) (if (NOT (GET TERMTOK 'GENERIC)) (RETURN NIL)) (if (OR (GET TERMTOK '|Led|) (GET TERMTOK '|Nud|)) - (GET TERMTOK IND)) + (GET TERMTOK IND)) (return TERMTOK))) ; **** X. Random tables @@ -542,7 +520,7 @@ (DEFUN DECIMAL-LENGTH (X) (LET* ((K (FIX (* #.(LOG 2.0 10.) (INTEGER-LENGTH X)))) - (X (TRUNCATE (ABS X) (EXPT 10 (1- K))))) + (X (TRUNCATE (ABS X) (EXPT 10 (1- K))))) (IF (LESSP X 10) K (1+ K)))) ;(DEFUN DECIMAL-LENGTH2 (X) @@ -581,9 +559,9 @@ (defun |hashable| (dom) (memq (|knownEqualPred| dom) - #-Lucid '(EQ EQL EQUAL) - #+Lucid '(EQ EQL EQUAL EQUALP) - )) + #-Lucid '(EQ EQL EQUAL) + #+Lucid '(EQ EQL EQUAL EQUALP) + )) ;; simpler interpface to RDEFIOSTREAM (defun RDEFINSTREAM (&rest fn) @@ -600,9 +578,3 @@ `(spadcall (svref ,dollar (the fixnum ,n)))) -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/interp/spaderror.lisp.pamphlet b/src/interp/spaderror.lisp index 618a94e4..9d0ec3d3 100644 --- a/src/interp/spaderror.lisp.pamphlet +++ b/src/interp/spaderror.lisp @@ -1,24 +1,7 @@ -%% Oh Emacs, this is a -*- Lisp -*- file despite apperance. -\documentclass{article} -\usepackage{axiom} - -\title{\File{src/interp/spaderroor.lisp} Pamphlet} -\author{Timothy Daly} - -\begin{document} -\maketitle - -\begin{abstract} -\end{abstract} - -\tableofcontents -\eject - -\section{License} - -<<license>>= ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are @@ -48,9 +31,6 @@ ;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -@ -<<*>>= -<<license>> ;; this files contains basic routines for error handling (in-package "BOOT") @@ -80,8 +60,8 @@ (defmacro |trapNumericErrors| (form) `(let ((|$oldBreakMode| |$BreakMode|) - (|$BreakMode| '|trapNumerics|) - (val)) + (|$BreakMode| '|trapNumerics|) + (val)) (setq val (catch '|trapNumerics| ,form)) (if (eq val |$numericFailure|) val (cons 0 val)))) @@ -98,31 +78,31 @@ (load eval) (unembed 'system:universal-error-handler) (embed 'system:universal-error-handler - '(lambda (type correctable? op - continue-string error-string &rest args) - (block - nil - (setq |$NeedToSignalSessionManager| T) - (if (and (boundp '|$inLispVM|) (boundp '|$BreakMode|)) - (cond ((eq |$BreakMode| '|validate|) - (|systemError| (error-format error-string args))) - ((and (eq |$BreakMode| '|trapNumerics|) - (eq type :ERROR)) - (setq |$BreakMode| nil) (throw '|trapNumerics| |$numericFailure|)) + '(lambda (type correctable? op + continue-string error-string &rest args) + (block + nil + (setq |$NeedToSignalSessionManager| T) + (if (and (boundp '|$inLispVM|) (boundp '|$BreakMode|)) + (cond ((eq |$BreakMode| '|validate|) + (|systemError| (error-format error-string args))) + ((and (eq |$BreakMode| '|trapNumerics|) + (eq type :ERROR)) + (setq |$BreakMode| nil) (throw '|trapNumerics| |$numericFailure|)) ((and (eq |$BreakMode| '|trapNumerics|) - (boundp '|$oldBreakMode|) - (setq |$BreakMode| |$oldBreakMode|) - nil)) ;; resets error handler - ((and (null |$inLispVM|) - (memq |$BreakMode| '(|nobreak| |query| |resume|))) - (let ((|$inLispVM| T)) ;; turn off handler - (return - (|systemError| (error-format error-string args))))) - ((eq |$BreakMode| '|letPrint2|) - (setq |$BreakMode| nil) - (throw '|letPrint2| nil)))) - (apply system:universal-error-handler type correctable? op - continue-string error-string args ))))) + (boundp '|$oldBreakMode|) + (setq |$BreakMode| |$oldBreakMode|) + nil)) ;; resets error handler + ((and (null |$inLispVM|) + (memq |$BreakMode| '(|nobreak| |query| |resume|))) + (let ((|$inLispVM| T)) ;; turn off handler + (return + (|systemError| (error-format error-string args))))) + ((eq |$BreakMode| '|letPrint2|) + (setq |$BreakMode| nil) + (throw '|letPrint2| nil)))) + (apply system:universal-error-handler type correctable? op + continue-string error-string args ))))) @@ -133,9 +113,3 @@ -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/interp/union.lisp b/src/interp/union.lisp index 108d5f07..6698e36d 100644 --- a/src/interp/union.lisp +++ b/src/interp/union.lisp @@ -1,5 +1,7 @@ ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are diff --git a/src/interp/unlisp.lisp.pamphlet b/src/interp/unlisp.lisp index 6123b927..01e722de 100644 --- a/src/interp/unlisp.lisp.pamphlet +++ b/src/interp/unlisp.lisp @@ -1,60 +1,7 @@ -%% Oh Emacs, this is a -*- Lisp -*- file, despite appearance. -\documentclass{article} -\usepackage{axiom} - -\title{\File{src/interp/unlisp.lisp} Pamphlet} -\author{Stephen M. Watt, Timothy Daly} - -\begin{document} -\maketitle - -\begin{abstract} -\end{abstract} - -\tableofcontents -\eject - -\begin{verbatim} -Uncommon 1.6 -This package is a Boot interface for Common Lisp. -SMW 1989, 1990 - -Operating system interface - -The only non-common lisp functions used in this file are in this section. -The following functions are provided: - - OsRunProgram program &rest args - Run the named program with given arguments. - All I/O is to the current places. - Value returned is implementation-dependent. - - OsRunProgramToStream program &rest args - Run the named program with given arguments. - Input and error output to the current places. - Value returned is a stream of the program's standard output. - - OsEnvVarCharacter - The character which indicates OS environment variables in a string. - On Unix this is "$". - - OsEnvGet name - name is a string or a symbol - The string associated with the given name is returned. - This is from the environment on Unix. On CMS globalvars could be used. - - OsProcessNumber - Returns a unique number associated with the current session. - On Unix this is the process id. - The same workspace started a second time must give a different result. - -\end{verbatim} - -\section{License} - -<<license>>= ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are @@ -84,9 +31,40 @@ The following functions are provided: ;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -@ -<<*>>= -<<license>> +;; Uncommon 1.6 +;; This package is a Boot interface for Common Lisp. +;; SMW 1989, 1990 + +;; Operating system interface + +;; The only non-common lisp functions used in this file are in this section. +;; The following functions are provided: + +;; OsRunProgram program &rest args +;; Run the named program with given arguments. +;; All I/O is to the current places. +;; Value returned is implementation-dependent. + +;; OsRunProgramToStream program &rest args +;; Run the named program with given arguments. +;; Input and error output to the current places. +;; Value returned is a stream of the program's standard output. + +;; OsEnvVarCharacter +;; The character which indicates OS environment variables in a string. +;; On Unix this is "$". + +;; OsEnvGet name +;; name is a string or a symbol +;; The string associated with the given name is returned. +;; This is from the environment on Unix. On CMS globalvars could be used. + +;; OsProcessNumber +;; Returns a unique number associated with the current session. +;; On Unix this is the process id. +;; The same workspace started a second time must give a different result. + + (IMPORT-MODULE "sys-macros") (in-package "BOOT") @@ -285,8 +263,8 @@ The following functions are provided: ;; ;;(defun |ReadFileLineAt| (path pos) ;; (with-open-file (stream path :direction :input) -;; (file-position stream pos) -;; (read-line stream) )) +;; (file-position stream pos) +;; (read-line stream) )) ;; ;;(defun |UserHomeDirectory| () ;; (pathname-directory (user-homedir-pathname)) ) @@ -1119,16 +1097,10 @@ The following functions are provided: (let ((key-list nil)) (maphash #'(lambda (key val) (declare (ignore val)) - (setq key-list (cons key key-list)) ) + (setq key-list (cons key key-list)) ) tab ) key-list )) ;; CCL supplies a slightly more efficient version of logs to base 10, which ;; is useful in the WIDTH function. MCD. #+:KCL (defun log10 (u) (log u 10)) -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/interp/util.lisp b/src/interp/util.lisp new file mode 100644 index 00000000..730b1df5 --- /dev/null +++ b/src/interp/util.lisp @@ -0,0 +1,1118 @@ +;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. +;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. +;; +;; Redistribution and use in source and binary forms, with or without +;; modification, are permitted provided that the following conditions are +;; met: +;; +;; - Redistributions of source code must retain the above copyright +;; notice, this list of conditions and the following disclaimer. +;; +;; - Redistributions in binary form must reproduce the above copyright +;; notice, this list of conditions and the following disclaimer in +;; the documentation and/or other materials provided with the +;; distribution. +;; +;; - Neither the name of The Numerical ALgorithms Group Ltd. nor the +;; names of its contributors may be used to endorse or promote products +;; derived from this software without specific prior written permission. +;; +;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +;; IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +;; TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +;; PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER +;; OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +;; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +;; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +;; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +;; This file is a collection of utility functions that are useful +;; for system level work. A couple of the functions, `build-depsys' +;; and `build-interpsys' interface to the src/interp/Makefile. + +;; A second group of related functions allows us to rebuild portions +;; of the system from the command prompt. This varies from rebuilding +;; individual files to whole directories. The most complex functions +;; like `makespad' can rebuild the whole algebra tree. + +;; A third group of related functions are used to set up the +;; `autoload' mechanism. These enable whole subsystems to +;; be kept out of memory until they are used. + +;; A fourth group of related functions are used to construct and +;; search Emacs TAGS files. + +;; A fifth group of related functions are some translated boot +;; functions we need to define here so they work and are available +;; at load time. + + + +(IMPORT-MODULE "vmlisp") +(import-module "parsing") + +(in-package "BOOT") +(export '($directory-list $current-directory reroot + make-absolute-filename |$msgDatabaseName| |$defaultMsgDatabaseName|)) + +(defun our-write-date (file) (and #+kcl (probe-file file) + (file-write-date file))) + +(defun make-directory (direc) + (setq direc (namestring direc)) + (if (string= direc "") (|systemRootDirectory|) + (if (or (memq :unix *features*) + (memq 'unix *features*)) + (progn + (if (char/= (char direc 0) #\/) + (setq direc (concat (|systemRootDirectory|) "/" direc))) + (if (char/= (char direc (1- (length direc))) #\/) + (setq direc (concat direc "/"))) + direc) + (progn ;; Assume Windows conventions + (if (not (or (char= (char direc 0) #\/) + (char= (char direc 0) #\\) + (find #\: direc))) + (setq direc (concat (|systemRootDirectory|) "\\" direc))) + (if (not (or (char= (char direc (1- (length direc))) #\/) + (char= (char direc (1- (length direc))) #\\ ))) + (setq direc (concat direc "\\"))) + direc)))) + +(defun interp-make-directory (direc) + (setq direc (namestring direc)) + (if (string= direc "") $current-directory + (if (or (memq :unix *features*) + (memq 'unix *features*)) + (progn + (if (char/= (char $current-directory (1-(length $current-directory))) #\/) + (setq $current-directory (concat $current-directory "/"))) + (if (char/= (char direc 0) #\/) + (setq direc (concat $current-directory direc))) + (if (char/= (char direc (1- (length direc))) #\/) + (setq direc (concat direc "/"))) + direc) + (progn ;; Assume Windows conventions + (if (not (or (char= (char $current-directory (1- (length $current-directory))) #\/) + (char= (char $current-directory (1- (length $current-directory))) #\\ ))) + (setq $current-directory (concat $current-directory "\\"))) + (if (not (or (char= (char direc 0) #\/) + (char= (char direc 0) #\\) + (find #\: direc))) + (setq direc (concat $current-directory direc))) + (if (not (or (char= (char direc (1- (length direc))) #\/) + (char= (char direc (1- (length direc))) #\\ ))) + (setq direc (concat direc "\\"))) + direc)))) + +;; Various lisps use different ``extensions'' on the filename to indicate +;; that a file has been compiled. We set this variable correctly depending +;; on the system we are using. +(defvar *bin-path* + #+kcl "o" + #+lucid "bbin" + #+symbolics "bin" + #+cmulisp "fasl" + #+:ccl "not done this way at all") + +(defun load-directory (dir) + (let* ((direc (make-directory dir)) + (pattern (make-pathname :directory (pathname-directory direc) + :name :wild :type *bin-path*)) + (files (directory pattern))) + (mapcar #'load files))) + +(defun compspadfiles (filelist ;; should be a file containing files to compile + &optional (*default-pathname-defaults* + (pathname (concat (|systemRootDirectory|) + "nalgebra/")))) + (with-open-file (stream filelist) + (do ((fname (read-line stream nil nil) (read-line stream nil nil))) + ((null fname) 'done) + (setq fname (string-right-trim " *" fname)) + (when (not (equal (elt fname 0) #\*)) + (spad fname (concat (pathname-name fname) ".out")))))) + +(defun recompile-all-algebra-files (dir) ;; a desperation measure + (let* ((direc (make-directory dir)) + (pattern (make-pathname :directory (pathname-directory direc) + :name :wild :type "spad")) + (files (directory pattern)) + (*default-pathname-defaults* (pathname direc))) + (mapcar + #'(lambda (fname) (spad fname (concat (pathname-name fname) ".out"))) + files))) + +(defun fe (function file &optional (compflag nil) &aux (fn (pathname-name file))) + (let ((tbootfile (concat "/tmp/" fn ".boot")) + (tlispfile (concat "/tmp/" fn ".lisp"))) + (system::run-aix-program "fc" + :arguments (list (string function) + (namestring + (merge-pathnames file + (concat (|systemRootDirectory|) + "nboot/.boot")))) + :if-output-exists :supersede :output tbootfile) + (boot tbootfile tlispfile) + (if compflag (progn (compile-file tlispfile) + (load (make-pathname :type *bin-path* :defaults tlispfile))) + (load tlispfile)))) +(defun fc (function file) (fe function file t)) + +;; This function will compile any lisp code that has changed in a directory. +(defun recompile-directory (dir) + (let* ((direc (make-directory dir)) + (pattern (make-pathname :directory (pathname-directory direc) + :name :wild :type "lisp")) + (files (directory pattern))) + (mapcan #'recompile-file-if-necessary files))) + +;; This is a helper function that checks the time stamp between +;; the given file and its compiled binary. If the file has changed +;; since it was last compiled this function will recompile it. +(defun recompile-file-if-necessary (lfile) + (let* ((bfile (make-pathname :type *bin-path* :defaults lfile)) + (bdate (our-write-date bfile)) + (ldate (our-write-date lfile))) + (if (and bdate ldate (> bdate ldate)) nil + (progn + (format t "compiling ~a~%" lfile) + (compile-file lfile) + (list bfile))))) + +;; Force recompilation of all lisp files in a directory. +(defun recompile-all-files (dir) + (let* ((direc (make-directory dir)) + (pattern (make-pathname :directory (pathname-directory direc) + :name :wild :type "lisp")) + (files (directory pattern))) + (mapcar #'compile-file files))) + + +;; Recompile library lisp code if necessary. +(defun recompile-lib-directory (dir) + (let* ((direc (make-directory dir)) + (pattern (make-pathname :directory (pathname-directory direc) + :name :wild :type "NRLIB")) + (files (directory pattern))) + (mapcan #'recompile-NRLIB-if-necessary files))) + +(defun recompile-all-libs (dir) + (let* ((direc (make-directory dir)) + (pattern (make-pathname :directory (pathname-directory direc) + :name :wild :type "NRLIB")) + (files (directory pattern))) + (mapcar + #'(lambda (lib) (compile-lib-file (concat (namestring lib) "/code.lsp"))) + files))) + +;; Recompile a single library's lisp file if it is out of date. +;; The {\bf recompile-lib-file-if-necessary} is defined in nlib.lisp. +(defun recompile-NRLIB-if-necessary (lib) + (recompile-lib-file-if-necessary (concat (namestring lib) "/code.lsp")) + (lift-NRLIB-name (namestring lib))) + + +;; We used to use FOO.NRLIB/code.o files for algebra. However there +;; was no need for this additional level of indirection since the rest +;; of the information in an NRLIB is now kept in the daase files. Thus +;; we lift the FOO.NRLIB/code.o to FOO.o in the final system. +(defun lift-NRLIB-name (f) + (obey (concat "cp " f "/code.o " (subseq f 0 (position #\. f)) ".o")) + nil) + +;; Translate a directory of boot code to common lisp if the boot code +;; is newer. +(defun retranslate-directory (dir) + (let* ((direc (make-directory dir)) + (pattern (make-pathname :directory (pathname-directory direc) + :name :wild :type "boot")) + (files (directory pattern))) + (mapcan #'retranslate-file-if-necessary files))) + + +;; Retranslate a single boot file if it has been changed. +(defun retranslate-file-if-necessary (bootfile) + (let* ((lfile (make-pathname :type "lisp" :defaults bootfile)) + (ldate (our-write-date lfile)) + (binfile (make-pathname :type *bin-path* :defaults bootfile)) + (bindate (our-write-date binfile)) + (bootdate (our-write-date bootfile))) + (if (and ldate bootdate (> ldate bootdate)) nil + (if (and bindate bootdate (> bindate bootdate)) nil + (progn (format t "translating ~a~%" bootfile) + (boot bootfile lfile) (list bootfile)))))) + + +;; TAGS are useful for finding functions if you run Emacs. We have a +;; set of functions that construct TAGS files for Axiom. +(defun make-tags-file () +#+:gcl (system:chdir "/tmp") +#-:gcl (obey (concatenate 'string "cd " "/tmp")) + (obey (concat "etags " (make-absolute-filename "../../src/interp/*.lisp"))) + (spadtags-from-directory "../../src/interp" "boot") + (obey "cat /tmp/boot.TAGS >> /tmp/TAGS")) + +(defun spadtags-from-directory (dir type) + (let* ((direc (make-directory dir)) + (pattern (make-pathname :directory (pathname-directory direc) + :name :wild :type type)) + (files (directory pattern))) + (with-open-file + (tagstream (concatenate 'string "/tmp/" type ".TAGS") :direction :output + :if-exists :supersede :if-does-not-exist :create) + (dolist (file files (namestring tagstream)) + (print (list "processing:" file)) + (write-char #\page tagstream) + (terpri tagstream) + (write-string (namestring file) tagstream) + (write-char #\, tagstream) + (princ (spadtags-from-file file) tagstream) + (terpri tagstream) + (with-open-file (stream "/tmp/*TAGS") + (do ((line (read-line stream nil nil) + (read-line stream nil nil))) + ((null line) nil) + (write-line line tagstream))))))) + +(defun spadtags-from-file (spadfile) + (with-open-file (tagstream "/tmp/*TAGS" :direction :output + :if-exists :supersede :if-does-not-exist :create) + (with-open-file (stream spadfile) + (do ((char-count 0 (file-position stream)) + (line (read-line stream nil nil) (read-line stream nil nil)) + (line-count 1 (1+ line-count))) + ((null line) (file-length tagstream)) + (if (/= (length line) 0) + (let ((firstchar (elt line 0)) (end nil) + (len (length line))) + (cond ((member firstchar '(#\space #\{ #\} #\tab ) + :test #'char= ) "skip") + ((string= line ")abb" :end1 (min 4 len)) + (setq end (position #\space line :from-end t + :test-not #'eql) + end (and end (position #\space line :from-end t + :end end))) + (write-tag-line line tagstream end + line-count char-count)) + ((char= firstchar #\)) "skip") + ((and (> len 1) (string= line "--" :end1 2)) "skip") + ((and (> len 1) (string= line "++" :end1 2)) "skip") + ((search "==>" line) "skip") + ((and (setq end (position #\space line) + end (or (position #\( line :end end) end) + end (or (position #\: line :end end) end) + end (or (position #\[ line :end end) end)) + (equal end 0)) "skip") + ((position #\] line :end end) "skip") + ((string= line "SETANDFILEQ" :end1 end) "skip") + ((string= line "EVALANDFILEACTQ" :end1 end) "skip") + (t (write-tag-line line tagstream + (if (numberp end) (+ end 1) end) + line-count char-count)) ))))))) + +(defun write-tag-line (line tagstream endcol line-count char-count) + (write-string line tagstream :end endcol) + (write-char #\rubout tagstream) + (princ line-count tagstream) + (write-char #\, tagstream) + (princ char-count tagstream) + (terpri tagstream)) + +(defun blankcharp (c) (char= c #\Space)) + +(defun findtag (tag &optional (tagfile (concat (|systemRootDirectory|) "/../../src/interp/TAGS")) ) + ;; tag is an identifier + (with-open-file (tagstream tagfile) + (do ((tagline (read-line tagstream nil nil) + (read-line tagstream nil nil)) + (*package* (symbol-package tag)) + (sourcefile) + (stringtag (string tag)) + (pos) + (tpos) + (type)) + ((null tagline) ()) + (cond ((char= (char tagline 0) #\Page) + (setq tagline (read-line tagstream nil nil)) + (setq sourcefile (subseq tagline 0 + (position #\, tagline))) + (setq type (pathname-type sourcefile))) + ((string= type "lisp") + (if (match-lisp-tag tag tagline) + (return (cons sourcefile tagline)))) + ((> (mismatch ")abb" tagline) 3) + (setq pos (position #\Space tagline :start 3)) + (setq pos (position-if-not #'blankcharp tagline + :start pos)) + (setq pos (position #\Space tagline :start pos)) + (setq pos (position-if-not #'blankcharp tagline + :start pos)) + (setq tpos (mismatch stringtag tagline :start2 pos)) + (if (and (= tpos (length (string tag))) + (member (char tagline (+ pos tpos)) '(#\Space #\Rubout))) + (return (cons sourcefile tagline)))) + ((setq pos (mismatch stringtag tagline)) + (if (and (= pos (length stringtag)) + (> (length tagline) pos) + (member (char tagline pos) + '( #\Space #\( #\:) )) + (return (cons sourcefile tagline)))))))) + +(defun match-lisp-tag (tag tagline &optional (prefix nil) + &aux (stringtag (string tag)) pos tpos) + (when (and (if prefix + (= (mismatch prefix tagline :test #'char-equal) + (length prefix)) + t) + (numberp (setq pos (position #\Space tagline))) + (numberp (setq pos (position-if-not #'blankcharp tagline + :start pos)))) + (if (char= (char tagline pos) #\') (incf pos)) + (if (member (char tagline pos) '( #\\ #\|)) + (setq tpos (1+ pos)) + (setq tpos pos)) + (and (= (mismatch stringtag tagline :start2 tpos :test #'char-equal) + (length stringtag)) + (eq tag (read-from-string tagline nil nil :start pos))) )) + +;; Translate a single boot file to common lisp, compile it +;; and load it. +(defun compile-boot-file (file) + "compile and load a boot file" + (boot (concat file ".boot") (concat file ".lisp")) +#+:AKCL + (compile-file (concat file ".lisp")) +#+:AKCL + (load (concat file "." *bin-path*)) +#+:CCL + (load (concat file ".lisp")) +) + + +;; Translate a single boot file to common lisp +(defun translate (file) ;; translates a single boot file +#+:CCL + (setq *package* (find-package "BOOT")) +#+:AKCL + (in-package "BOOT") + (let (*print-level* *print-length* (fn (pathname-name file)) + (bootfile (merge-pathnames file (concat (|systemRootDirectory|) "nboot/.boot")))) + (declare (special *print-level* *print-length*)) + (boot bootfile (make-pathname :type "lisp" :defaults bootfile)))) + + +;; Translate a list of boot files to common lisp. +(defun translist (fns) + (mapcar #'(lambda (f) (format t "translating ~a~%" (concat f ".boot")) + (translate f)) + fns)) + + +;; The relative directory list specifies a search path for files +;; for the current directory structure. It has been changed from the +;; NAG distribution back to the original form. +(defvar $relative-directory-list + '("/../../src/input/" + "/share/msgs/" + "/../../src/algebra/" + "/../../src/interp/" ; for boot and lisp files (helps fd) + "/doc/spadhelp/" )) + +;; The relative directory list specifies how to find the algebra +;; directory from the current {\bf AXIOM} shell variable. +(defvar $relative-library-directory-list '("/algebra/")) + +(in-package "OLD-BOOT") + +(defun boot (file) ;; translates a single boot file +#+:CCL + (setq *package* (find-package "BOOT")) +#+:AKCL + (in-package "BOOT") + (let (*print-level* + *print-length* + (fn (pathname-name file)) + (*print-pretty* t)) + (declare (special *print-level* *print-length*)) + (boot::boot + file + (merge-pathnames (make-pathname :type "clisp") file)))) + + +(in-package "BOOT") + +;; This is a little used subsystem to generate {\bf ALDOR} code +;; from {\bf Spad} code. Frankly, I'd be amazed if it worked. +(setq translate-functions '( +;; .spad to .as translator, in particular +;; loadtranslate + |spad2AsTranslatorAutoloadOnceTrigger| + )) + +;; This is part of the {\bf ALDOR subsystem}. These will be loaded +;; if you compile a {\bf .as} file rather than a {\bf .spad} file. +;; {\bf ALDOR} is an external compiler that gets automatically called +;; if the file extension is {\bf .as}. +(setq asauto-functions '( + loadas +;; |as| ;; now in as.boot +;; |astran| ;; now in as.boot + |spad2AxTranslatorAutoloadOnceTrigger| + |sourceFilesToAxcliqueAxFile| + |sourceFilesToAxFile| + |setExtendedDomains| + |makeAxFile| + |makeAxcliqueAxFile| + |nrlibsToAxFile| + |attributesToAxFile| )) + +;; These are some {\bf debugging} functions that I use. I can't imagine +;; why you might autoload them but they don't need to be in a running +;; system. +(setq debug-functions '( + loaddebug + |showSummary| + |showPredicates| + |showAttributes| + |showFrom| + |showImp|)) + +;; The {\bf ANNA} subsystem, invoked thru {\bf hypertex}, is an +;; expert system that understands the Numerical Algorithms Group (NAG) +;; fortran library. +(setq anna-functions '( + |annaInt| + |annaMInt| + |annaOde| + |annaOpt| + |annaOpt2| + |annaPDESolve| + |annaOptDefaultSolve1| + |annaOptDefaultSolve2| + |annaOptDefaultSolve3| + |annaOptDefaultSolve4| + |annaOptDefaultSolve5| + |annaOpt2DefaultSolve| + |annaFoo| + |annaBar| + |annaJoe| + |annaSue| + |annaAnn| + |annaBab| + |annaFnar| + |annaDan| + |annaBlah| + |annaTub| + |annaRats| + |annaMInt| + |annaOdeDefaultSolve1| + |annaOdeDefaultSolve2|)) + +;; The Numerical Algorithms Group (NAG) fortran library has a set +;; of cover functions. These functions need to be loaded if you use +;; the NAG library. +(setq nagbr-functions '( + loadnag + |c02aff| |c02agf| + |c05adf| |c05nbf| |c05pbf| + |c06eaf| |c06ebf| |c06ecf| |c06ekf| |c06fpf| |c06fqf| |c06frf| + |c06fuf| |c06gbf| |c06gcf| |c06gqf| |c06gsf| + |d01ajf| |d01akf| |d01alf| |d01amf| |d01anf| |d01apf| |d01aqf| + |d01asf| |d01bbf| |d01fcf| |d01gaf| |d01gbf| + |d02bbf| |d02bhf| |d02cjf| |d02ejf| |d02gaf| |d02gbf| |d02kef| + |d02raf| + |d03edf| |d03eef| |d03faf| + |e01baf| |e01bef| |e01bff| |e01bgf| |e01bhf| |e01daf| |e01saf| + |e01sbf| |e01sef| + |e02adf| |e02aef| |e02agf| |e02ahf| |e02ajf| |e02akf| |e02baf| + |e02bbf| |e02bcf| |e02bdf| |e02bef| |e02daf| |e02dcf| + |e02ddf| |e02def| |e02dff| |e02gaf| |e02zaf| + |e04dgf| |e04fdf| |e04gcf| |e04jaf| |e04mbf| |e04naf| |e04ucf| + |e04ycf| + |f01brf| |f01bsf| |f01maf| |f01mcf| |f01qcf| |f01qdf| |f01qef| + |f01rcf| |f01rdf| |f01ref| + |f02aaf| |f02abf| |f02adf| |f02aef| |f02aff| |f02agf| |f02ajf| + |f02akf| |f02awf| |f02axf| |f02bbf| |f02bjf| |f02fjf| + |f02wef| |f02xef| + |f04adf| |f04arf| |f04asf| |f04atf| |f04axf| |f04faf| |f04jgf| + |f04maf| |f04mbf| |f04mcf| |f04qaf| + |f07adf| |f07aef| |f07fdf| |f07fef| + |s01eaf| |s13aaf| |s13acf| |s13adf| |s14aaf| |s14abf| |s14baf| + |s15adf| |s15aef| |s17acf| |s17adf| |s17aef| |s17aff| + |s17agf| |s17ahf| |s17ajf| |s17akf| |s17dcf| |s17def| + |s17dgf| |s17dhf| |s17dlf| |s18acf| |s18adf| |s18aef| + |s18aff| |s18dcf| |s18def| |s19aaf| |s19abf| |s19acf| + |s19adf| |s20acf| |s20adf| |s21baf| |s21bbf| |s21bcf| + |s21bdf| + )) + + +;; This function is called by {\bf build-interpsys}. It takes two lists. +;; The first is a list of functions that need to be used as +;; ``autoload triggers''. The second is a list of files to load if one +;; of the trigger functions is called. At system build time each of the +;; functions in the first list is set up to load every file in the second +;; list. In this way we will automatically load a whole subsystem if we +;; touch any function in that subsystem. We call a helper function +;; called {\bf setBootAutoLoadProperty} to set up the autoload trigger. +;; This helper function is listed below. +(defun |setBootAutloadProperties| (fun-list file-list) +#+:AKCL + (mapc #'(lambda (fun) (|setBootAutoLoadProperty| fun file-list)) fun-list) +#+:CCL + (mapc #'(lambda (fun) (lisp::set-autoload fun file-list)) fun-list) +) + + +;; This function knows where the {\bf autoload} subdirectory lives. +;; It is called by {\bf mkBootAutoLoad} above to find the necessary +;; files. +(defun boot-load (file) + (let ((name (concat (|systemRootDirectory|) + "/autoload/" + (pathname-name file)))) + (if |$printLoadMsgs| + (format t " Loading ~A.~%" name)) + (load name))) + +;; This is a helper function to set up the autoload trigger. It sets +;; the function cell of each symbol to {\bf mkBootAutoLoad} which is +;; listed below. +(defun |setBootAutoLoadProperty| (func file-list) + (setf (symbol-function func) (|mkBootAutoLoad| func file-list)) ) + +;; This is how the autoload magic happens. Every function named in the +;; autoload lists is actually just another name for this function. When +;; the named function is called we call {\bf boot-load} on all of the +;; files in the subsystem. This overwrites all of the autoload triggers. +;; We then look up the new (real) function definition and call it again +;; with the real arguments. Thus the subsystem loads and the original +;; call succeeds. +(defun |mkBootAutoLoad| (fn file-list) + (function (lambda (&rest args) + (mapc #'boot-load file-list) + (unless (string= (subseq (string fn) 0 4) "LOAD") + (apply (symbol-function fn) args))))) + +;############################################################################ +;# autoload dependencies +;# +;# if you are adding a file which is to be autoloaded the following step +;# information is useful: +;# there are 2 cases: +;# 1) adding files to currently autoloaded parts +;# (as of 2/92: browser old parser and old compiler) +;# 2) adding new files +;# case 1: +;# a) you have to add the file to the list of files currently there +;# (e.g. see BROBJS above) +;# b) add an autolaod rule +;# (e.g. ${AUTO}/parsing.${O}: ${OUT}/parsing.${O}) +;# c) edit util.lisp to add the 'external' function (those that +;# should trigger the autoload +;# case 2: +;# build-interpsys (in util.lisp) needs an extra argument for the +;# new autoload things and several functions in util.lisp need hacking. +;############################################################################ + +;; The `build-interpsys' function takes a list of files to load +;; into the image (`load-files'). It also takes several lists of files, +;; one for each subsystem which will be autoloaded. Autoloading is explained +;; below. This function is called in the src/interp/Makefile. + +;; This function calls `reroot' to set up pathnames we need. Next +;; it sets up the lisp system memory (at present only for AKCL/GCL). Next +;; it loads all of the named files, resets a few global state variables, +;; loads the databases, sets up autoload triggers and clears out hash tables. +;; After this function is called the image is clean and can be saved. + +(defun build-interpsys (load-files + translate-files nagbr-files asauto-files) + (reroot) + #+:AKCL + (init-memory-config :cons 500 :fixnum 200 :symbol 500 :package 8 + :array 400 :string 500 :cfun 100 :cpages 1000 + :rpages 1000 :hole 2000) + #+:AKCL + (setq compiler::*suppress-compiler-notes* t) + (mapcar #'|AxiomCore|::|importModule| load-files) + (|resetWorkspaceVariables|) + (|initHist|) + (|initNewWorld|) + (compressopen) + (interpopen) + (create-initializers) + (|start| :fin) +#+:CCL + (resethashtables) + (setq *load-verbose* nil) + (|setBootAutloadProperties| translate-functions translate-files) + (|setNAGBootAutloadProperties| nagbr-functions nagbr-files) + (|setBootAutloadProperties| asauto-functions asauto-files) + (setf (symbol-function 'boot::|addConsDB|) #'identity) + (resethashtables) ; the databases into core, then close the streams + ) + + +;; This is a further refinement of the autoload scheme. Since the +;; Numerical Algorithms Group (NAG) fortran library contains many +;; functions we subdivide the NAG library subsystem into chapters. +;; We use a different helper function {\bf get-NAG-chapter} to decide +;; which files to load. +(defun |setNAGBootAutloadProperties| (function-list file-list) + (mapcar + #'(lambda (f) + (|setBootAutloadProperties| + (get-NAG-chapter (chapter-name f) function-list) + (nag-files f file-list))) + file-list)) + +;; This function is used to find the names of the files to load. +;; On solaris 9 under GCL the original implementation will fail because +;; the max number of arguments is 63. We rewrite it to get around this +;; problem. +(defun get-NAG-chapter (chapter function-list) + (let ((l (length chapter)) r) + (dolist (f function-list) + (when (equalp chapter (subseq (string f) 0 l)) + (push f r))) + (nreverse r))) + + +;; We analyze the function names to decide which chapter we are in. +;; We load files based on the chapter. +(defun nag-files (filename filelist) + (apply 'append (mapcar + #'(lambda (f) + (cond ((equalp (chapter-name filename) (chapter-name f)) (list f))) ) + filelist))) + +;; The library names follow a convention that allows us to extract +;; the chapter name. +(defun chapter-name (f) +#+:AKCL + (apply + #'(lambda (s) + (cond ((equalp (aref s 0) #\s) "s") (T (reverse (subseq s 0 3))))) + (list (string-left-trim "a.o" (reverse f) )) ) +#+:CCL + (subseq (string-downcase (string f)) 4 (length (string f))) +) + + +;; The `depsys' image is one of the two images we build from +;; the src/interp subdirectory (the other is `interpsys'). We +;; use `depsys' as a compile-time image as it contains all of +;; the necessary functions and macros to compile any file. The +;; `depsys' image is almost the same as an `interpsys' +;; image but it does not have any autoload triggers or databases +;; loaded. + +(defun build-depsys (load-files) +#+:CCL + (setq *package* (find-package "BOOT")) +#+:AKCL + (in-package "BOOT") + (mapcar #'load load-files) + (reroot) + #+:AKCL + (init-memory-config :cons 1000 :fixnum 400 :symbol 1000 :package 16 + :array 800 :string 1000 :cfun 200 :cpages 2000 + :rpages 2000 :hole 4000) ) +;; (init-memory-config :cons 500 :fixnum 200 :symbol 500 :package 8 +;; :array 400 :string 500 :cfun 100 :cpages 1000 +;; :rpages 1000 :hole 2000) ) + + +(DEFUN |string2BootTree| (S) + (init-boot/spad-reader) + (LET* ((BOOT-LINE-STACK (LIST (CONS 1 S))) + ($BOOT T) + ($SPAD NIL) + (XTOKENREADER 'GET-BOOT-TOKEN) + (LINE-HANDLER 'NEXT-BOOT-LINE) + (PARSEOUT (PROGN (|PARSE-Expression|) (POP-STACK-1)))) + (DECLARE (SPECIAL BOOT-LINE-STACK $BOOT $SPAD XTOKENREADER LINE-HANDLER)) + (DEF-RENAME (|new2OldLisp| PARSEOUT)))) + +(DEFUN |string2SpadTree| (LINE) + (DECLARE (SPECIAL LINE)) + (if (and (> (LENGTH LINE) 0) (EQ (CHAR LINE 0) #\) )) + (|processSynonyms|)) + (ioclear) + (LET* ((BOOT-LINE-STACK (LIST (CONS 1 LINE))) + ($BOOT NIL) + ($SPAD T) + (XTOKENREADER 'GET-BOOT-TOKEN) + (LINE-HANDLER 'NEXT-BOOT-LINE) + (PARSEOUT (PROG2 (|PARSE-NewExpr|) (POP-STACK-1)))) + (DECLARE (SPECIAL BOOT-LINE-STACK $BOOT $SPAD XTOKENREADER LINE-HANDLER)) + PARSEOUT)) + + +;;--------------------> NEW DEFINITION (see i-syscmd.boot.pamphlet) +(defun |processSynonyms| () nil) ;;dummy def for depsys, redefined later + + +;; the following are for conditional reading +#+:ieee-floating-point (setq $ieee t) +#-:ieee-floating-point (setq $ieee nil) +(setq |$opSysName| '"shell") +#+:CCL (defun machine-type () "unknown") +(setq |$machineType| (machine-type)) +; spad-clear-input patches around fact that akcl clear-input leaves newlines chars +(defun spad-clear-input (st) (clear-input st) (if (listen st) (read-char st))) + +;; We need a way of distinguishing different versions of the system. +;; There used to be a way to touch the src/timestamp file whenever +;; you checked in a change to the change control subsystem. +;; During make PART=interp (the default for make) we set timestamp +;; to the filename of this timestamp file. This function converts it +;; to a luser readable string and sets the *yearweek* variable. +;; The result of this function is a string that is printed as a banner +;; when Axiom starts. The actual printing is done by the function +;; [[spadStartUpMsgs]] in [[src/interp/msgdb.boot]]. It uses a +;; format string from the file [[src/doc/msgs/s2-us.msgs]]. +(defun yearweek () + "set *yearweek* to the current time string for the version banner" + (declare (special timestamp) (special *yearweek*)) + (if (and (boundp 'timestamp) (probe-file timestamp)) + (let (sec min hour date month year day dayvec monvec) + (setq dayvec '("Monday" "Tuesday" "Wednesday" "Thursday" + "Friday" "Saturday" "Sunday")) + (setq monvec '("January" "February" "March" "April" "May" "June" + "July" "August" "September" "October" "November" + "December")) + (multiple-value-setq (sec min hour date month year day) + (decode-universal-time + (file-write-date timestamp))) + (setq *yearweek* + (copy-seq + (format nil "~a ~a ~d, ~d at ~2,'0d:~2,'0d:~2,'0d " + (elt dayvec day) + (elt monvec (1- month)) date year hour min sec)))) + (setq *yearweek* "no timestamp"))) + +(defun sourcepath (f) + "find the sourcefile in the system directories" + (let (axiom algebra naglink) + (setq axiom (|systemRootDirectory|)) + (setq algebra (concatenate 'string axiom "/../../src/algebra/" f ".spad")) + (setq naglink (concatenate 'string axiom "/../../src/naglink/" f ".spad")) + (cond + ((probe-file algebra) algebra) + ((probe-file naglink) naglink) + ('else nil)))) + +(defun srcabbrevs (sourcefile) + "read spad source files and return the constructor names and abbrevs" + (let (expr point mark names longnames) + (catch 'done + (with-open-file (in sourcefile) + (loop + (setq expr (read-line in nil 'done)) + (when (eq expr 'done) (throw 'done nil)) + (when (and (> (length expr) 4) (string= ")abb" (subseq expr 0 4))) + (setq expr (string-right-trim '(#\space #\tab) expr)) + (setq point (position #\space expr :from-end t :test #'char=)) + (push (subseq expr (1+ point)) longnames) + (setq expr (string-right-trim '(#\space #\tab) + (subseq expr 0 point))) + (setq mark (position #\space expr :from-end t)) + (push (subseq expr (1+ mark)) names))))) + (values longnames names))) + + +#+(and :AKCL (not (or :dos :win32))) +(in-package "COMPILER") +#+(and :AKCL (not (or :dos :win32))) +(defun gazonk-name ( &aux tem) + "return the name of the intermediate compiler file" + (dotimes (i 1000) + (setq tem (merge-pathnames (format nil "/tmp/gazonk~d.lsp" i))) + (unless (probe-file tem) + (return-from gazonk-name (pathname tem)))) + (error "1000 gazonk names used already!")) + +(in-package "BOOT") + +(defun |tr| (fn) + (|spad2AsTranslatorAutoloadOnceTrigger|) + (|convertSpadFile| fn) ) + + +;; Make will not compare dates across directories. +;; Rather than copy all of the code.lsp files to the MNT directory +;; we run this function to compile the files that are out of date +;; this function assumes that the shell variables INT and MNT are set. +;; Also of note: on the rt some files (those in the nooptimize list) +;; need to be compiled without optimize due to compiler bugs +(defun makelib (mid out stype btype) + "iterate over the NRLIBs, compiling ones that are out of date. + mid is the directory containing code.lsp + out is the directory containing code.o" + (let (libs lspdate odate nooptimize (alphabet #\space)) +#+(and :akcl :rt) + (setq nooptimize '("FFCAT-.NRLIB" "CHVAR.NRLIB" "PFO.NRLIB" "SUP.NRLIB" + "INTG0.NRLIB" "FSPRMELT.NRLIB" "VECTOR.NRLIB" + "EUCDOM-.NRLIB")) + (if (and mid out) + (format t "doing directory on ~s...~%" (concatenate 'string mid "/*")) + (error "makelib:MID=~a OUT=~a~% these are not set properly~%" mid out)) +#+:akcl (compiler::emit-fn nil) +#+:akcl (si::chdir mid) +#-:akcl (obey (concatenate 'string "cd " mid)) + (setq libs (directory "*.NRLIB")) + (unless libs + (format t "makelib:directory of ~a returned NIL~%" mid) + (bye -1)) + (princ "checking ") + (dolist (lib libs) + (unless (char= (schar (pathname-name lib) 0) alphabet) + (setq alphabet (schar (pathname-name lib) 0)) + (princ alphabet) + (finish-output)) + (let (dotlsp doto mntlib intkaf mntkaf intkafdate mntkafdate) + (setq dotlsp + (concatenate 'string mid "/" (file-namestring lib) "/code." stype)) + (setq doto + (concatenate 'string out "/" (pathname-name lib) ".NRLIB/code." btype)) + (setq mntlib + (concatenate 'string out "/" (pathname-name lib) ".NRLIB")) + (setq intkaf + (concatenate 'string mid "/" (file-namestring lib) "/index.KAF*")) + (setq mntkaf + (concatenate 'string out "/" (pathname-name lib) ".NRLIB/index.KAF*")) + (unless (probe-file mntlib) + (format t "creating directory ~a~%" mntlib) + (obey (concatenate 'string "cp -pr " (namestring lib) " " out)) + (when (probe-file (concatenate 'string mntlib "/code." stype)) + (delete-file (concatenate 'string mntlib "/code." stype)))) + (setq intkafdate (and (probe-file intkaf) (file-write-date intkaf))) + (setq mntkafdate (and (probe-file mntkaf) (file-write-date mntkaf))) + (when intkafdate + (unless (and mntkafdate (> mntkafdate intkafdate)) + (format t "~©ing ~s to ~s" intkaf mntkaf) + (obey + (concatenate 'string "cp " + (namestring intkaf) " " (namestring mntkaf))))) + (setq lspdate (and (probe-file dotlsp) (file-write-date dotlsp))) + (setq odate (and (probe-file doto) (file-write-date doto))) + (when lspdate + (unless (and odate (> odate lspdate)) +#+(and :akcl :rt) + (if (member (file-namestring lib) nooptimize :test #'string=) + (setq compiler::*speed* 0) + (setq compiler::*speed* 3)) + (compile-lib-file dotlsp :output-file doto))))))) + + +;; Make will not compare dates across directories. +;; In particular, it cannot compare the algebra files because there +;; is a one-to-many correspondence. This function will walk over +;; all of the algebra NRLIB files and find all of the spad files +;; that are out of date and need to be recompiled. This function +;; creates a file "/tmp/compile.input" to be used later in the +;; makefile. +;; Note that the file /tmp/compile.input is not currently used +;; as algebra source recompiles are not necessarily something +;; we want done automatically. Nevertheless, in the quest for +;; quality we check anyway. +(defun makespad (src mid stype) + "iterate over the spad files, compiling ones that are out of date. + src is the directory containing .spad + mid is the directory containing code.lsp + out is the directory containing code.o" + (let (mntlibs spadwork (alphabet #\space)) + (labels ( + (findsrc (mid libname) + "return a string name of the source file given the library file + name (eg PI) as a string" + (let (kaffile index alist) + (setq kaffile + (concatenate 'string mid "/" libname ".NRLIB/index.KAF*")) + (with-open-file (kaf kaffile) + (setq index (read kaf)) + (file-position kaf index) + (setq alist (read kaf)) + (setq index (third (assoc "sourceFile" alist :test #'string=))) + (file-position kaf index) + (pathname-name (pathname (read kaf index))))))) + (format t "makespad:src=~s mid=~s stype=~s~%" src mid stype) + (if (and src mid) + (format t "doing directory on ~s...~%" (concatenate 'string src "/*")) + (error "makespad:SRC=~a MID=~a not set properly~%" src mid)) +#+:akcl (si::chdir mid) +#-:akcl (obey (concatenate 'string "cd " mid)) + (setq mntlibs (directory "*.NRLIB")) + (unless mntlibs + (format t "makespad:directory of ~a returned NIL~%" src) + (bye 1)) + (princ "checking ") + (dolist (lib mntlibs) + (unless (char= (schar (pathname-name lib) 0) alphabet) + (setq alphabet (schar (pathname-name lib) 0)) + (princ alphabet) + (finish-output)) + (let (spad spaddate lsp lspdate) + (setq spad + (concatenate 'string src "/" (findsrc mid (pathname-name lib)) ".spad")) + (setq spaddate + (and (probe-file spad) (file-write-date spad))) + (setq lsp + (concatenate 'string mid "/" (pathname-name lib) ".NRLIB/code." stype)) + (setq lspdate + (and (probe-file lsp) (file-write-date lsp))) + (cond + ((and spaddate lspdate (<= spaddate lspdate))) + ((and spaddate lspdate (> spaddate lspdate)) + (setq spadwork (adjoin spad spadwork :test #'string=))) + ((and spaddate (not lspdate)) + (setq spadwork (adjoin spad spadwork :test #'string=))) + ((and (not spaddate) lspdate) + (format t "makespad:missing spad file ~a for lisp file ~a~%" spad lsp)) + ((and (not spaddate) (not lspdate)) + (format t "makespad:NRLIB ~a exist but is spad ~a and lsp ~a don't~%" + lib spad lsp))))) + (with-open-file (tmp "/tmp/compile.input" :direction :output) + (dolist (spad spadwork) + (format t "~a is out of date~%" spad) + (format tmp ")co ~a~%" spad)))))) + + +;; We need to ensure that the INTERP.EXPOSED list, which is a list +;; of the exposed constructors, is consistent with the actual libraries. +(defun libcheck (int) + "check that INTERP.EXPOSED and NRLIBs are consistent" + (let (interp nrlibs) + (labels ( + (CONSTRUCTORNAME (nrlib) + "find the long name of a constructor given an abbreviation string" + (let (file sourcefile name) + (setq file (findsrc nrlib)) + (setq sourcefile + (concatenate 'string int "/" file ".spad")) + (when (and file (probe-file sourcefile)) + (setq name (searchsource sourcefile nrlib))))) + (NOCAT (longnames) + "remove the categories from the list of long names" + (remove-if + #'(lambda (x) + (let ((c (schar x (1- (length x))))) + (or (char= c #\&) (char= c #\-)))) longnames)) + (FINDSRC (libname) + "return a string name of the source file given the library file + name (eg PI) as a string" + (let (kaffile index alist result) + (setq kaffile + (concatenate 'string int "/" libname ".NRLIB/index.KAF*")) + (if (probe-file kaffile) + (with-open-file (kaf kaffile) + (setq index (read kaf)) + (file-position kaf index) + (setq alist (read kaf)) + (setq index (third (assoc "sourceFile" alist :test #'string=))) + (file-position kaf index) + (setq result (pathname-name (pathname (read kaf index)))))) + (format t "~a does not exist~%" kaffile) + result)) + (READINTERP () + "read INTERP.EXPOSED and return a sorted abbreviation list" + (let (expr names longnames) + (with-open-file (in (concatenate 'string int "/INTERP.EXPOSED")) + (catch 'eof + (loop + (setq expr (read-line in nil 'eof)) + (when (eq expr 'eof) (throw 'eof nil)) + (when + (and + (> (length expr) 58) + (char= (schar expr 0) #\space) + (not (char= (schar expr 8) #\space))) + (push (string-trim '(#\space) (subseq expr 8 57)) longnames) + (push (string-right-trim '(#\space) (subseq expr 58)) names))))) + (setq longnames (sort longnames #'string<)) + (setq names (sort names #'string<)) + (values names longnames))) + (READLIBS (algebra) + "read the NRLIB directory and return a sorted abbreviation list" + (let (libs nrlibs) +#+:akcl (si::chdir algebra) +#-:akcl (obey (concatenate 'string "cd " algebra)) + (setq nrlibs (directory "*.NRLIB")) + (unless nrlibs + (error "libcheck: (directory ~s) returned NIL~%" + (concatenate 'string algebra "/*.NRLIB"))) + (dolist (lib nrlibs) + (push (pathname-name lib) libs)) + (sort libs #'string<))) + (SEARCHSOURCE (sourcefile nrlib) + "search a sourcefile for the long constructor name of the nrlib string" + (let (in expr start) + (setq nrlib (concatenate 'string " " nrlib " ")) + (catch 'done + (with-open-file (in sourcefile) + (loop + (setq expr (read-line in nil 'done)) + (when (eq expr 'done) (throw 'done nil)) + (when (and (> (length expr) 4) + (string= ")abb" (subseq expr 0 4)) + (search nrlib expr :test #'string=) + (setq start (position #\space expr :from-end t :test #'char=))) + (throw 'done (string-trim '(#\space) (subseq expr start))))))))) + (SRCABBREVS (sourcefile) + (let (in expr start end names longnames) + (catch 'done + (with-open-file (in sourcefile) + (loop + (setq expr (read-line in nil 'done)) + (when (eq expr 'done) (throw 'done nil)) + (when (and (> (length expr) 4) + (string= ")abb" (subseq expr 0 4))) + (setq point (position #\space expr :from-end t :test #'char=)) + (push (string-trim '(#\space) (subseq expr point)) longnames) + (setq mark + (position #\space + (string-right-trim '(#\space) + (subseq expr 0 (1- point))) :from-end t)) + (push (string-trim '(#\space) (subseq expr mark point)) names))))) + (values names longnames))) + (SRCSCAN () + (let (longnames names) +#+:gcl (system::chdir int) +#-:gcl (obey (concatenate 'string "cd " int)) + (setq spads (directory "*.spad")) + (dolist (spad spads) + (multiple-value-setq (short long) (srcabbrevs spad)) + (setq names (nconc names short)) + (setq longnames (nconc longnames long))) + (setq names (sort names #'string<)) + (setq longnames (sort longnames #'string<)) + (values names longnames)))) + (multiple-value-setq (abbrevs constructors) (readinterp)) + (setq nrlibs (readlibs int)) + (dolist (lib (set-difference nrlibs abbrevs :test #'string=)) + (format t "libcheck:~a/~a.NRLIB is not in INTERP.EXPOSED~%" int lib)) + (dolist (expose (set-difference abbrevs nrlibs :test #'string=)) + (format t "libcheck:~a is in INTERP.EXPOSED with no NRLIB~%" expose)) + (multiple-value-setq (srcabbrevs srcconstructors) (srcscan)) + (setq abbrevs (nocat abbrevs)) + (setq constructors (nocat constructors)) + (dolist (item (set-difference srcabbrevs abbrevs :test #'string=)) + (format t "libcheck:~a is in ~a but not in INTERP.EXPOSED~%" item + (findsrc item))) + (dolist (item (set-difference abbrevs srcabbrevs :test #'string=)) + (format t "libcheck:~a is in INTERP.EXPOSED but has no spad sourcfile~%" + item)) + (dolist (item (set-difference srcconstructors constructors :test #'string=)) + (format t "libcheck:~a is not in INTERP.EXPOSED~%" item)) + (dolist (item (set-difference constructors srcconstructors :test #'string=)) + (format t "libcheck:~a has no spad source file~%" item))))) + + diff --git a/src/interp/util.lisp.pamphlet b/src/interp/util.lisp.pamphlet deleted file mode 100644 index e43af5be..00000000 --- a/src/interp/util.lisp.pamphlet +++ /dev/null @@ -1,1557 +0,0 @@ -% Oh Emacs, this is a -*- Lisp -*- file, despite appearance. -\documentclass{article} -\usepackage{axiom} - -\title{\$SPAD/src/interp util.lisp} -\author{Timothy Daly} - -\begin{document} -\maketitle - -\begin{abstract} -\end{abstract} -\eject -\tableofcontents -\eject - - -\section{util.lisp} - -This file is a collection of utility functions that are useful -for system level work. A couple of the functions, {\bf build-depsys} -and {\bf build-interpsys} interface to the src/interp/Makefile. - -A second group of related functions allows us to rebuild portions -of the system from the command prompt. This varies from rebuilding -individual files to whole directories. The most complex functions -like {\bf makespad} can rebuild the whole algebra tree. - -A third group of related functions are used to set up the -{\bf autoload} mechanism. These enable whole subsystems to -be kept out of memory until they are used. - -A fourth group of related functions are used to construct and -search Emacs TAGS files. - -A fifth group of related functions are some translated boot -functions we need to define here so they work and are available -at load time. - -\subsection{Building Depsys (build-depsys)} - -The {\bf depsys} image is one of the two images we build from -the src/interp subdirectory (the other is {\bf interpsys}). We -use {\bf depsys} as a compile-time image as it contains all of -the necessary functions and macros to compile any file. The -{\bf depsys} image is almost the same as an {\bf interpsys} -image but it does not have any autoload triggers or databases -loaded. -<<build-depsys>>= -(defun build-depsys (load-files) -#+:CCL - (setq *package* (find-package "BOOT")) -#+:AKCL - (in-package "BOOT") - (mapcar #'load load-files) - (reroot) - #+:AKCL - (init-memory-config :cons 1000 :fixnum 400 :symbol 1000 :package 16 - :array 800 :string 1000 :cfun 200 :cpages 2000 - :rpages 2000 :hole 4000) ) -;; (init-memory-config :cons 500 :fixnum 200 :symbol 500 :package 8 -;; :array 400 :string 500 :cfun 100 :cpages 1000 -;; :rpages 1000 :hole 2000) ) - -@ - -\subsection{Building Interpsys (build-interpsys)} -\begin{verbatim} -;############################################################################ -;# autoload dependencies -;# -;# if you are adding a file which is to be autoloaded the following step -;# information is useful: -;# there are 2 cases: -;# 1) adding files to currently autoloaded parts -;# (as of 2/92: browser old parser and old compiler) -;# 2) adding new files -;# case 1: -;# a) you have to add the file to the list of files currently there -;# (e.g. see BROBJS above) -;# b) add an autolaod rule -;# (e.g. ${AUTO}/parsing.${O}: ${OUT}/parsing.${O}) -;# c) edit util.lisp to add the 'external' function (those that -;# should trigger the autoload -;# case 2: -;# build-interpsys (in util.lisp) needs an extra argument for the -;# new autoload things and several functions in util.lisp need hacking. -;############################################################################ -\end{verbatim} -The {\bf build-interpsys} function takes a list of files to load -into the image ({\bf load-files}). It also takes several lists of files, -one for each subsystem which will be autoloaded. Autoloading is explained -below. This function is called in the src/interp/Makefile. - -This function calls {\bf reroot} to set up pathnames we need. Next -it sets up the lisp system memory (at present only for AKCL/GCL). Next -it loads all of the named files, resets a few global state variables, -loads the databases, sets up autoload triggers and clears out hash tables. -After this function is called the image is clean and can be saved. -<<build-interpsys>>= -(defun build-interpsys (load-files - translate-files nagbr-files asauto-files) - (reroot) - #+:AKCL - (init-memory-config :cons 500 :fixnum 200 :symbol 500 :package 8 - :array 400 :string 500 :cfun 100 :cpages 1000 - :rpages 1000 :hole 2000) - <<compiler-notes>> - (mapcar #'|AxiomCore|::|importModule| load-files) - (|resetWorkspaceVariables|) - (|initHist|) - (|initNewWorld|) - (compressopen) - (interpopen) - (create-initializers) - (|start| :fin) -#+:CCL - (resethashtables) - (setq *load-verbose* nil) - (|setBootAutloadProperties| translate-functions translate-files) - (|setNAGBootAutloadProperties| nagbr-functions nagbr-files) - (|setBootAutloadProperties| asauto-functions asauto-files) - (setf (symbol-function 'boot::|addConsDB|) #'identity) - (resethashtables) ; the databases into core, then close the streams - ) - -@ - -\subsubsection{GCL porting changes} - -GCL likes to output lines of the form: -\begin{verbatim} -;; Note: Tail-recursive call of |matSuperList1| was replaced by iteration. -\end{verbatim} -which is pointless and should be removed. Bill Schelter added this while -he was debugging tail-recursive replacement and it never was removed. -<<compiler-notes>>= - #+:AKCL - (setq compiler::*suppress-compiler-notes* t) -@ - - -\subsection{The variables} - -Various lisps use different ``extensions'' on the filename to indicate -that a file has been compiled. We set this variable correctly depending -on the system we are using. -<<bin-path>>= -(defvar *bin-path* - #+kcl "o" - #+lucid "bbin" - #+symbolics "bin" - #+cmulisp "fasl" - #+:ccl "not done this way at all") - -@ - - -\subsubsection{relative-directory-list} - -The relative directory list specifies a search path for files -for the current directory structure. It has been changed from the -NAG distribution back to the original form. -<<relative-directory-list>>= -(defvar $relative-directory-list - '("/../../src/input/" - "/share/msgs/" - "/../../src/algebra/" - "/../../src/interp/" ; for boot and lisp files (helps fd) - "/doc/spadhelp/" )) - -@ - - -\subsubsection{relative-library-directory-list} - -The relative directory list specifies how to find the algebra -directory from the current {\bf AXIOM} shell variable. -<<relative-library-directory-list>>= -(defvar $relative-library-directory-list '("/algebra/")) - -@ - - -\subsection{The autoload list} - -There are several subsystems within {\bf AXIOM} that are not normally -loaded into a running system. They will be loaded only if you invoke -one of the functions listed here. Each of these listed functions will -have their definitions replaced by a special ``autoloader'' function. -The first time a function named here is called it will trigger a -load of the associated subsystem, the autoloader functions will get -overwritten, the function call is retried and now succeeds. Files -containing functions listed here are assumed to exist in the -{\bf autoload} subdirectory. The list of files to load is defined -in the src/interp/Makefile. - -\subsubsection{setBootAutloadProperties} - -This function is called by {\bf build-interpsys}. It takes two lists. -The first is a list of functions that need to be used as -``autoload triggers''. The second is a list of files to load if one -of the trigger functions is called. At system build time each of the -functions in the first list is set up to load every file in the second -list. In this way we will automatically load a whole subsystem if we -touch any function in that subsystem. We call a helper function -called {\bf setBootAutoLoadProperty} to set up the autoload trigger. -This helper function is listed below. -<<setBootAutloadProperties>>= -(defun |setBootAutloadProperties| (fun-list file-list) -#+:AKCL - (mapc #'(lambda (fun) (|setBootAutoLoadProperty| fun file-list)) fun-list) -#+:CCL - (mapc #'(lambda (fun) (lisp::set-autoload fun file-list)) fun-list) -) - -@ - -\subsubsection{setBootAutoLoadProperty} - -This is a helper function to set up the autoload trigger. It sets -the function cell of each symbol to {\bf mkBootAutoLoad} which is -listed below. -<<setBootAutoLoadProperty>>= -(defun |setBootAutoLoadProperty| (func file-list) - (setf (symbol-function func) (|mkBootAutoLoad| func file-list)) ) - -@ - -\subsubsection{mkBootAutoLoad} - -This is how the autoload magic happens. Every function named in the -autoload lists is actually just another name for this function. When -the named function is called we call {\bf boot-load} on all of the -files in the subsystem. This overwrites all of the autoload triggers. -We then look up the new (real) function definition and call it again -with the real arguments. Thus the subsystem loads and the original -call succeeds. -<<mkBootAutoLoad>>= -(defun |mkBootAutoLoad| (fn file-list) - (function (lambda (&rest args) - (mapc #'boot-load file-list) - (unless (string= (subseq (string fn) 0 4) "LOAD") - (apply (symbol-function fn) args))))) - -@ - -\subsubsection{boot-load} - -This function knows where the {\bf autoload} subdirectory lives. -It is called by {\bf mkBootAutoLoad} above to find the necessary -files. -<<boot-load>>= -(defun boot-load (file) - (let ((name (concat (|systemRootDirectory|) - "/autoload/" - (pathname-name file)))) - (if |$printLoadMsgs| - (format t " Loading ~A.~%" name)) - (load name))) - -@ - -\subsubsection{setNAGBootAutloadProperties} - -This is a further refinement of the autoload scheme. Since the -Numerical Algorithms Group (NAG) fortran library contains many -functions we subdivide the NAG library subsystem into chapters. -We use a different helper function {\bf get-NAG-chapter} to decide -which files to load. -<<setNAGBootAutloadProperties>>= -(defun |setNAGBootAutloadProperties| (function-list file-list) - (mapcar - #'(lambda (f) - (|setBootAutloadProperties| - (get-NAG-chapter (chapter-name f) function-list) - (nag-files f file-list))) - file-list)) - -@ - -\subsubsection{get-NAG-chapter} - -This function is used to find the names of the files to load. -On solaris 9 under GCL the original implementation will fail because -the max number of arguments is 63. We rewrite it to get around this -problem. It originally read: -\begin{verbatim} -(defun get-NAG-chapter (chapter function-list) - (apply 'append - (mapcar - #'(lambda (f) - (cond - ((equalp chapter (subseq (string f) 0 (length chapter))) (list f )))) - function-list))) - -\end{verbatim} -<<get-NAG-chapter>>= -(defun get-NAG-chapter (chapter function-list) - (let ((l (length chapter)) r) - (dolist (f function-list) - (when (equalp chapter (subseq (string f) 0 l)) - (push f r))) - (nreverse r))) - -@ - -\subsubsection{nag-files} - -We analyze the function names to decide which chapter we are in. -We load files based on the chapter. -<<nag-files>>= -(defun nag-files (filename filelist) - (apply 'append (mapcar - #'(lambda (f) - (cond ((equalp (chapter-name filename) (chapter-name f)) (list f))) ) - filelist))) - -@ - -\subsubsection{chapter-name} - -The library names follow a convention that allows us to extract -the chapter name. -<<chapter-name>>= -(defun chapter-name (f) -#+:AKCL - (apply - #'(lambda (s) - (cond ((equalp (aref s 0) #\s) "s") (T (reverse (subseq s 0 3))))) - (list (string-left-trim "a.o" (reverse f) )) ) -#+:CCL - (subseq (string-downcase (string f)) 4 (length (string f))) -) - -@ - -\subsubsection{translate-functions} - -This is a little used subsystem to generate {\bf ALDOR} code -from {\bf Spad} code. Frankly, I'd be amazed if it worked. -<<translate-functions>>= -(setq translate-functions '( -;; .spad to .as translator, in particular -;; loadtranslate - |spad2AsTranslatorAutoloadOnceTrigger| - )) - -@ - -\subsubsection{asauto-functions} - -This is part of the {\bf ALDOR subsystem}. These will be loaded -if you compile a {\bf .as} file rather than a {\bf .spad} file. -{\bf ALDOR} is an external compiler that gets automatically called -if the file extension is {\bf .as}. -<<asauto-functions>>= -(setq asauto-functions '( - loadas -;; |as| ;; now in as.boot -;; |astran| ;; now in as.boot - |spad2AxTranslatorAutoloadOnceTrigger| - |sourceFilesToAxcliqueAxFile| - |sourceFilesToAxFile| - |setExtendedDomains| - |makeAxFile| - |makeAxcliqueAxFile| - |nrlibsToAxFile| - |attributesToAxFile| )) - -@ - -\subsubsection{debug-functions} - -These are some {\bf debugging} functions that I use. I can't imagine -why you might autoload them but they don't need to be in a running -system. -<<debug-functions>>= -(setq debug-functions '( - loaddebug - |showSummary| - |showPredicates| - |showAttributes| - |showFrom| - |showImp|)) - -@ - -\subsubsection{anna-functions} - -The {\bf ANNA} subsystem, invoked thru {\bf hypertex}, is an -expert system that understands the Numerical Algorithms Group (NAG) -fortran library. -<<anna-functions>>= -(setq anna-functions '( - |annaInt| - |annaMInt| - |annaOde| - |annaOpt| - |annaOpt2| - |annaPDESolve| - |annaOptDefaultSolve1| - |annaOptDefaultSolve2| - |annaOptDefaultSolve3| - |annaOptDefaultSolve4| - |annaOptDefaultSolve5| - |annaOpt2DefaultSolve| - |annaFoo| - |annaBar| - |annaJoe| - |annaSue| - |annaAnn| - |annaBab| - |annaFnar| - |annaDan| - |annaBlah| - |annaTub| - |annaRats| - |annaMInt| - |annaOdeDefaultSolve1| - |annaOdeDefaultSolve2|)) - -@ - -\subsubsection{nagbr-functions} - -The Numerical Algorithms Group (NAG) fortran library has a set -of cover functions. These functions need to be loaded if you use -the NAG library. -<<nagbr-functions>>= -(setq nagbr-functions '( - loadnag - |c02aff| |c02agf| - |c05adf| |c05nbf| |c05pbf| - |c06eaf| |c06ebf| |c06ecf| |c06ekf| |c06fpf| |c06fqf| |c06frf| - |c06fuf| |c06gbf| |c06gcf| |c06gqf| |c06gsf| - |d01ajf| |d01akf| |d01alf| |d01amf| |d01anf| |d01apf| |d01aqf| - |d01asf| |d01bbf| |d01fcf| |d01gaf| |d01gbf| - |d02bbf| |d02bhf| |d02cjf| |d02ejf| |d02gaf| |d02gbf| |d02kef| - |d02raf| - |d03edf| |d03eef| |d03faf| - |e01baf| |e01bef| |e01bff| |e01bgf| |e01bhf| |e01daf| |e01saf| - |e01sbf| |e01sef| - |e02adf| |e02aef| |e02agf| |e02ahf| |e02ajf| |e02akf| |e02baf| - |e02bbf| |e02bcf| |e02bdf| |e02bef| |e02daf| |e02dcf| - |e02ddf| |e02def| |e02dff| |e02gaf| |e02zaf| - |e04dgf| |e04fdf| |e04gcf| |e04jaf| |e04mbf| |e04naf| |e04ucf| - |e04ycf| - |f01brf| |f01bsf| |f01maf| |f01mcf| |f01qcf| |f01qdf| |f01qef| - |f01rcf| |f01rdf| |f01ref| - |f02aaf| |f02abf| |f02adf| |f02aef| |f02aff| |f02agf| |f02ajf| - |f02akf| |f02awf| |f02axf| |f02bbf| |f02bjf| |f02fjf| - |f02wef| |f02xef| - |f04adf| |f04arf| |f04asf| |f04atf| |f04axf| |f04faf| |f04jgf| - |f04maf| |f04mbf| |f04mcf| |f04qaf| - |f07adf| |f07aef| |f07fdf| |f07fef| - |s01eaf| |s13aaf| |s13acf| |s13adf| |s14aaf| |s14abf| |s14baf| - |s15adf| |s15aef| |s17acf| |s17adf| |s17aef| |s17aff| - |s17agf| |s17ahf| |s17ajf| |s17akf| |s17dcf| |s17def| - |s17dgf| |s17dhf| |s17dlf| |s18acf| |s18adf| |s18aef| - |s18aff| |s18dcf| |s18def| |s19aaf| |s19abf| |s19acf| - |s19adf| |s20acf| |s20adf| |s21baf| |s21bbf| |s21bcf| - |s21bdf| - )) - -@ - - -\subsection{The command-line build functions} - -\subsubsection{translist} - -Translate a list of boot files to common lisp. -<<translist>>= -(defun translist (fns) - (mapcar #'(lambda (f) (format t "translating ~a~%" (concat f ".boot")) - (translate f)) - fns)) - -@ - -\subsubsection{translate} - -Translate a single boot file to common lisp -<<translate>>= -(defun translate (file) ;; translates a single boot file -#+:CCL - (setq *package* (find-package "BOOT")) -#+:AKCL - (in-package "BOOT") - (let (*print-level* *print-length* (fn (pathname-name file)) - (bootfile (merge-pathnames file (concat (|systemRootDirectory|) "nboot/.boot")))) - (declare (special *print-level* *print-length*)) - (boot bootfile (make-pathname :type "lisp" :defaults bootfile)))) - -@ - -\subsubsection{compile-boot-file} - -Translate a single boot file to common lisp, compile it -and load it. -<<compile-boot-file>>= -(defun compile-boot-file (file) - "compile and load a boot file" - (boot (concat file ".boot") (concat file ".lisp")) -#+:AKCL - (compile-file (concat file ".lisp")) -#+:AKCL - (load (concat file "." *bin-path*)) -#+:CCL - (load (concat file ".lisp")) -) - -@ - -\subsubsection{retranslate-file-if-necessary} - -Retranslate a single boot file if it has been changed. -<<retranslate-file-if-necessary>>= -(defun retranslate-file-if-necessary (bootfile) - (let* ((lfile (make-pathname :type "lisp" :defaults bootfile)) - (ldate (our-write-date lfile)) - (binfile (make-pathname :type *bin-path* :defaults bootfile)) - (bindate (our-write-date binfile)) - (bootdate (our-write-date bootfile))) - (if (and ldate bootdate (> ldate bootdate)) nil - (if (and bindate bootdate (> bindate bootdate)) nil - (progn (format t "translating ~a~%" bootfile) - (boot bootfile lfile) (list bootfile)))))) - -@ - -\subsubsection{retranslate-directory} - -Translate a directory of boot code to common lisp if the boot code -is newer. -<<retranslate-directory>>= -(defun retranslate-directory (dir) - (let* ((direc (make-directory dir)) - (pattern (make-pathname :directory (pathname-directory direc) - :name :wild :type "boot")) - (files (directory pattern))) - (mapcan #'retranslate-file-if-necessary files))) - -@ - -\subsubsection{recompile-NRLIB-if-necessary} - -Recompile a single library's lisp file if it is out of date. -The {\bf recompile-lib-file-if-necessary} is defined in nlib.lisp. -<<recompile-NRLIB-if-necessary>>= -(defun recompile-NRLIB-if-necessary (lib) - (recompile-lib-file-if-necessary (concat (namestring lib) "/code.lsp")) - (lift-NRLIB-name (namestring lib))) - -@ - -\subsubsection{lift-NRLIB-name} - -We used to use FOO.NRLIB/code.o files for algebra. However there -was no need for this additional level of indirection since the rest -of the information in an NRLIB is now kept in the daase files. Thus -we lift the FOO.NRLIB/code.o to FOO.o in the final system. -<<lift-NRLIB-name>>= -(defun lift-NRLIB-name (f) - (obey (concat "cp " f "/code.o " (subseq f 0 (position #\. f)) ".o")) - nil) - -@ - -\subsubsection{recompile-lib-directory} - -Recompile library lisp code if necessary. -<<recompile-lib-directory>>= -(defun recompile-lib-directory (dir) - (let* ((direc (make-directory dir)) - (pattern (make-pathname :directory (pathname-directory direc) - :name :wild :type "NRLIB")) - (files (directory pattern))) - (mapcan #'recompile-NRLIB-if-necessary files))) - -@ - -\subsubsection{recompile-all-files} - -Force recompilation of all lisp files in a directory. -<<recompile-all-files>>= -(defun recompile-all-files (dir) - (let* ((direc (make-directory dir)) - (pattern (make-pathname :directory (pathname-directory direc) - :name :wild :type "lisp")) - (files (directory pattern))) - (mapcar #'compile-file files))) - -@ - -\subsubsection{recompile-directory} - -This function will compile any lisp code that has changed in a directory. -<<recompile-directory>>= -(defun recompile-directory (dir) - (let* ((direc (make-directory dir)) - (pattern (make-pathname :directory (pathname-directory direc) - :name :wild :type "lisp")) - (files (directory pattern))) - (mapcan #'recompile-file-if-necessary files))) - -@ - -\subsubsection{recompile-file-if-necessary} - -This is a helper function that checks the time stamp between -the given file and its compiled binary. If the file has changed -since it was last compiled this function will recompile it. -<<recompile-file-if-necessary>>= -(defun recompile-file-if-necessary (lfile) - (let* ((bfile (make-pathname :type *bin-path* :defaults lfile)) - (bdate (our-write-date bfile)) - (ldate (our-write-date lfile))) - (if (and bdate ldate (> bdate ldate)) nil - (progn - (format t "compiling ~a~%" lfile) - (compile-file lfile) - (list bfile))))) - -@ - -\subsubsection{our-write-date} - -Get the write date of a file. In GCL we need to check that it -exists first. This is a simple helper function. -<<our-write-date>>= -(defun our-write-date (file) (and #+kcl (probe-file file) - (file-write-date file))) - -@ - -\subsubsection{fe} - -I'm unsure what this does but I believe it is related to an interpreter -command. Invoking ``)fe'' in the interpreter tries to get at the -src/interp/TAGS file. -<<fe>>= -(defun fe (function file &optional (compflag nil) &aux (fn (pathname-name file))) - (let ((tbootfile (concat "/tmp/" fn ".boot")) - (tlispfile (concat "/tmp/" fn ".lisp"))) - (system::run-aix-program "fc" - :arguments (list (string function) - (namestring - (merge-pathnames file - (concat (|systemRootDirectory|) - "nboot/.boot")))) - :if-output-exists :supersede :output tbootfile) - (boot tbootfile tlispfile) - (if compflag (progn (compile-file tlispfile) - (load (make-pathname :type *bin-path* :defaults tlispfile))) - (load tlispfile)))) -@ - -\subsubsection{fc} - -I'm unsure what this does but I believe it is related to an interpreter -command. Invoking ``)fc'' in the interpreter tries to get at the -src/interp/TAGS file. -<<fc>>= -(defun fc (function file) (fe function file t)) - -@ - -\subsubsection{compspadfiles} - -The {\bf compspadfiles} function will recompile a list of {\bf spad} files. -The filelist should be a file containing names of files to compile. -<<compspadfiles>>= -(defun compspadfiles (filelist ;; should be a file containing files to compile - &optional (*default-pathname-defaults* - (pathname (concat (|systemRootDirectory|) - "nalgebra/")))) - (with-open-file (stream filelist) - (do ((fname (read-line stream nil nil) (read-line stream nil nil))) - ((null fname) 'done) - (setq fname (string-right-trim " *" fname)) - (when (not (equal (elt fname 0) #\*)) - (spad fname (concat (pathname-name fname) ".out")))))) - -@ - -\subsubsection{load-directory} - -Load a whole subdirectory of compiled files -<<load-directory>>= -(defun load-directory (dir) - (let* ((direc (make-directory dir)) - (pattern (make-pathname :directory (pathname-directory direc) - :name :wild :type *bin-path*)) - (files (directory pattern))) - (mapcar #'load files))) - -@ - -\subsubsection{interp-make-directory} - -This is used by the ")cd" system command. -<<interp-make-directory>>= -(defun interp-make-directory (direc) - (setq direc (namestring direc)) - (if (string= direc "") $current-directory - (if (or (memq :unix *features*) - (memq 'unix *features*)) - (progn - (if (char/= (char $current-directory (1-(length $current-directory))) #\/) - (setq $current-directory (concat $current-directory "/"))) - (if (char/= (char direc 0) #\/) - (setq direc (concat $current-directory direc))) - (if (char/= (char direc (1- (length direc))) #\/) - (setq direc (concat direc "/"))) - direc) - (progn ;; Assume Windows conventions - (if (not (or (char= (char $current-directory (1- (length $current-directory))) #\/) - (char= (char $current-directory (1- (length $current-directory))) #\\ ))) - (setq $current-directory (concat $current-directory "\\"))) - (if (not (or (char= (char direc 0) #\/) - (char= (char direc 0) #\\) - (find #\: direc))) - (setq direc (concat $current-directory direc))) - (if (not (or (char= (char direc (1- (length direc))) #\/) - (char= (char direc (1- (length direc))) #\\ ))) - (setq direc (concat direc "\\"))) - direc)))) - -@ - -\subsubsection{make-directory} - -Make a directory relative to the running system root directory. -<<make-directory>>= -(defun make-directory (direc) - (setq direc (namestring direc)) - (if (string= direc "") (|systemRootDirectory|) - (if (or (memq :unix *features*) - (memq 'unix *features*)) - (progn - (if (char/= (char direc 0) #\/) - (setq direc (concat (|systemRootDirectory|) "/" direc))) - (if (char/= (char direc (1- (length direc))) #\/) - (setq direc (concat direc "/"))) - direc) - (progn ;; Assume Windows conventions - (if (not (or (char= (char direc 0) #\/) - (char= (char direc 0) #\\) - (find #\: direc))) - (setq direc (concat (|systemRootDirectory|) "\\" direc))) - (if (not (or (char= (char direc (1- (length direc))) #\/) - (char= (char direc (1- (length direc))) #\\ ))) - (setq direc (concat direc "\\"))) - direc)))) - -@ - -\subsubsection{recompile-all-libs} - -Occasionally it will be necessary to iterate over all of the NRLIB -directories and compile each of the code.lsp files in every NRLIB. -This function will do that. A correct call looks like: -\begin{verbatim} -(in-package "BOOT") -(recompile-all-libs "/spad/mnt/${SYS}/algebra") -\end{verbatim} -where the [[${SYS}]] variable is same as the one set at build time. -<<recompile-all-libs>>= -(defun recompile-all-libs (dir) - (let* ((direc (make-directory dir)) - (pattern (make-pathname :directory (pathname-directory direc) - :name :wild :type "NRLIB")) - (files (directory pattern))) - (mapcar - #'(lambda (lib) (compile-lib-file (concat (namestring lib) "/code.lsp"))) - files))) - -@ - -\subsubsection{recompile-all-algebra-files} - -We occasionally need to completely rebuild the algebra from the spad -files. This function will iterate across a directory containing all -of the spad files and attempt to recompile them. A correct call looks -like: -\begin{verbatim} -(in-package "BOOT") -(recompile-all-algebra-files "nalg") -\end{verbatim} -Note that it will build a pathname from the current {\bf AXIOM} -shell variable. So if the {\bf AXIOM} shell variable had the value -\begin{verbatim} -/spad/mnt/${SYS} -\end{verbatim} -(where the [[${SYS}]] variable is the same one set at build time) -then the wildcard expands to -\begin{verbatim} -/spad/mnt/${SYS}/nalg/*.spad -\end{verbatim} -and all of the matching files would be recompiled. -<<recompile-all-algebra-files>>= -(defun recompile-all-algebra-files (dir) ;; a desperation measure - (let* ((direc (make-directory dir)) - (pattern (make-pathname :directory (pathname-directory direc) - :name :wild :type "spad")) - (files (directory pattern)) - (*default-pathname-defaults* (pathname direc))) - (mapcar - #'(lambda (fname) (spad fname (concat (pathname-name fname) ".out"))) - files))) - -@ - -\subsubsection{boottocl} - -The {\bf boottocl} function is the workhorse function that translates -{\bf .boot} files to {\bf Common Lisp}. It basically wraps the actual -{\bf boot} function call to ensure that we don't truncate lines -because of {\bf *print-level*} or {\bf *print-length*}. -<<boottocl>>= -(in-package "OLD-BOOT") - -(defun boot (file) ;; translates a single boot file -#+:CCL - (setq *package* (find-package "BOOT")) -#+:AKCL - (in-package "BOOT") - (let (*print-level* - *print-length* - (fn (pathname-name file)) - (*print-pretty* t)) - (declare (special *print-level* *print-length*)) - (boot::boot - file - (merge-pathnames (make-pathname :type "clisp") file)))) - -@ - -\subsubsection{yearweek} - -We need a way of distinguishing different versions of the system. -There used to be a way to touch the src/timestamp file whenever -you checked in a change to the change control subsystem. -During make PART=interp (the default for make) we set timestamp -to the filename of this timestamp file. This function converts it -to a luser readable string and sets the *yearweek* variable. - -The result of this function is a string that is printed as a banner -when Axiom starts. The actual printing is done by the function -[[spadStartUpMsgs]] in [[src/interp/msgdb.boot]]. It uses a -format string from the file [[src/doc/msgs/s2-us.msgs]]. -<<yearweek>>= -(defun yearweek () - "set *yearweek* to the current time string for the version banner" - (declare (special timestamp) (special *yearweek*)) - (if (and (boundp 'timestamp) (probe-file timestamp)) - (let (sec min hour date month year day dayvec monvec) - (setq dayvec '("Monday" "Tuesday" "Wednesday" "Thursday" - "Friday" "Saturday" "Sunday")) - (setq monvec '("January" "February" "March" "April" "May" "June" - "July" "August" "September" "October" "November" - "December")) - (multiple-value-setq (sec min hour date month year day) - (decode-universal-time - (file-write-date timestamp))) - (setq *yearweek* - (copy-seq - (format nil "~a ~a ~d, ~d at ~2,'0d:~2,'0d:~2,'0d " - (elt dayvec day) - (elt monvec (1- month)) date year hour min sec)))) - (setq *yearweek* "no timestamp"))) - -@ - -\subsubsection{makelib} - -Make will not compare dates across directories. -Rather than copy all of the code.lsp files to the MNT directory -we run this function to compile the files that are out of date -this function assumes that the shell variables INT and MNT are set. - -Also of note: on the rt some files (those in the nooptimize list) -need to be compiled without optimize due to compiler bugs -<<makelib>>= -(defun makelib (mid out stype btype) - "iterate over the NRLIBs, compiling ones that are out of date. - mid is the directory containing code.lsp - out is the directory containing code.o" - (let (libs lspdate odate nooptimize (alphabet #\space)) -#+(and :akcl :rt) - (setq nooptimize '("FFCAT-.NRLIB" "CHVAR.NRLIB" "PFO.NRLIB" "SUP.NRLIB" - "INTG0.NRLIB" "FSPRMELT.NRLIB" "VECTOR.NRLIB" - "EUCDOM-.NRLIB")) - (if (and mid out) - (format t "doing directory on ~s...~%" (concatenate 'string mid "/*")) - (error "makelib:MID=~a OUT=~a~% these are not set properly~%" mid out)) -#+:akcl (compiler::emit-fn nil) -#+:akcl (si::chdir mid) -#-:akcl (obey (concatenate 'string "cd " mid)) - (setq libs (directory "*.NRLIB")) - (unless libs - (format t "makelib:directory of ~a returned NIL~%" mid) - (bye -1)) - (princ "checking ") - (dolist (lib libs) - (unless (char= (schar (pathname-name lib) 0) alphabet) - (setq alphabet (schar (pathname-name lib) 0)) - (princ alphabet) - (finish-output)) - (let (dotlsp doto mntlib intkaf mntkaf intkafdate mntkafdate) - (setq dotlsp - (concatenate 'string mid "/" (file-namestring lib) "/code." stype)) - (setq doto - (concatenate 'string out "/" (pathname-name lib) ".NRLIB/code." btype)) - (setq mntlib - (concatenate 'string out "/" (pathname-name lib) ".NRLIB")) - (setq intkaf - (concatenate 'string mid "/" (file-namestring lib) "/index.KAF*")) - (setq mntkaf - (concatenate 'string out "/" (pathname-name lib) ".NRLIB/index.KAF*")) - (unless (probe-file mntlib) - (format t "creating directory ~a~%" mntlib) - (obey (concatenate 'string "cp -pr " (namestring lib) " " out)) - (when (probe-file (concatenate 'string mntlib "/code." stype)) - (delete-file (concatenate 'string mntlib "/code." stype)))) - (setq intkafdate (and (probe-file intkaf) (file-write-date intkaf))) - (setq mntkafdate (and (probe-file mntkaf) (file-write-date mntkaf))) - (when intkafdate - (unless (and mntkafdate (> mntkafdate intkafdate)) - (format t "~©ing ~s to ~s" intkaf mntkaf) - (obey - (concatenate 'string "cp " - (namestring intkaf) " " (namestring mntkaf))))) - (setq lspdate (and (probe-file dotlsp) (file-write-date dotlsp))) - (setq odate (and (probe-file doto) (file-write-date doto))) - (when lspdate - (unless (and odate (> odate lspdate)) -#+(and :akcl :rt) - (if (member (file-namestring lib) nooptimize :test #'string=) - (setq compiler::*speed* 0) - (setq compiler::*speed* 3)) - (compile-lib-file dotlsp :output-file doto))))))) - -@ - -\subsubsection{makespad} - -Make will not compare dates across directories. -In particular, it cannot compare the algebra files because there -is a one-to-many correspondence. This function will walk over -all of the algebra NRLIB files and find all of the spad files -that are out of date and need to be recompiled. This function -creates a file "/tmp/compile.input" to be used later in the -makefile. - -Note that the file /tmp/compile.input is not currently used -as algebra source recompiles are not necessarily something -we want done automatically. Nevertheless, in the quest for -quality we check anyway. -<<makespad>>= -(defun makespad (src mid stype) - "iterate over the spad files, compiling ones that are out of date. - src is the directory containing .spad - mid is the directory containing code.lsp - out is the directory containing code.o" - (let (mntlibs spadwork (alphabet #\space)) - (labels ( - (findsrc (mid libname) - "return a string name of the source file given the library file - name (eg PI) as a string" - (let (kaffile index alist) - (setq kaffile - (concatenate 'string mid "/" libname ".NRLIB/index.KAF*")) - (with-open-file (kaf kaffile) - (setq index (read kaf)) - (file-position kaf index) - (setq alist (read kaf)) - (setq index (third (assoc "sourceFile" alist :test #'string=))) - (file-position kaf index) - (pathname-name (pathname (read kaf index))))))) - (format t "makespad:src=~s mid=~s stype=~s~%" src mid stype) - (if (and src mid) - (format t "doing directory on ~s...~%" (concatenate 'string src "/*")) - (error "makespad:SRC=~a MID=~a not set properly~%" src mid)) -#+:akcl (si::chdir mid) -#-:akcl (obey (concatenate 'string "cd " mid)) - (setq mntlibs (directory "*.NRLIB")) - (unless mntlibs - (format t "makespad:directory of ~a returned NIL~%" src) - (bye 1)) - (princ "checking ") - (dolist (lib mntlibs) - (unless (char= (schar (pathname-name lib) 0) alphabet) - (setq alphabet (schar (pathname-name lib) 0)) - (princ alphabet) - (finish-output)) - (let (spad spaddate lsp lspdate) - (setq spad - (concatenate 'string src "/" (findsrc mid (pathname-name lib)) ".spad")) - (setq spaddate - (and (probe-file spad) (file-write-date spad))) - (setq lsp - (concatenate 'string mid "/" (pathname-name lib) ".NRLIB/code." stype)) - (setq lspdate - (and (probe-file lsp) (file-write-date lsp))) - (cond - ((and spaddate lspdate (<= spaddate lspdate))) - ((and spaddate lspdate (> spaddate lspdate)) - (setq spadwork (adjoin spad spadwork :test #'string=))) - ((and spaddate (not lspdate)) - (setq spadwork (adjoin spad spadwork :test #'string=))) - ((and (not spaddate) lspdate) - (format t "makespad:missing spad file ~a for lisp file ~a~%" spad lsp)) - ((and (not spaddate) (not lspdate)) - (format t "makespad:NRLIB ~a exist but is spad ~a and lsp ~a don't~%" - lib spad lsp))))) - (with-open-file (tmp "/tmp/compile.input" :direction :output) - (dolist (spad spadwork) - (format t "~a is out of date~%" spad) - (format tmp ")co ~a~%" spad)))))) - -@ - -\subsubsection{libcheck} - -We need to ensure that the INTERP.EXPOSED list, which is a list -of the exposed constructors, is consistent with the actual libraries. -<<libcheck>>= -(defun libcheck (int) - "check that INTERP.EXPOSED and NRLIBs are consistent" - (let (interp nrlibs) - (labels ( - (CONSTRUCTORNAME (nrlib) - "find the long name of a constructor given an abbreviation string" - (let (file sourcefile name) - (setq file (findsrc nrlib)) - (setq sourcefile - (concatenate 'string int "/" file ".spad")) - (when (and file (probe-file sourcefile)) - (setq name (searchsource sourcefile nrlib))))) - (NOCAT (longnames) - "remove the categories from the list of long names" - (remove-if - #'(lambda (x) - (let ((c (schar x (1- (length x))))) - (or (char= c #\&) (char= c #\-)))) longnames)) - (FINDSRC (libname) - "return a string name of the source file given the library file - name (eg PI) as a string" - (let (kaffile index alist result) - (setq kaffile - (concatenate 'string int "/" libname ".NRLIB/index.KAF*")) - (if (probe-file kaffile) - (with-open-file (kaf kaffile) - (setq index (read kaf)) - (file-position kaf index) - (setq alist (read kaf)) - (setq index (third (assoc "sourceFile" alist :test #'string=))) - (file-position kaf index) - (setq result (pathname-name (pathname (read kaf index)))))) - (format t "~a does not exist~%" kaffile) - result)) - (READINTERP () - "read INTERP.EXPOSED and return a sorted abbreviation list" - (let (expr names longnames) - (with-open-file (in (concatenate 'string int "/INTERP.EXPOSED")) - (catch 'eof - (loop - (setq expr (read-line in nil 'eof)) - (when (eq expr 'eof) (throw 'eof nil)) - (when - (and - (> (length expr) 58) - (char= (schar expr 0) #\space) - (not (char= (schar expr 8) #\space))) - (push (string-trim '(#\space) (subseq expr 8 57)) longnames) - (push (string-right-trim '(#\space) (subseq expr 58)) names))))) - (setq longnames (sort longnames #'string<)) - (setq names (sort names #'string<)) - (values names longnames))) - (READLIBS (algebra) - "read the NRLIB directory and return a sorted abbreviation list" - (let (libs nrlibs) -#+:akcl (si::chdir algebra) -#-:akcl (obey (concatenate 'string "cd " algebra)) - (setq nrlibs (directory "*.NRLIB")) - (unless nrlibs - (error "libcheck: (directory ~s) returned NIL~%" - (concatenate 'string algebra "/*.NRLIB"))) - (dolist (lib nrlibs) - (push (pathname-name lib) libs)) - (sort libs #'string<))) - (SEARCHSOURCE (sourcefile nrlib) - "search a sourcefile for the long constructor name of the nrlib string" - (let (in expr start) - (setq nrlib (concatenate 'string " " nrlib " ")) - (catch 'done - (with-open-file (in sourcefile) - (loop - (setq expr (read-line in nil 'done)) - (when (eq expr 'done) (throw 'done nil)) - (when (and (> (length expr) 4) - (string= ")abb" (subseq expr 0 4)) - (search nrlib expr :test #'string=) - (setq start (position #\space expr :from-end t :test #'char=))) - (throw 'done (string-trim '(#\space) (subseq expr start))))))))) - (SRCABBREVS (sourcefile) - (let (in expr start end names longnames) - (catch 'done - (with-open-file (in sourcefile) - (loop - (setq expr (read-line in nil 'done)) - (when (eq expr 'done) (throw 'done nil)) - (when (and (> (length expr) 4) - (string= ")abb" (subseq expr 0 4))) - (setq point (position #\space expr :from-end t :test #'char=)) - (push (string-trim '(#\space) (subseq expr point)) longnames) - (setq mark - (position #\space - (string-right-trim '(#\space) - (subseq expr 0 (1- point))) :from-end t)) - (push (string-trim '(#\space) (subseq expr mark point)) names))))) - (values names longnames))) - (SRCSCAN () - (let (longnames names) -#+:gcl (system::chdir int) -#-:gcl (obey (concatenate 'string "cd " int)) - (setq spads (directory "*.spad")) - (dolist (spad spads) - (multiple-value-setq (short long) (srcabbrevs spad)) - (setq names (nconc names short)) - (setq longnames (nconc longnames long))) - (setq names (sort names #'string<)) - (setq longnames (sort longnames #'string<)) - (values names longnames)))) - (multiple-value-setq (abbrevs constructors) (readinterp)) - (setq nrlibs (readlibs int)) - (dolist (lib (set-difference nrlibs abbrevs :test #'string=)) - (format t "libcheck:~a/~a.NRLIB is not in INTERP.EXPOSED~%" int lib)) - (dolist (expose (set-difference abbrevs nrlibs :test #'string=)) - (format t "libcheck:~a is in INTERP.EXPOSED with no NRLIB~%" expose)) - (multiple-value-setq (srcabbrevs srcconstructors) (srcscan)) - (setq abbrevs (nocat abbrevs)) - (setq constructors (nocat constructors)) - (dolist (item (set-difference srcabbrevs abbrevs :test #'string=)) - (format t "libcheck:~a is in ~a but not in INTERP.EXPOSED~%" item - (findsrc item))) - (dolist (item (set-difference abbrevs srcabbrevs :test #'string=)) - (format t "libcheck:~a is in INTERP.EXPOSED but has no spad sourcfile~%" - item)) - (dolist (item (set-difference srcconstructors constructors :test #'string=)) - (format t "libcheck:~a is not in INTERP.EXPOSED~%" item)) - (dolist (item (set-difference constructors srcconstructors :test #'string=)) - (format t "libcheck:~a has no spad source file~%" item))))) - -@ - - -\subsection{Constructing TAGS} - -TAGS are useful for finding functions if you run Emacs. We have a -set of functions that construct TAGS files for Axiom. -\subsubsection{make-tags-file} -Run the etags command on all of the lisp code. Then run the -{\bf spadtags-from-directory} function on the boot code. The -final TAGS file is constructed in the {\bf tmp} directory. -<<make-tags-file>>= -(defun make-tags-file () -#+:gcl (system:chdir "/tmp") -#-:gcl (obey (concatenate 'string "cd " "/tmp")) - (obey (concat "etags " (make-absolute-filename "../../src/interp/*.lisp"))) - (spadtags-from-directory "../../src/interp" "boot") - (obey "cat /tmp/boot.TAGS >> /tmp/TAGS")) - -@ - -\subsubsection{spadtags-from-directory} - -This function will walk across a directory and call -{\bf spadtags-from-file} on each file. -<<spadtags-from-directory>>= -(defun spadtags-from-directory (dir type) - (let* ((direc (make-directory dir)) - (pattern (make-pathname :directory (pathname-directory direc) - :name :wild :type type)) - (files (directory pattern))) - (with-open-file - (tagstream (concatenate 'string "/tmp/" type ".TAGS") :direction :output - :if-exists :supersede :if-does-not-exist :create) - (dolist (file files (namestring tagstream)) - (print (list "processing:" file)) - (write-char #\page tagstream) - (terpri tagstream) - (write-string (namestring file) tagstream) - (write-char #\, tagstream) - (princ (spadtags-from-file file) tagstream) - (terpri tagstream) - (with-open-file (stream "/tmp/*TAGS") - (do ((line (read-line stream nil nil) - (read-line stream nil nil))) - ((null line) nil) - (write-line line tagstream))))))) - -@ - -\subsubsection{spadtags-from-file} - -This function knows how to find function names in {\bf boot} code -so we can add them to the TAGS file using standard etags format. -<<spadtags-from-file>>= -(defun spadtags-from-file (spadfile) - (with-open-file (tagstream "/tmp/*TAGS" :direction :output - :if-exists :supersede :if-does-not-exist :create) - (with-open-file (stream spadfile) - (do ((char-count 0 (file-position stream)) - (line (read-line stream nil nil) (read-line stream nil nil)) - (line-count 1 (1+ line-count))) - ((null line) (file-length tagstream)) - (if (/= (length line) 0) - (let ((firstchar (elt line 0)) (end nil) - (len (length line))) - (cond ((member firstchar '(#\space #\{ #\} #\tab ) - :test #'char= ) "skip") - ((string= line ")abb" :end1 (min 4 len)) - (setq end (position #\space line :from-end t - :test-not #'eql) - end (and end (position #\space line :from-end t - :end end))) - (write-tag-line line tagstream end - line-count char-count)) - ((char= firstchar #\)) "skip") - ((and (> len 1) (string= line "--" :end1 2)) "skip") - ((and (> len 1) (string= line "++" :end1 2)) "skip") - ((search "==>" line) "skip") - ((and (setq end (position #\space line) - end (or (position #\( line :end end) end) - end (or (position #\: line :end end) end) - end (or (position #\[ line :end end) end)) - (equal end 0)) "skip") - ((position #\] line :end end) "skip") - ((string= line "SETANDFILEQ" :end1 end) "skip") - ((string= line "EVALANDFILEACTQ" :end1 end) "skip") - (t (write-tag-line line tagstream - (if (numberp end) (+ end 1) end) - line-count char-count)) ))))))) - -@ - -\subsubsection{write-tag-line} - -This function knows how to write a single line into a TAGS file -using the etags file format. -<<write-tag-line>>= -(defun write-tag-line (line tagstream endcol line-count char-count) - (write-string line tagstream :end endcol) - (write-char #\rubout tagstream) - (princ line-count tagstream) - (write-char #\, tagstream) - (princ char-count tagstream) - (terpri tagstream)) - -@ - -\subsubsection{blankcharp} - -This is a trivial predicate for calls to {\bf position-if-not} in the -{\bf findtag} function. -<<blankcharp>>= -(defun blankcharp (c) (char= c #\Space)) - -@ - -\subsubsection{findtag} - -The {\bf findtag} function is a user-level function to figure out -which file contains a given tag. This is sometimes useful if Emacs -is not around or TAGS are not loaded. -<<findtag>>= -(defun findtag (tag &optional (tagfile (concat (|systemRootDirectory|) "/../../src/interp/TAGS")) ) - ;; tag is an identifier - (with-open-file (tagstream tagfile) - (do ((tagline (read-line tagstream nil nil) - (read-line tagstream nil nil)) - (*package* (symbol-package tag)) - (sourcefile) - (stringtag (string tag)) - (pos) - (tpos) - (type)) - ((null tagline) ()) - (cond ((char= (char tagline 0) #\Page) - (setq tagline (read-line tagstream nil nil)) - (setq sourcefile (subseq tagline 0 - (position #\, tagline))) - (setq type (pathname-type sourcefile))) - ((string= type "lisp") - (if (match-lisp-tag tag tagline) - (return (cons sourcefile tagline)))) - ((> (mismatch ")abb" tagline) 3) - (setq pos (position #\Space tagline :start 3)) - (setq pos (position-if-not #'blankcharp tagline - :start pos)) - (setq pos (position #\Space tagline :start pos)) - (setq pos (position-if-not #'blankcharp tagline - :start pos)) - (setq tpos (mismatch stringtag tagline :start2 pos)) - (if (and (= tpos (length (string tag))) - (member (char tagline (+ pos tpos)) '(#\Space #\Rubout))) - (return (cons sourcefile tagline)))) - ((setq pos (mismatch stringtag tagline)) - (if (and (= pos (length stringtag)) - (> (length tagline) pos) - (member (char tagline pos) - '( #\Space #\( #\:) )) - (return (cons sourcefile tagline)))))))) - -@ - -\subsubsection{match-lisp-tag} - -The {\bf match-lisp-tag} function is used by {\bf findtag}. This -function assumes that \\ can only appear as first character of name. -<<match-lisp-tag>>= -(defun match-lisp-tag (tag tagline &optional (prefix nil) - &aux (stringtag (string tag)) pos tpos) - (when (and (if prefix - (= (mismatch prefix tagline :test #'char-equal) - (length prefix)) - t) - (numberp (setq pos (position #\Space tagline))) - (numberp (setq pos (position-if-not #'blankcharp tagline - :start pos)))) - (if (char= (char tagline pos) #\') (incf pos)) - (if (member (char tagline pos) '( #\\ #\|)) - (setq tpos (1+ pos)) - (setq tpos pos)) - (and (= (mismatch stringtag tagline :start2 tpos :test #'char-equal) - (length stringtag)) - (eq tag (read-from-string tagline nil nil :start pos))) )) - -@ - - -\subsection{Translated Boot functions} - -\subsubsection{string2BootTree} - -<<string2BootTree>>= -(DEFUN |string2BootTree| (S) - (init-boot/spad-reader) - (LET* ((BOOT-LINE-STACK (LIST (CONS 1 S))) - ($BOOT T) - ($SPAD NIL) - (XTOKENREADER 'GET-BOOT-TOKEN) - (LINE-HANDLER 'NEXT-BOOT-LINE) - (PARSEOUT (PROGN (|PARSE-Expression|) (POP-STACK-1)))) - (DECLARE (SPECIAL BOOT-LINE-STACK $BOOT $SPAD XTOKENREADER LINE-HANDLER)) - (DEF-RENAME (|new2OldLisp| PARSEOUT)))) - -@ - -\subsubsection{string2SpadTree} - -<<string2SpadTree>>= -(DEFUN |string2SpadTree| (LINE) - (DECLARE (SPECIAL LINE)) - (if (and (> (LENGTH LINE) 0) (EQ (CHAR LINE 0) #\) )) - (|processSynonyms|)) - (ioclear) - (LET* ((BOOT-LINE-STACK (LIST (CONS 1 LINE))) - ($BOOT NIL) - ($SPAD T) - (XTOKENREADER 'GET-BOOT-TOKEN) - (LINE-HANDLER 'NEXT-BOOT-LINE) - (PARSEOUT (PROG2 (|PARSE-NewExpr|) (POP-STACK-1)))) - (DECLARE (SPECIAL BOOT-LINE-STACK $BOOT $SPAD XTOKENREADER LINE-HANDLER)) - PARSEOUT)) - -@ - -\subsubsection{processSynonyms} - -;;--------------------> NEW DEFINITION (see i-syscmd.boot.pamphlet) -<<processSynonyms>>= -(defun |processSynonyms| () nil) ;;dummy def for depsys, redefined later - -@ - - -\section{License} - -<<license>>= -;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. -;; All rights reserved. -;; -;; Redistribution and use in source and binary forms, with or without -;; modification, are permitted provided that the following conditions are -;; met: -;; -;; - Redistributions of source code must retain the above copyright -;; notice, this list of conditions and the following disclaimer. -;; -;; - Redistributions in binary form must reproduce the above copyright -;; notice, this list of conditions and the following disclaimer in -;; the documentation and/or other materials provided with the -;; distribution. -;; -;; - Neither the name of The Numerical ALgorithms Group Ltd. nor the -;; names of its contributors may be used to endorse or promote products -;; derived from this software without specific prior written permission. -;; -;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -;; IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED -;; TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -;; PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER -;; OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -;; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -;; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -;; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -@ -<<*>>= -<<license>> - -(IMPORT-MODULE "vmlisp") -(import-module "parsing") - -(in-package "BOOT") -(export '($directory-list $current-directory reroot - make-absolute-filename |$msgDatabaseName| |$defaultMsgDatabaseName|)) - -<<our-write-date>> -<<make-directory>> -<<interp-make-directory>> -<<bin-path>> -<<load-directory>> -<<compspadfiles>> -<<recompile-all-algebra-files>> -<<fe>> -<<fc>> -<<recompile-directory>> -<<recompile-file-if-necessary>> -<<recompile-all-files>> -<<recompile-lib-directory>> -<<recompile-all-libs>> -<<recompile-NRLIB-if-necessary>> -<<lift-NRLIB-name>> -<<retranslate-directory>> -<<retranslate-file-if-necessary>> -<<make-tags-file>> -<<spadtags-from-directory>> -<<spadtags-from-file>> -<<write-tag-line>> -<<blankcharp>> -<<findtag>> -<<match-lisp-tag>> -<<compile-boot-file>> -<<translate>> -<<translist>> -<<relative-directory-list>> -<<relative-library-directory-list>> -<<boottocl>> - -(in-package "BOOT") - -<<translate-functions>> -<<asauto-functions>> -<<debug-functions>> -<<anna-functions>> -<<nagbr-functions>> -<<setBootAutloadProperties>> -<<boot-load>> -<<setBootAutoLoadProperty>> -<<mkBootAutoLoad>> -<<build-interpsys>> -<<setNAGBootAutloadProperties>> -<<get-NAG-chapter>> -<<nag-files>> -<<chapter-name>> -<<build-depsys>> - -<<string2BootTree>> -<<string2SpadTree>> -<<processSynonyms>> - -;; the following are for conditional reading -#+:ieee-floating-point (setq $ieee t) -#-:ieee-floating-point (setq $ieee nil) -(setq |$opSysName| '"shell") -#+:CCL (defun machine-type () "unknown") -(setq |$machineType| (machine-type)) -; spad-clear-input patches around fact that akcl clear-input leaves newlines chars -(defun spad-clear-input (st) (clear-input st) (if (listen st) (read-char st))) - -<<yearweek>> -(defun sourcepath (f) - "find the sourcefile in the system directories" - (let (axiom algebra naglink) - (setq axiom (|systemRootDirectory|)) - (setq algebra (concatenate 'string axiom "/../../src/algebra/" f ".spad")) - (setq naglink (concatenate 'string axiom "/../../src/naglink/" f ".spad")) - (cond - ((probe-file algebra) algebra) - ((probe-file naglink) naglink) - ('else nil)))) - -(defun srcabbrevs (sourcefile) - "read spad source files and return the constructor names and abbrevs" - (let (expr point mark names longnames) - (catch 'done - (with-open-file (in sourcefile) - (loop - (setq expr (read-line in nil 'done)) - (when (eq expr 'done) (throw 'done nil)) - (when (and (> (length expr) 4) (string= ")abb" (subseq expr 0 4))) - (setq expr (string-right-trim '(#\space #\tab) expr)) - (setq point (position #\space expr :from-end t :test #'char=)) - (push (subseq expr (1+ point)) longnames) - (setq expr (string-right-trim '(#\space #\tab) - (subseq expr 0 point))) - (setq mark (position #\space expr :from-end t)) - (push (subseq expr (1+ mark)) names))))) - (values longnames names))) - - -#+(and :AKCL (not (or :dos :win32))) -(in-package "COMPILER") -#+(and :AKCL (not (or :dos :win32))) -(defun gazonk-name ( &aux tem) - "return the name of the intermediate compiler file" - (dotimes (i 1000) - (setq tem (merge-pathnames (format nil "/tmp/gazonk~d.lsp" i))) - (unless (probe-file tem) - (return-from gazonk-name (pathname tem)))) - (error "1000 gazonk names used already!")) - -(in-package "BOOT") - -(defun |tr| (fn) - (|spad2AsTranslatorAutoloadOnceTrigger|) - (|convertSpadFile| fn) ) - -<<makelib>> -<<makespad>> -<<libcheck>> - -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} diff --git a/src/interp/vmlisp.lisp.pamphlet b/src/interp/vmlisp.lisp index 086c82f7..e829899e 100644 --- a/src/interp/vmlisp.lisp.pamphlet +++ b/src/interp/vmlisp.lisp @@ -1,25 +1,7 @@ -%% Oh Emacs, this is a -*- Lisp -*- file despite apperance. -\documentclass{article} -\usepackage{axiom} - -\title{\File{src/interp/vmlisp.lisp} Pamphlet} -\author{Lars Ericson, Barry Trager, Martial Schor, Timothy Daly} - -\begin{document} -\maketitle - -\begin{abstract} -\end{abstract} - -\tableofcontents -\eject - - -\section{License} - -<<license>>= ;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. ;; All rights reserved. +;; Copyright (C) 2007, Gabriel Dos Reis. +;; All rights reserved. ;; ;; Redistribution and use in source and binary forms, with or without ;; modification, are permitted provided that the following conditions are @@ -49,48 +31,6 @@ ;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -@ - - -\section{The [[VMLISP]] package} - -This is the package that originally contained the \Tool{VMLisp} macros -but in fact contains macros to support several other lisps. It -is essentially the place where most of the macros to support -idioms from prior ports (like [[rdefiostream]] and [[fileactq]]) - -The content of [[VMLISP]] was moved to [[BOOT]]. - -\section{The StringImage Fix} - -In GCL 2.5 there is a bug in the write-to-string function. -It should respect *print-escape* but it does not. That is, -\begin{verbatim} - -In GCL 2.4.1: -(setq *print-escape* nil) -(write-to-string '|a|) ==> "a" - -In GCL 2.5: -(setq *print-escape* nil) -(write-to-string '|a|) ==> "|a|" - -\end{verbatim} -The form2LispString function uses stringimage and fails. -The princ-to-string function assumes *print-escape* is nil -and works properly. - -<<stringimage fix>>= -;(define-function 'prin2cvec #'write-to-string) -(define-function 'prin2cvec #'princ-to-string) -;(define-function 'stringimage #'write-to-string) -(define-function 'stringimage #'princ-to-string) - -@ - - -<<*>>= - (IMPORT-MODULE "boot-pkg") ; VM LISP EMULATION PACKAGE @@ -196,15 +136,15 @@ and works properly. (defun equable (x) (or (null x) (and (consp x) (eq (car x) 'quote) - (symbolp (cadr x)))))) + (symbolp (cadr x)))))) #-:CCL (defmacro eqcar (x y) (let ((test (cond ((equable y) 'eq) - ((integerp y) 'i=) - ('eql)))) + ((integerp y) 'i=) + ('eql)))) (if (atom x) `(and (consp ,x) (,test (qcar ,x) ,y)) (let ((xx (gensym))) @@ -240,13 +180,13 @@ and works properly. (defmacro i= (x y) ;; integer equality (if (typep y 'fixnum) (let ((gx (gensym))) - `(let ((,gx ,x)) - (and (typep ,gx 'fixnum) (eql (the fixnum ,gx) ,y)))) + `(let ((,gx ,x)) + (and (typep ,gx 'fixnum) (eql (the fixnum ,gx) ,y)))) (let ((gx (gensym)) (gy (gensym))) `(let ((,gx ,x) (,gy ,y)) - (cond ((and (typep ,gx 'fixnum) (typep ,gy 'fixnum)) - (eql (the fixnum ,gx) (the fixnum ,gy))) - ((eql (the integer ,gx) (the integer,gy)))))))) + (cond ((and (typep ,gx 'fixnum) (typep ,gy 'fixnum)) + (eql (the fixnum ,gx) (the fixnum ,gy))) + ((eql (the integer ,gx) (the integer,gy)))))))) (defmacro |idChar?| (x) `(or (alphanumericp ,x) (member ,x '(#\? #\% #\' #\!) :test #'char=))) @@ -263,14 +203,14 @@ and works properly. `(and (consp ,x) (qcar ,x)) (let ((xx (gensym))) `(let ((,xx ,x)) - (and (consp ,xx) (qcar ,xx)))))) + (and (consp ,xx) (qcar ,xx)))))) (defmacro ifcdr (x) (if (atom x) `(and (consp ,x) (qcdr ,x)) (let ((xx (gensym))) `(let ((,xx ,x)) - (and (consp ,xx) (qcdr ,xx)))))) + (and (consp ,xx) (qcdr ,xx)))))) (defmacro intp (x) `(integerp ,x)) @@ -326,7 +266,7 @@ and works properly. `(if (atom ,x) ,x (nreverse ,x)) (let ((xx (gensym))) `(let ((,xx ,x)) - (if (atom ,xx) ,xx (nreverse ,xx)))))) + (if (atom ,xx) ,xx (nreverse ,xx)))))) (defmacro nump (n) `(numberp ,n)) @@ -336,7 +276,7 @@ and works properly. `(if (consp ,x) (qcar ,x) ,x) (let ((xx (gensym))) `(let ((,xx ,x)) - (if (consp ,xx) (qcar ,xx) ,xx))))) + (if (consp ,xx) (qcar ,xx) ,xx))))) (defmacro oraddtempdefs (filearg) `(eval-when @@ -747,7 +687,7 @@ and works properly. (setq lamda (eval lamda) ltype (car lamda) body (cddr lamda)))) (let ((dectest (car body))) (if (and (eqcar dectest 'declare) (eqcar (cadr dectest) 'special)) - (setq *decl* (cdr (cadr dectest)) body (cdr body)))) + (setq *decl* (cdr (cadr dectest)) body (cdr body)))) (setq args (remove-fluids (cadr lamda))) (cond ((and (eq ltype 'lambda) (simple-arglist args)) (setq nargs args)) (t (setq nargs (gensym)) @@ -798,9 +738,9 @@ and works properly. (compiled-function-p (macro-function item)))) (defun FBPIP (item) (or (compiled-function-p item) - (and (symbolp item) (fboundp item) - (not (macro-function item)) - (compiled-function-p (symbol-function item))))) + (and (symbolp item) (fboundp item) + (not (macro-function item)) + (compiled-function-p (symbol-function item))))) ; 9.5 Identifiers @@ -830,7 +770,7 @@ and works properly. (and (streamp stream) (or (not (consp (pathname-directory stream))) (equal (qcar (pathname-directory stream)) "dev") - (null (pathname-name stream) )))) + (null (pathname-name stream) )))) #+KCL (defun IS-CONSOLE (stream) @@ -877,8 +817,8 @@ and works properly. ;; note it is important that PNAME returns nil not an error for non-symbols (defun pname (x) (cond ((symbolp x) (symbol-name x)) - ((characterp x) (string x)) - (t nil))) + ((characterp x) (string x)) + (t nil))) ;; property lists in vmlisp are alists (defun PROPLIST (x) @@ -982,9 +922,9 @@ and works properly. ;;(defun INTERSECTIONQ (l1 l2) (intersection l1 l2 :test #'eq)) (defun |member| (item sequence) (cond ((symbolp item) (member item sequence :test #'eq)) - ((stringp item) (member item sequence :test #'equal)) - ((and (atom item) (not (arrayp item))) (member item sequence)) - (T (member item sequence :test #'equalp)))) + ((stringp item) (member item sequence :test #'equal)) + ((and (atom item) (not (arrayp item))) (member item sequence)) + (T (member item sequence :test #'equalp)))) (defun |remove| (list item &optional (count 1)) (if (integerp count) @@ -1011,26 +951,26 @@ and works properly. ; ignores non-nil list terminators ; ignores non-pair a-list entries (cond ((symbolp X) - (PROG NIL - A (COND ((ATOM Y) (RETURN NIL)) - ((NOT (consp (CAR Y))) ) - ((EQ (CAAR Y) X) (RETURN (CAR Y))) ) - (SETQ Y (CDR Y)) - (GO A))) - ((or (numberp x) (characterp x)) - (PROG NIL - A (COND ((ATOM Y) (RETURN NIL)) - ((NOT (consp (CAR Y))) ) - ((EQL (CAAR Y) X) (RETURN (CAR Y))) ) - (SETQ Y (CDR Y)) - (GO A))) - (t - (PROG NIL - A (COND ((ATOM Y) (RETURN NIL)) - ((NOT (consp (CAR Y))) ) - ((EQUAL (CAAR Y) X) (RETURN (CAR Y))) ) - (SETQ Y (CDR Y)) - (GO A))))) + (PROG NIL + A (COND ((ATOM Y) (RETURN NIL)) + ((NOT (consp (CAR Y))) ) + ((EQ (CAAR Y) X) (RETURN (CAR Y))) ) + (SETQ Y (CDR Y)) + (GO A))) + ((or (numberp x) (characterp x)) + (PROG NIL + A (COND ((ATOM Y) (RETURN NIL)) + ((NOT (consp (CAR Y))) ) + ((EQL (CAAR Y) X) (RETURN (CAR Y))) ) + (SETQ Y (CDR Y)) + (GO A))) + (t + (PROG NIL + A (COND ((ATOM Y) (RETURN NIL)) + ((NOT (consp (CAR Y))) ) + ((EQUAL (CAAR Y) X) (RETURN (CAR Y))) ) + (SETQ Y (CDR Y)) + (GO A))))) ; 14.5 Updating (defun NREMOVE (list item &optional (count 1)) @@ -1065,20 +1005,6 @@ and works properly. (define-function 'GETREFV #'make-array) -@ -Waldek Hebisch points out that, in the expression: -\begin{verbatim} - reduce(+,[1.0/i for i in 1..20000]) -\end{verbatim} -a significant amount of the time is spent in this function. -A special case was added to significantly reduce the execution time. -This was a problem in GCL as of 2.6.8pre and may be fixed in future -releases. If it is fixed then the original definition, which was -\begin{verbatim} -(defun LIST2VEC (list) (coerce list 'vector)) -\end{verbatim} -can be restored. -<<*>>= (defun LIST2VEC (list) (if (consp list) (let* ((len (length list)) @@ -1102,7 +1028,7 @@ can be restored. #+:CCL ((stringp l) (length l)) ;; Until ACN fixes his lisp -> C translator. #-:CCL ((consp l) (list-length l)) #+:CCL ((consp l) (length l)) - (t 0))) + (t 0))) (define-function 'MOVEVEC #'replace) @@ -1126,15 +1052,15 @@ can be restored. (defun concat (a b &rest l) (let ((type (cond ((bit-vector-p a) 'bit-vector) (t 'string)))) (cond ((eq type 'string) - (setq a (string a) b (string b)) + (setq a (string a) b (string b)) (if l (setq l (mapcar #'string l))))) (if l (apply #'concatenate type a b l) - (concatenate type a b))) ) + (concatenate type a b))) ) #+AKCL (defun concat (a b &rest l) (if (bit-vector-p a) (if l (apply #'concatenate 'bit-vector a b l) - (concatenate 'bit-vector a b)) + (concatenate 'bit-vector a b)) (if l (apply #'system:string-concatenate a b l) (system:string-concatenate a b)))) @@ -1178,17 +1104,17 @@ can be restored. ;;- (defun strpos (what in start dontcare) ;;- (setq what (string what) in (string in)) ;;- (if dontcare (progn (setq dontcare (character dontcare)) -;;- (search what in :start2 start -;;- :test #'(lambda (x y) (or (eql x dontcare) -;;- (eql x y))))) +;;- (search what in :start2 start +;;- :test #'(lambda (x y) (or (eql x dontcare) +;;- (eql x y))))) ;;- (search what in :start2 start))) (defun strpos (what in start dontcare) (setq what (string what) in (string in)) (if dontcare (progn (setq dontcare (character dontcare)) - (search what in :start2 start - :test #'(lambda (x y) (or (eql x dontcare) - (eql x y))))) + (search what in :start2 start + :test #'(lambda (x y) (or (eql x dontcare) + (eql x y))))) (if (= start 0) (search what in) (search what in :start2 start)) @@ -1209,14 +1135,14 @@ can be restored. changing CVEC." (unless (characterp id) (setq id (elt (string id) 0))) (cond ((array-has-fill-pointer-p cvec) - (vector-push-extend id cvec) - cvec) - ((adjustable-array-p cvec) - (let ((l (length cvec))) - (adjust-array cvec (1+ l)) - (setf (elt cvec l) id) - cvec)) - (t (concat cvec id)))) + (vector-push-extend id cvec) + cvec) + ((adjustable-array-p cvec) + (let ((l (length cvec))) + (adjust-array cvec (1+ l)) + (setf (elt cvec l) id) + cvec)) + (t (concat cvec id)))) (defun setsize (vector size) (adjust-array vector size)) @@ -1264,7 +1190,7 @@ can be restored. (setq start1 (1+ start1)) (setq start2 (1+ start2))) (let* ((l1 (length cvec1)) - (r (make-string (- (+ l1 length2) length1))) + (r (make-string (- (+ l1 length2) length1))) (i 0)) (do ((j 0 (1+ j))) ((= j start1)) @@ -1598,7 +1524,11 @@ can be restored. ; 24.0 Printing -<<stringimage fix>> +;(define-function 'prin2cvec #'write-to-string) +(define-function 'prin2cvec #'princ-to-string) +;(define-function 'stringimage #'write-to-string) +(define-function 'stringimage #'princ-to-string) + (define-function 'printexp #'princ) (define-function 'prin0 #'prin1) @@ -1653,17 +1583,17 @@ can be restored. (filename (cdr (assoc 'FILE stream-alist))) (dev (cdr (assoc 'DEVICE stream-alist)))) (if (EQ dev 'CONSOLE) (make-synonym-stream '*terminal-io*) - (let ((strm (case mode - ((OUTPUT O) (open (make-filename filename) - :direction :output)) - ((INPUT I) (open (make-input-filename filename) - :direction :input))))) - (if (and (numberp char-position) (> char-position 0)) - (file-position strm char-position)) - strm)))) + (let ((strm (case mode + ((OUTPUT O) (open (make-filename filename) + :direction :output)) + ((INPUT I) (open (make-input-filename filename) + :direction :input))))) + (if (and (numberp char-position) (> char-position 0)) + (file-position strm char-position)) + strm)))) (defun shut (st) (if (is-console st) st - (if (streamp st) (close st) -1))) + (if (streamp st) (close st) -1))) (defun EOFP (stream) (null (peek-char nil stream nil nil))) @@ -1771,7 +1701,7 @@ can be restored. (defun CurrentTime () (multiple-value-bind (sec min hour day month year) (get-decoded-time) (format nil "~2,'0D/~2,'0D/~2,'0D~2,'0D:~2,'0D:~2,'0D" - month day (rem year 100) hour min sec))) + month day (rem year 100) hour min sec))) (defun $screensize () '(24 80)) ; You tell me!! @@ -1816,11 +1746,11 @@ can be restored. (setq MACERRORCOUNT (+ 1 (eval 'MACERRORCOUNT))) (let ((nargs (abs N))) (error (concatenate 'string (symbol-name NAME) " requires " - (if (minusp N) "at least " "exactly ") - (case nargs (0 "no") (1 "one") (2 "two") (3 "three") - (4 "four") (5 "five") (6 "six") - (t (princ-to-string nargs))) - (if (eq nargs 1) " argument," " arguments,"))))) + (if (minusp N) "at least " "exactly ") + (case nargs (0 "no") (1 "one") (2 "two") (3 "three") + (4 "four") (5 "five") (6 "six") + (t (princ-to-string nargs))) + (if (eq nargs 1) " argument," " arguments,"))))) (defun MACERR (MESSAGE &rest ignore) (declare (ignore ignore)) @@ -1851,18 +1781,18 @@ can be restored. ;; first cons-cell whose CAR is EQ KEY. (defun getl (sym key) (cond ((symbolp sym) - (get sym key)) - ((null sym) nil) - ((consp sym) - (let ((sym-1 (car sym))) - (cond ((symbolp sym-1) - (get sym-1 key)) - ((and (consp sym-1) - (symbolp (car sym-1))) - (if (eq (car sym-1) key) - (cdr sym-1) - (getl (cdr sym) key)))))))) - + (get sym key)) + ((null sym) nil) + ((consp sym) + (let ((sym-1 (car sym))) + (cond ((symbolp sym-1) + (get sym-1 key)) + ((and (consp sym-1) + (symbolp (car sym-1))) + (if (eq (car sym-1) key) + (cdr sym-1) + (getl (cdr sym) key)))))))) + ; The following should actually position the cursor at the sint'th line of the screen: (defun $showline (cvec sint) (terpri) sint (princ cvec)) @@ -1924,20 +1854,20 @@ can be restored. (defun BPINAME (func) (if (functionp func) (if (symbolp func) func - (let ((name (svref func 0))) - (if (and (consp name) (eq (car name) 'SYSTEM::NAMED-LAMBDA)) - (cadr name) - name)) ))) + (let ((name (svref func 0))) + (if (and (consp name) (eq (car name) 'SYSTEM::NAMED-LAMBDA)) + (cadr name) + name)) ))) #+(OR IBCL KCL) (defun BPINAME (func) (if (functionp func) (cond ((symbolp func) func) - ((and (consp func) (eq (car func) 'LAMBDA-BLOCK)) - (cadr func)) - ((compiled-function-p func) - (system:compiled-function-name func)) - ('t func)))) + ((and (consp func) (eq (car func) 'LAMBDA-BLOCK)) + (cadr func)) + ((compiled-function-p func) + (system:compiled-function-name func)) + ('t func)))) #+:cmulisp (defun BPINAME (func) (when (functionp func) @@ -1971,11 +1901,11 @@ can be restored. (defun LISTOFFREES (bpi) (if (compiled-function-p bpi) (let ((end (- (lucid::procedure-length bpi) 2))) - (do ((i 3 (1+ i)) - (ans nil)) - ((> i end) ans) - (let ((locexp (svref bpi i))) - (if (symbolp locexp) (push locexp ans))))))) + (do ((i 3 (1+ i)) + (ans nil)) + ((> i end) ans) + (let ((locexp (svref bpi i))) + (if (symbolp locexp) (push locexp ans))))))) #-Lucid (defun LISTOFFREES (bpi) @@ -1986,11 +1916,11 @@ can be restored. #+(and :Lucid (not :ibm/370)) (defun OBEY (S) (system::run-aix-program (make-absolute-filename "/lib/obey") - :arguments (list "-c" S))) + :arguments (list "-c" S))) #+:cmulisp (defun OBEY (S) (ext:run-program (make-absolute-filename "/lib/obey") - (list "-c" S) :input t :output t)) + (list "-c" S) :input t :output t)) #+(OR IBCL KCL :CCL) (defun OBEY (S) (SYSTEM S)) @@ -2007,9 +1937,3 @@ can be restored. (defun MAKE-BVEC (n) (make-array (list n) :element-type 'bit :initial-element 0)) -@ -\eject -\begin{thebibliography}{99} -\bibitem{1} nothing -\end{thebibliography} -\end{document} |