[Push] push2.lisp alpha

Lee Spector lspector at hampshire.edu
Wed Sep 17 11:02:19 EDT 2003


Chris Perry and I are in the final stages of the development of a refined,
improved Push language specification, along with standards-conforming Push
interpreters in C and in Lisp. When we're done we'll post a description of
the refined language (called Push2 since all of my more imaginative names
were deemed too silly :-), along with source code for the interpreter in C
and in Lisp, and a version of the C-based interpreter compiled as a plugin
for the breve simulation system.

The most significant changes between Push as specified in previous
publications and Push2 are:

- The "type" type has been dropped, along with all of the associated
instruction overloading mechanisms. Instruction names now include
associated type names (like INTEGER.+, FLOAT.+, etc.). The dropped
mechanisms were deemed to have little utility and high runtime costs (and
some amount of unnecessary conceptual clutter).

- A cross-implementation configuration and testing mechanism has been
added. This allows one to provide a configuration file to the interpreter
specifying the values of all interpreter parameters (such as
MAX-POINTS-IN-PROGRAM) and also which types and instructions are "turned
on." The testing mechanism produces an output file (a dump of all stacks)
from a configuration file, a program file, and an input file. We are using
this to compare our C and Lisp implementations and to ensure that both are
implementing the same language.

Several other minor changes have also been made, cleaning up the standard
instruction set, etc.

We believe that our implementation work is about 95% complete and we've
done some initial testing -- for example, our factorial tests run correctly
on both implementations. We are hoping to complete the work and post the
results in the next month or two.

In the meantime, in case anyone is sufficiently interested, I've posted my
working files for the Lisp implementation and a couple of tests at
http://hampshire.edu/lspector/temp/push2/. This should be considered alpha
code -- it's not yet extensively tested and the documentation is minimal.
But if you have the energy to try it and have any comments I'd love to
receive them.

Thanks,

 -Lee
--
Lee Spector
Dean, School of Cognitive Science
Associate Professor of Computer Science    lspector at hampshire.edu
Cognitive Science, Hampshire College       http://hampshire.edu/lspector/
Amherst, MA 01002                          413-559-5352, Fax: 413-559-5438




More information about the Push mailing list