aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2013-06-17 05:27:37 +0000
committerdos-reis <gdr@axiomatics.org>2013-06-17 05:27:37 +0000
commit6d045b14a250fecdf63018c3bb55f36a8539194d (patch)
tree2498dde9d23d49014987e84f2e9e77de89162420
parentc773f40fecf4755ea2a45e4e79ee37e0a1b45d54 (diff)
downloadopen-axiom-6d045b14a250fecdf63018c3bb55f36a8539194d.tar.gz
Consolidate parsers in one pamphlet.
-rw-r--r--Makefile.in73
-rw-r--r--aclocal.m4170
-rwxr-xr-xconfigure7
-rw-r--r--src/ChangeLog8
-rw-r--r--src/algebra/Makefile.am10
-rw-r--r--src/algebra/parsers.spad.pamphlet (renamed from src/algebra/spad-parser.spad)93
-rw-r--r--src/algebra/script-parser.spad50
-rw-r--r--src/algebra/string.spad.pamphlet7
-rw-r--r--src/interp/compiler.boot27
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 \
diff --git a/aclocal.m4 b/aclocal.m4
index e71ce8f3..670922a6 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -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
diff --git a/configure b/configure
index 0aa2e420..90dfe610 100755
--- a/configure
+++ b/configure
@@ -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'