diff options
author | dos-reis <gdr@axiomatics.org> | 2013-06-17 05:27:37 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2013-06-17 05:27:37 +0000 |
commit | 6d045b14a250fecdf63018c3bb55f36a8539194d (patch) | |
tree | 2498dde9d23d49014987e84f2e9e77de89162420 | |
parent | c773f40fecf4755ea2a45e4e79ee37e0a1b45d54 (diff) | |
download | open-axiom-6d045b14a250fecdf63018c3bb55f36a8539194d.tar.gz |
Consolidate parsers in one pamphlet.
-rw-r--r-- | Makefile.in | 73 | ||||
-rw-r--r-- | aclocal.m4 | 170 | ||||
-rwxr-xr-x | configure | 7 | ||||
-rw-r--r-- | src/ChangeLog | 8 | ||||
-rw-r--r-- | src/algebra/Makefile.am | 10 | ||||
-rw-r--r-- | src/algebra/parsers.spad.pamphlet (renamed from src/algebra/spad-parser.spad) | 93 | ||||
-rw-r--r-- | src/algebra/script-parser.spad | 50 | ||||
-rw-r--r-- | src/algebra/string.spad.pamphlet | 7 | ||||
-rw-r--r-- | src/interp/compiler.boot | 27 |
9 files changed, 256 insertions, 189 deletions
diff --git a/Makefile.in b/Makefile.in index a982d0ef..04c9e45b 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,7 +1,7 @@ -# Makefile.in generated by automake 1.13.1 from Makefile.am. +# Makefile.in generated by automake 1.13.2 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2012 Free Software Foundation, Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -57,23 +57,51 @@ # describe. This description is STILL IN WORK IN PROGRESS. Therefore # it is incorrekt, incomplet, and iNconSiStenT. VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ esac; \ - test $$am__dry = yes; \ - } + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -559,13 +587,12 @@ distclean-libtool: # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ @@ -1,6 +1,6 @@ -# generated automatically by aclocal 1.13.1 -*- Autoconf -*- +# generated automatically by aclocal 1.13.2 -*- Autoconf -*- -# Copyright (C) 1996-2012 Free Software Foundation, Inc. +# Copyright (C) 1996-2013 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -35,7 +35,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.13' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.13.1], [], +m4_if([$1], [1.13.2], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -51,7 +51,7 @@ m4_define([_AM_AUTOCONF_VERSION], []) # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.13.1])dnl +[AM_AUTOMAKE_VERSION([1.13.2])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) @@ -373,7 +373,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue + test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the @@ -925,76 +925,114 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar +# AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) -m4_if([$1], [v7], - [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], - [m4_case([$1], [ustar],, [pax],, - [m4_fatal([Unknown tar format])]) -AC_MSG_CHECKING([how to create a $1 tar archive]) -# Loop over all known methods to create a tar archive until one works. + +# We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' -_am_tools=${am_cv_prog_tar_$1-$_am_tools} -# Do not fold the above two line into one, because Tru64 sh and -# Solaris sh will not grok spaces in the rhs of '-'. -for _am_tool in $_am_tools -do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; - do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac - # tar/untar a dummy directory, and stop if the command works - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar <conftest.tar]) + AM_RUN_LOG([cat conftest.dir/file]) + grep GrepMe conftest.dir/file >/dev/null 2>&1 && break + fi + done rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar <conftest.tar]) - grep GrepMe conftest.dir/file >/dev/null 2>&1 && break - fi -done -rm -rf conftest.dir -AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) -AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR @@ -3606,6 +3606,10 @@ mkdir_p='$(MKDIR_P)' # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' + am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' @@ -3617,6 +3621,7 @@ am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + open_axiom_installdir=$libdir/open-axiom/$target/$PACKAGE_VERSION @@ -21661,7 +21666,7 @@ $as_echo X"$mf" | DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue + test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the diff --git a/src/ChangeLog b/src/ChangeLog index ea87f587..61d37b2b 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,11 @@ +2013-06-17 Gabriel Dos Reis <gdr@integrable-solutions.net> + + * algebra/parsers.spad.pamphlet: New. + * algebra/script-parser.spad: Move content to parsers.spad.pamphlet. + Remove. + * algebra/spad-parser.spad: Likewise. + + 2013-06-15 Gabriel Dos Reis <gdr@integrable-solutions.net> * interp/ht-util.boot (mkCurryFun): Import function name. diff --git a/src/algebra/Makefile.am b/src/algebra/Makefile.am index 9093e09f..642793f2 100644 --- a/src/algebra/Makefile.am +++ b/src/algebra/Makefile.am @@ -1368,7 +1368,6 @@ SPADFILES= \ $(OUTSRC)/sign.spad $(OUTSRC)/si.spad $(OUTSRC)/smith.spad \ $(OUTSRC)/solvedio.spad $(OUTSRC)/solvefor.spad $(OUTSRC)/solvelin.spad \ $(OUTSRC)/solverad.spad $(OUTSRC)/sortpak.spad $(OUTSRC)/space.spad \ - $(srcdir)/spad-parser.spad \ $(OUTSRC)/special.spad $(OUTSRC)/sregset.spad $(OUTSRC)/s.spad \ $(OUTSRC)/stream.spad $(OUTSRC)/string.spad $(OUTSRC)/sttaylor.spad \ $(OUTSRC)/sttf.spad $(OUTSRC)/sturm.spad $(OUTSRC)/suchthat.spad \ @@ -1384,7 +1383,7 @@ SPADFILES= \ $(OUTSRC)/utsode.spad \ $(OUTSRC)/variable.spad $(OUTSRC)/vector.spad $(OUTSRC)/view2D.spad \ $(OUTSRC)/view3D.spad $(OUTSRC)/viewDef.spad $(OUTSRC)/viewpack.spad \ - $(OUTSRC)/void.spad \ + $(OUTSRC)/void.spad $(OUTSRC)/parsers.spad \ $(OUTSRC)/weier.spad $(OUTSRC)/wtpol.spad \ $(OUTSRC)/xlpoly.spad $(OUTSRC)/xpoly.spad \ $(OUTSRC)/ystream.spad \ @@ -2477,13 +2476,6 @@ $(builddir)/%.tex: $(srcdir)/%.pamphlet $(oa_build_texdir)/diagrams.tex: $(oa_src_docdir)/diagrams.tex @cp -p $< $@ -SPADPRSR.NRLIB/code.$(FASLEXT): spad-parser.spad - $(COMPILE_SPAD) - -PARSER.NRLIB/code.$(FASLEXT): script-parser.spad - $(COMPILE_SPAD) - - $(INPUT)/TESTFR.input: $(srcdir)/fr.spad.pamphlet $(oa_hammer) --tangle='TEST FR' --output=$@ $< diff --git a/src/algebra/spad-parser.spad b/src/algebra/parsers.spad.pamphlet index 4aab0e7a..9416bde5 100644 --- a/src/algebra/spad-parser.spad +++ b/src/algebra/parsers.spad.pamphlet @@ -1,4 +1,71 @@ ---Copyright (C) 2007, Gabriel Dos Reis. +\documentclass{article} +\usepackage{open-axiom} + +\author{Gabriel Dos~Reis} + +\begin{document} + +\begin{abstract} +\end{abstract} + +\tableofcontents +\eject + +\section{Spad parser} + +<<package SPADPRSR SpadParser>>= +)abbrev package SPADPRSR SpadParser +++ Author: Gabriel Dos Reis +++ Date Created: October 10, 2006 +++ Date Last Updated: November 12, 2007 +++ Description: This package provides a simple Spad algebra parser. +++ Related Constructors: Syntax. +++ See Also: Syntax. +SpadParser(): Public == Private where + Public ==> with + parse: String -> List Syntax + ++ parse(f) parses the source file f (supposedly containing + ++ Spad algebras) and returns a List Syntax. The filename f + ++ is supposed to have the proper extension. Note that this + ++ function has the side effect of executing any system command + ++ contained in the file f, even if it might not be meaningful. + + Private ==> add + parse f == + parseSpadFile(f)$Lisp : List(Syntax) + +@ + + +\section{Script parser} + +<<package PARSER Parser>>= +)abbrev package PARSER Parser +++ Author: Gabriel Dos Reis +++ Date Created: December 02, 2007 +++ Date Last Updated: December 02, 2007 +++ Description: This package provides a simple Spad script parser. +++ Related Constructors: Syntax. +++ See Also: Syntax. +Parser(): Public == Private where + Public ==> with + getSyntaxFormsFromFile: String -> List Syntax + ++ getSyntaxFormsFromFile(f) parses the source file f (supposedly + ++ containing Spad scripts) and returns a List Syntax. The + ++ filename f is supposed to have the proper extension. Note that + ++ source location information is not part of result. + + Private ==> add + getSyntaxFormsFromFile f == + getParseFormsFromFile(f)$Lisp : List(Syntax) + +@ + + + +\section{License} +<<license>>= +--Copyright (C) 2007-2013, Gabriel Dos Reis. --All rights reserved. -- --Redistribution and use in source and binary forms, with or without @@ -28,24 +95,12 @@ --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>> -)abbrev package SPADPRSR SpadParser -++ Author: Gabriel Dos Reis -++ Date Created: October 10, 2006 -++ Date Last Updated: November 12, 2007 -++ Description: This package provides a simple Spad algebra parser. -++ Related Constructors: Syntax. -++ See Also: Syntax. -SpadParser(): Public == Private where - Public ==> with - parse: String -> List Syntax - ++ parse(f) parses the source file f (supposedly containing - ++ Spad algebras) and returns a List Syntax. The filename f - ++ is supposed to have the proper extension. Note that this - ++ function has the side effect of executing any system command - ++ contained in the file f, even if it might not be meaningful. +<<package SPADPRSR SpadParser>> +<<package PARSER Parser>> - Private ==> add - parse f == - parseSpadFile(f)$Lisp : List(Syntax) +@ diff --git a/src/algebra/script-parser.spad b/src/algebra/script-parser.spad deleted file mode 100644 index 404a7c00..00000000 --- a/src/algebra/script-parser.spad +++ /dev/null @@ -1,50 +0,0 @@ ---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. - - -)abbrev package PARSER Parser -++ Author: Gabriel Dos Reis -++ Date Created: December 02, 2007 -++ Date Last Updated: December 02, 2007 -++ Description: This package provides a simple Spad script parser. -++ Related Constructors: Syntax. -++ See Also: Syntax. -Parser(): Public == Private where - Public ==> with - getSyntaxFormsFromFile: String -> List Syntax - ++ getSyntaxFormsFromFile(f) parses the source file f (supposedly - ++ containing Spad scripts) and returns a List Syntax. The - ++ filename f is supposed to have the proper extension. Note that - ++ source location information is not part of result. - - Private ==> add - getSyntaxFormsFromFile f == - getParseFormsFromFile(f)$Lisp : List(Syntax) diff --git a/src/algebra/string.spad.pamphlet b/src/algebra/string.spad.pamphlet index 78bb6628..87f1f9e8 100644 --- a/src/algebra/string.spad.pamphlet +++ b/src/algebra/string.spad.pamphlet @@ -199,7 +199,7 @@ CharacterClass: Join(SetCategory, ConvertibleTo String, ++ \spadfunFrom{alphanumeric?}{Character} is true. == add - import %iinc: Integer -> Integer from Foreign Builtin + import %iinc: NonNegativeInteger -> PositiveInteger from Foreign Builtin import %idec: Integer -> Integer from Foreign Builtin Rep := IndexedBits(0) @@ -240,7 +240,10 @@ CharacterClass: Join(SetCategory, ConvertibleTo String, coerce(cl):OutputForm == (convert(cl)@String)::OutputForm -- Stuff to make a legal SetAggregate view - # a == (n := 0; for i in 0..%idec N | a.i repeat n := %iinc n; n) + # a == + n := 0 + for i in 0..%idec N | a.i repeat n := %iinc n + n empty():% == charClass [] brace():% == charClass [] diff --git a/src/interp/compiler.boot b/src/interp/compiler.boot index 1d2921eb..773aca8e 100644 --- a/src/interp/compiler.boot +++ b/src/interp/compiler.boot @@ -916,18 +916,13 @@ setqSingle(id,val,m,E) == $insideSetqSingleIfTrue: local:= true --used for comping domain forms within functions currentProplist:= getProplist(id,E) - m'':= - get(id,"mode",E) or getmode(id,E) or - (if m=$NoValueMode then $EmptyMode else m) - T:= - eval or return nil where - eval() == - T:= comp(val,m'',E) => T - get(id,"mode",E) = nil and m'' ~= (maxm'':=maximalSuperType m'') and - (T:=comp(val,maxm'',E)) => T - (T:= comp(val,$EmptyMode,E)) and getmode(T.mode,E) => - assignError(val,T.mode,id,m'') - T':= [x,m',e']:= coerce(T,m) or return nil + tm := get(id,"mode",E) or getmode(id,E) or + m=$NoValueMode => $EmptyMode + m + T := comp(val,tm,E) or return nil + if tm = $EmptyMode then -- newly defined variable. + T.env := addDomain(db,T.mode,T.env) + T' := [x,m',e'] := coerce(T,m) or return nil if $profileCompiler then not ident? id => nil key := @@ -953,12 +948,6 @@ setqSingle(id,val,m,E) == ["%LET",id,x] [form,m',e'] -assignError(val,m',form,m) == - val => - stackMessage('"CANNOT ASSIGN: %1b OF MODE: %2pb TO: %3b OF MODE: %4bp", - [val,m',form,m]) - stackMessage('"CANNOT ASSIGN: %1b TO: %2b OF MODE: %3pb",[val,form,m]) - setqMultiple(nameList,val,m,e) == val is ["CONS",:.] and m=$NoValueMode => setqMultipleExplicit(nameList,uncons val,m,e) @@ -1772,7 +1761,7 @@ tryCourtesyCoercion(T,m) == keyedSystemError("S2GE0016",['"coerce", '"function coerce called from the interpreter."]) if $useRepresentationHack then - T.rest.first := MSUBST("$",$Rep,second T) + T.mode := MSUBST("$",$Rep,second T) T' := coerceEasy(T,m) => T' T' := coerceSubset(T,m) => T' T' := coerceHard(T,m) => T' |