aboutsummaryrefslogtreecommitdiff
path: root/src/interp
diff options
context:
space:
mode:
Diffstat (limited to 'src/interp')
-rw-r--r--src/interp/ChangeLog14
-rw-r--r--src/interp/Makefile.in10
-rw-r--r--src/interp/Makefile.pamphlet10
-rw-r--r--src/interp/parini.boot.pamphlet206
-rw-r--r--src/interp/pile.boot (renamed from src/interp/pile.boot.pamphlet)23
-rw-r--r--src/interp/scan.boot (renamed from src/interp/scan.boot.pamphlet)283
-rw-r--r--src/interp/sys-macros.lisp5
-rw-r--r--src/interp/vmlisp.lisp.pamphlet3
8 files changed, 252 insertions, 302 deletions
diff --git a/src/interp/ChangeLog b/src/interp/ChangeLog
index cdadb04c..2669f2de 100644
--- a/src/interp/ChangeLog
+++ b/src/interp/ChangeLog
@@ -4,6 +4,20 @@
2007-09-12 Gabriel Dos Reis <gdr@cs.tamu.edu>
+ * Makefile.pamphlet (scan.$(FASLEXT)): New rule.
+ (pile.$(FASLEXT)): Likewise.
+ (INOBJS): Don't include parini.$(FASLEXT).
+ * pile.boot: New. Import scan.
+ * pile.boot.pamphlet: Move content to pile.boot. Remove.
+ * vmlisp.lisp.pamphlet (|startsId?|): Move to sys-macros.lisp.
+ * parini.boot.pamphlet: Move content to scan.boot. Remove.
+ * scan.boot: New. Import bits, dq, incl. Add workaround for GCL
+ bug.
+ ($SPACE): Rename from SPACE to avoid conflict with CL name.
+ * scan.boot.pamphlet: Move content to scan.boot. Remove.
+
+2007-09-12 Gabriel Dos Reis <gdr@cs.tamu.edu>
+
* posit.boot: New. Import sys-macros, astr.
(tokConstruct): Move from ptrees.boot.pamphlet.
(tokType): Likewise.
diff --git a/src/interp/Makefile.in b/src/interp/Makefile.in
index e66865dc..948d730b 100644
--- a/src/interp/Makefile.in
+++ b/src/interp/Makefile.in
@@ -137,7 +137,7 @@ AXIOMsys_boot_sources = astr.boot alql.boot buildom.boot cattable.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) parini.$(FASLEXT) \
+INOBJS= varini.$(FASLEXT) \
setvart.$(FASLEXT) intint.$(FASLEXT) \
xrun.$(FASLEXT) interop.$(FASLEXT) \
patches.$(FASLEXT)
@@ -480,7 +480,13 @@ $(AUTO)/%.$(FASLEXT): %.$(FASLEXT)
$(INSTALL) $< $@
-incl.$(FASLEXT): incl.clisp cstream.$(FASLEXT) unlisp.$(FASLEXT)
+pile.$(FASLEXT): pile.clisp scan.$(FASLEXT)
+ $(BOOTSYS) -- --compile --output=$@ --load-directory=. $<
+
+scan.$(FASLEXT): scan.clisp incl.$(FASLEXT) bits.$(FASLEXT) dq.$(FASLEXT)
+ $(BOOTSYS) -- --compile --output=$@ --load-directory=. $<
+
+incl.$(FASLEXT): incl.clisp cstream.$(FASLEXT) cformat.$(FASLEXT)
$(BOOTSYS) -- --compile --output=$@ --load-directory=. $<
cformat.$(FASLEXT): cformat.clisp unlisp.$(FASLEXT) posit.$(FASLEXT)
diff --git a/src/interp/Makefile.pamphlet b/src/interp/Makefile.pamphlet
index 2f3825f1..9861ca75 100644
--- a/src/interp/Makefile.pamphlet
+++ b/src/interp/Makefile.pamphlet
@@ -418,7 +418,7 @@ for various parts of the system. The {\bf patches.lisp} \cite{5}
file contains last-minute changes to various functions and
constants.
<<environment>>=
-INOBJS= varini.$(FASLEXT) parini.$(FASLEXT) \
+INOBJS= varini.$(FASLEXT) \
setvart.$(FASLEXT) intint.$(FASLEXT) \
xrun.$(FASLEXT) interop.$(FASLEXT) \
patches.$(FASLEXT)
@@ -1975,7 +1975,13 @@ $(AUTO)/%.$(FASLEXT): %.$(FASLEXT)
$(INSTALL) $< $@
-incl.$(FASLEXT): incl.clisp cstream.$(FASLEXT) unlisp.$(FASLEXT)
+pile.$(FASLEXT): pile.clisp scan.$(FASLEXT)
+ $(BOOTSYS) -- --compile --output=$@ --load-directory=. $<
+
+scan.$(FASLEXT): scan.clisp incl.$(FASLEXT) bits.$(FASLEXT) dq.$(FASLEXT)
+ $(BOOTSYS) -- --compile --output=$@ --load-directory=. $<
+
+incl.$(FASLEXT): incl.clisp cstream.$(FASLEXT) cformat.$(FASLEXT)
$(BOOTSYS) -- --compile --output=$@ --load-directory=. $<
cformat.$(FASLEXT): cformat.clisp unlisp.$(FASLEXT) posit.$(FASLEXT)
diff --git a/src/interp/parini.boot.pamphlet b/src/interp/parini.boot.pamphlet
deleted file mode 100644
index 06ea15c1..00000000
--- a/src/interp/parini.boot.pamphlet
+++ /dev/null
@@ -1,206 +0,0 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/interp parini.boot}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\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>>
-
-)package "BOOT"
-
-SPACE := QENUM('" ", 0)
-ESCAPE := QENUM('"__ ", 0)
-STRING_CHAR := QENUM('"_" ", 0)
-PLUSCOMMENT := QENUM('"+ ", 0)
-MINUSCOMMENT:= QENUM('"- ", 0)
-RADIX_CHAR := QENUM('"r ", 0)
-DOT := QENUM('". ", 0)
-EXPONENT1 := QENUM('"E ", 0)
-EXPONENT2 := QENUM('"e ", 0)
-CLOSEPAREN := QENUM('") ", 0)
-CLOSEANGLE := QENUM('"> ", 0)
-QUESTION := QENUM('"? ",0)
-
-scanKeyWords := [ _
- ['"add", "ADD" ],_
- ['"and", "AND" ],_
- ['"break", "BREAK" ],_
- ['"by", "BY" ],_
- ['"case", "CASE" ],_
- ['"default", "DEFAULT" ],_
- ['"define", "DEFN" ],_
- ['"do", "DO"],_
- ['"else", "ELSE" ],_
- ['"exit", "EXIT" ],_
- ['"export","EXPORT" ],_
- ['"for", "FOR" ],_
- ['"free", "FREE" ],_
- ['"from", "FROM" ],_
- ['"has", "HAS" ],_
- ['"if", "IF" ],_
- ['"import", "IMPORT" ],_
- ['"in", "IN" ],_
- ['"inline", "INLINE" ],_
- ['"is", "IS" ],_
- ['"isnt", "ISNT" ],_
- ['"iterate", "ITERATE"],_
- ['"local", "local" ],_
- ['"macro", "MACRO" ],_
- ['"mod", "MOD" ],_
- ['"or", "OR" ],_
- ['"pretend","PRETEND" ],_
- ['"quo","QUO" ],_
- ['"rem","REM" ],_
- ['"repeat","REPEAT" ],_
- ['"return","RETURN" ],_
- ['"rule","RULE" ],_
- ['"then","THEN" ],_
- ['"where","WHERE" ],_
- ['"while","WHILE" ],_
- ['"with","WITH" ],_
- ['"|","BAR"],_
- ['".","DOT" ],_
- ['"::","COERCE" ],_
- ['":","COLON" ],_
- ['":-","COLONDASH" ],_
- ['"@","AT" ],_
- ['"@@","ATAT" ],_
- ['",","COMMA" ],_
- ['";","SEMICOLON" ],_
- ['"**","POWER" ],_
- ['"*","TIMES" ],_
- ['"+","PLUS" ],_
- ['"-","MINUS" ],_
- ['"<","LT" ],_
- ['">","GT" ],_
- ['"<=","LE" ],_
- ['">=","GE" ],_
- ['"=", "EQUAL"],_
- ['"~=","NOTEQUAL" ],_
- ['"~","~" ],_
- ['"^","CARAT" ],_
- ['"..","SEG" ],_
- ['"#","#" ],_
- ['"&","AMPERSAND" ],_
- ['"$","$" ],_
- ['"/","SLASH" ],_
- ['"\","BACKSLASH" ],_
- ['"//","SLASHSLASH" ],_
- ['"\\","BACKSLASHBACKSLASH" ],_
- ['"/\","SLASHBACKSLASH" ],_
- ['"\/","BACKSLASHSLASH" ],_
- ['"=>","EXIT" ],_
- ['":=","BECOMES" ],_
- ['"==","DEF" ],_
- ['"==>","MDEF" ],_
- ['"->","ARROW" ],_
- ['"<-","LARROW" ],_
- ['"+->","GIVES" ],_
- ['"(","(" ],_
- ['")",")" ],_
- ['"(|","(|" ],_
- ['"|)","|)" ],_
- ['"[","[" ],_
- ['"]","]" ],_
- ['"[__]","[]" ],_
- ['"{","{" ],_
- ['"}","}" ],_
- ['"{__}","{}" ],_
- ['"[|","[|" ],_
- ['"|]","|]" ],_
- ['"[|__|]","[||]" ],_
- ['"{|","{|" ],_
- ['"|}","|}" ],_
- ['"{|__|}","{||}" ],_
- ['"<<","OANGLE" ],_
- ['">>","CANGLE" ],_
- ['"'", "'" ],_
- ['"`", "BACKQUOTE" ]_
- ]
-
-scanKeyTable:=scanKeyTableCons()
-
-scanDict:=scanDictCons()
-
-scanPun:=scanPunCons()
-
---for i in ["COLON","MINUS"] repeat
--- MAKEPROP(i,'PREGENERIC,'TRUE)
-
-for i in [ _
- ["EQUAL" ,"="], _
- ["TIMES" ,"*"], _
- ["HAS" ,"has"], _
- ["CASE" ,"case"], _
- ["REM" ,"rem"], _
- ["MOD" ,"mod"], _
- ["QUO" ,"quo"], _
- ["SLASH" ,"/"], _
- ["BACKSLASH","\"], _
- ["SLASHSLASH" ,"//"], _
- ["BACKSLASHBACKSLASH","\\"], _
- ["SLASHBACKSLASH" ,"/\"], _
- ["BACKSLASHSLASH","\/"], _
- ["POWER" ,"**"], _
- ["CARAT" ,"^"], _
- ["PLUS" ,"+"], _
- ["MINUS" ,"-"], _
- ["LT" ,"<"], _
- ["GT" ,">"], _
- ["OANGLE" ,"<<"], _
- ["CANGLE" ,">>"], _
- ["LE" ,"<="], _
- ["GE" ,">="], _
- ["NOTEQUAL" ,"~="], _
- ["BY" ,"by"], _
- ["ARROW" ,"->"], _
- ["LARROW" ,"<-"], _
- ["BAR" ,"|"], _
- ["SEG" ,".."] _
- ] repeat MAKEPROP(CAR i,'INFGENERIC,CADR i)
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/interp/pile.boot.pamphlet b/src/interp/pile.boot
index 2b457fdb..9fc3f0c7 100644
--- a/src/interp/pile.boot.pamphlet
+++ b/src/interp/pile.boot
@@ -1,16 +1,3 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/interp pile.boot}
-\author{The Axiom Team}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{License}
-<<license>>=
-- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
-- All rights reserved.
--
@@ -42,9 +29,7 @@
-- 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 '"scan"
)package "BOOT"
@@ -168,9 +153,3 @@ enPile x==
x, _
dqUnit tokConstruct("key","BACKTAB",lastTokPosn x)]
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/interp/scan.boot.pamphlet b/src/interp/scan.boot
index cd117672..5fd0caa6 100644
--- a/src/interp/scan.boot.pamphlet
+++ b/src/interp/scan.boot
@@ -1,18 +1,7 @@
-\documentclass{article}
-\usepackage{axiom}
-\begin{document}
-\title{\$SPAD/src/interp scan.boot}
-\author{The Axiom Team}
-\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,12 +31,222 @@
-- 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 is a horrible hack to work around a horrible bug in GCL
+-- as reported here:
+-- http://lists.gnu.org/archive/html/gcl-devel/2007-08/msg00004.html
+--
+)if %hasFeature KEYWORD::GCL
+)package "VMLISP"
+)package "AxiomCore"
+)endif
+
+import '"bits"
+import '"dq"
+import '"incl"
)package "BOOT"
+--% Separators
+
+$SPACE := QENUM('" ", 0)
+ESCAPE := QENUM('"__ ", 0)
+STRING_CHAR := QENUM('"_" ", 0)
+PLUSCOMMENT := QENUM('"+ ", 0)
+MINUSCOMMENT:= QENUM('"- ", 0)
+RADIX_CHAR := QENUM('"r ", 0)
+DOT := QENUM('". ", 0)
+EXPONENT1 := QENUM('"E ", 0)
+EXPONENT2 := QENUM('"e ", 0)
+CLOSEPAREN := QENUM('") ", 0)
+CLOSEANGLE := QENUM('"> ", 0)
+QUESTION := QENUM('"? ",0)
+
+
+--% Keywords
+
+scanKeyWords := [ _
+ ['"add", "ADD" ],_
+ ['"and", "AND" ],_
+ ['"break", "BREAK" ],_
+ ['"by", "BY" ],_
+ ['"case", "CASE" ],_
+ ['"default", "DEFAULT" ],_
+ ['"define", "DEFN" ],_
+ ['"do", "DO"],_
+ ['"else", "ELSE" ],_
+ ['"exit", "EXIT" ],_
+ ['"export","EXPORT" ],_
+ ['"for", "FOR" ],_
+ ['"free", "FREE" ],_
+ ['"from", "FROM" ],_
+ ['"has", "HAS" ],_
+ ['"if", "IF" ],_
+ ['"import", "IMPORT" ],_
+ ['"in", "IN" ],_
+ ['"inline", "INLINE" ],_
+ ['"is", "IS" ],_
+ ['"isnt", "ISNT" ],_
+ ['"iterate", "ITERATE"],_
+ ['"local", "local" ],_
+ ['"macro", "MACRO" ],_
+ ['"mod", "MOD" ],_
+ ['"or", "OR" ],_
+ ['"pretend","PRETEND" ],_
+ ['"quo","QUO" ],_
+ ['"rem","REM" ],_
+ ['"repeat","REPEAT" ],_
+ ['"return","RETURN" ],_
+ ['"rule","RULE" ],_
+ ['"then","THEN" ],_
+ ['"where","WHERE" ],_
+ ['"while","WHILE" ],_
+ ['"with","WITH" ],_
+ ['"|","BAR"],_
+ ['".","DOT" ],_
+ ['"::","COERCE" ],_
+ ['":","COLON" ],_
+ ['":-","COLONDASH" ],_
+ ['"@","AT" ],_
+ ['"@@","ATAT" ],_
+ ['",","COMMA" ],_
+ ['";","SEMICOLON" ],_
+ ['"**","POWER" ],_
+ ['"*","TIMES" ],_
+ ['"+","PLUS" ],_
+ ['"-","MINUS" ],_
+ ['"<","LT" ],_
+ ['">","GT" ],_
+ ['"<=","LE" ],_
+ ['">=","GE" ],_
+ ['"=", "EQUAL"],_
+ ['"~=","NOTEQUAL" ],_
+ ['"~","~" ],_
+ ['"^","CARAT" ],_
+ ['"..","SEG" ],_
+ ['"#","#" ],_
+ ['"&","AMPERSAND" ],_
+ ['"$","$" ],_
+ ['"/","SLASH" ],_
+ ['"\","BACKSLASH" ],_
+ ['"//","SLASHSLASH" ],_
+ ['"\\","BACKSLASHBACKSLASH" ],_
+ ['"/\","SLASHBACKSLASH" ],_
+ ['"\/","BACKSLASHSLASH" ],_
+ ['"=>","EXIT" ],_
+ ['":=","BECOMES" ],_
+ ['"==","DEF" ],_
+ ['"==>","MDEF" ],_
+ ['"->","ARROW" ],_
+ ['"<-","LARROW" ],_
+ ['"+->","GIVES" ],_
+ ['"(","(" ],_
+ ['")",")" ],_
+ ['"(|","(|" ],_
+ ['"|)","|)" ],_
+ ['"[","[" ],_
+ ['"]","]" ],_
+ ['"[__]","[]" ],_
+ ['"{","{" ],_
+ ['"}","}" ],_
+ ['"{__}","{}" ],_
+ ['"[|","[|" ],_
+ ['"|]","|]" ],_
+ ['"[|__|]","[||]" ],_
+ ['"{|","{|" ],_
+ ['"|}","|}" ],_
+ ['"{|__|}","{||}" ],_
+ ['"<<","OANGLE" ],_
+ ['">>","CANGLE" ],_
+ ['"'", "'" ],_
+ ['"`", "BACKQUOTE" ]_
+ ]
+
+
+scanKeyTableCons()==
+ KeyTable:=MAKE_-HASHTABLE("CVEC",true)
+ for st in scanKeyWords repeat
+ HPUT(KeyTable,CAR st,CADR st)
+ KeyTable
+
+scanKeyTable:=scanKeyTableCons()
+
+
+scanInsert(s,d) ==
+ l := #s
+ h := QENUM(s,0)
+ u := ELT(d,h)
+ n := #u
+ k:=0
+ while l <= #(ELT(u,k)) repeat
+ k:=k+1
+ v := MAKE_-VEC(n+1)
+ for i in 0..k-1 repeat VEC_-SETELT(v,i,ELT(u,i))
+ VEC_-SETELT(v,k,s)
+ for i in k..n-1 repeat VEC_-SETELT(v,i+1,ELT(u,i))
+ VEC_-SETELT(d,h,v)
+ s
+
+scanDictCons()==
+ l:= HKEYS scanKeyTable
+ d :=
+ a:=MAKE_-VEC(256)
+ b:=MAKE_-VEC(1)
+ VEC_-SETELT(b,0,MAKE_-CVEC 0)
+ for i in 0..255 repeat VEC_-SETELT(a,i,b)
+ a
+ for s in l repeat scanInsert(s,d)
+ d
+
+scanDict:=scanDictCons()
+
+
+scanPunCons()==
+ listing := HKEYS scanKeyTable
+ a:=MAKE_-BVEC 256
+-- SETSIZE(a,256)
+ for i in 0..255 repeat BVEC_-SETELT(a,i,0)
+ for k in listing repeat
+ if not startsId? k.0
+ then BVEC_-SETELT(a,QENUM(k,0),1)
+ a
+
+scanPun:=scanPunCons()
+
+--for i in ["COLON","MINUS"] repeat
+-- MAKEPROP(i,'PREGENERIC,'TRUE)
+
+for i in [ _
+ ["EQUAL" ,"="], _
+ ["TIMES" ,"*"], _
+ ["HAS" ,"has"], _
+ ["CASE" ,"case"], _
+ ["REM" ,"rem"], _
+ ["MOD" ,"mod"], _
+ ["QUO" ,"quo"], _
+ ["SLASH" ,"/"], _
+ ["BACKSLASH","\"], _
+ ["SLASHSLASH" ,"//"], _
+ ["BACKSLASHBACKSLASH","\\"], _
+ ["SLASHBACKSLASH" ,"/\"], _
+ ["BACKSLASHSLASH","\/"], _
+ ["POWER" ,"**"], _
+ ["CARAT" ,"^"], _
+ ["PLUS" ,"+"], _
+ ["MINUS" ,"-"], _
+ ["LT" ,"<"], _
+ ["GT" ,">"], _
+ ["OANGLE" ,"<<"], _
+ ["CANGLE" ,">>"], _
+ ["LE" ,"<="], _
+ ["GE" ,">="], _
+ ["NOTEQUAL" ,"~="], _
+ ["BY" ,"by"], _
+ ["ARROW" ,"->"], _
+ ["LARROW" ,"<-"], _
+ ["BAR" ,"|"], _
+ ["SEG" ,".."] _
+ ] repeat MAKEPROP(CAR i,'INFGENERIC,CADR i)
+
-- Scanner
-- lineoftoks bites off a token-dq from a line-stream
@@ -122,7 +321,7 @@ scanToken () ==
lfid '"?"
punctuation? c => scanPunct ()
startsId? ch => scanWord (false)
- c=SPACE =>
+ c=$SPACE =>
scanSpace ()
[]
c = STRING_CHAR => scanString ()
@@ -485,21 +684,6 @@ keyword st == HGET(scanKeyTable,st)
keyword? st == not null HGET(scanKeyTable,st)
-scanInsert(s,d) ==
- l := #s
- h := QENUM(s,0)
- u := ELT(d,h)
- n := #u
- k:=0
- while l <= #(ELT(u,k)) repeat
- k:=k+1
- v := MAKE_-VEC(n+1)
- for i in 0..k-1 repeat VEC_-SETELT(v,i,ELT(u,i))
- VEC_-SETELT(v,k,s)
- for i in k..n-1 repeat VEC_-SETELT(v,i+1,ELT(u,i))
- VEC_-SETELT(d,h,v)
- s
-
subMatch(l,i)==substringMatch(l,scanDict,i)
substringMatch (l,d,i)==
@@ -525,41 +709,6 @@ substringMatch (l,d,i)==
s1
-scanKeyTableCons()==
- KeyTable:=MAKE_-HASHTABLE("CVEC",true)
- for st in scanKeyWords repeat
- HPUT(KeyTable,CAR st,CADR st)
- KeyTable
-
-scanDictCons()==
- l:= HKEYS scanKeyTable
- d :=
- a:=MAKE_-VEC(256)
- b:=MAKE_-VEC(1)
- VEC_-SETELT(b,0,MAKE_-CVEC 0)
- for i in 0..255 repeat VEC_-SETELT(a,i,b)
- a
- for s in l repeat scanInsert(s,d)
- d
-
-
-scanPunCons()==
- listing := HKEYS scanKeyTable
- a:=MAKE_-BVEC 256
--- SETSIZE(a,256)
- for i in 0..255 repeat BVEC_-SETELT(a,i,0)
- for k in listing repeat
- if not startsId? k.0
- then BVEC_-SETELT(a,QENUM(k,0),1)
- a
-
-
punctuation? c== scanPun.c=1
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}
diff --git a/src/interp/sys-macros.lisp b/src/interp/sys-macros.lisp
index d198e8f0..903f04e3 100644
--- a/src/interp/sys-macros.lisp
+++ b/src/interp/sys-macros.lisp
@@ -59,6 +59,11 @@
(character (cadr arg)))
(t `(character ,arg))))
+
+(defmacro |startsId?| (x)
+ `(or (alpha-char-p ,x)
+ (member ,x '(#\? #\% #\!) :test #'char=)))
+
;;
;; -*- BigFloat Constructors -*-
;;
diff --git a/src/interp/vmlisp.lisp.pamphlet b/src/interp/vmlisp.lisp.pamphlet
index 4bc1b1ac..0497f8c9 100644
--- a/src/interp/vmlisp.lisp.pamphlet
+++ b/src/interp/vmlisp.lisp.pamphlet
@@ -721,9 +721,6 @@ and works properly.
(defmacro smintp (n)
`(fixp ,n))
-(defmacro |startsId?| (x)
- `(or (alpha-char-p ,x) (member ,x '(#\? #\% #\!) :test #'char=)))
-
(defmacro stringlength (x)
`(length (the string ,x)))