diff options
Diffstat (limited to 'src/interp')
-rw-r--r-- | src/interp/ChangeLog | 14 | ||||
-rw-r--r-- | src/interp/Makefile.in | 10 | ||||
-rw-r--r-- | src/interp/Makefile.pamphlet | 10 | ||||
-rw-r--r-- | src/interp/parini.boot.pamphlet | 206 | ||||
-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.lisp | 5 | ||||
-rw-r--r-- | src/interp/vmlisp.lisp.pamphlet | 3 |
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))) |