interp - interpreter for embedded computers
This file is part of interp.
interp is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
interp is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with interp. If not, see <http://www.gnu.org/licenses/>.
OVERVIEW OF THIS PACKAGE:
interp is a portable programming language, a testing platform, and a
development framework. It is targeted for Linux and Unix-based systems, yet
remains adaptable for less powerful embedded systems that were never intended
to support an interactive programming language because all you need is a
serial port.
You can use interp interactively, write programs in it, or externally script
your interactive sessions (e.g. through files.) You can write extensions to
the language and add the missing bits you need.
This package contains all the source code for the interpreter. Instructions
for building it are below. The documentation area contains the language
reference manual, a pocket guide to the language, a tutorial, sample
programs, API documentation, man pages, and two porting examples that will
help you migrate this language to the embedded computer of your choice if
you so desire.
BUILD IT:
make
TEST IT:
make testit
See TESTING NOTE, below.
TESTING NOTE:
The test will seem to have failed at steps 08.03, 08.04, 11.05, 12.04, 18.01
and/or 26.03. This happens because some of the test results are installation
dependent memory addresses, or timings.
If your test "failures" are limited just to these test steps, look carefully
at the results presented in the difference listing by "make testit". The
results are arranged as pairs of lines:
the actual result
what the result should have been
More specifically, the first line is usually a number, and the second line
reads "<xx.yy>answer is n". If n is the same as the number on the line
above it, then your test actually passed.
What the difference listing is really telling you is your test results
differed from the "golden" test results.
OTHER WAYS TO BUILD IT:
make [ all ] -- for linux/unix environments
make noflags -- for JTAG emulator-based execution environments
make nocli -- for stand-alone environments (no OS)
make sin -- only build the minimalist version
(no outer interpreter directives, no macros, no CLI )
make I2 -- build experimental compiler version
DEVELOPER/MAINTAINER make commands:
To build over-and-over:
make clean { all | sin | nocli | noflags }
NOTE: "clean" must be followed by ONE of "all", "sin", "nocli" or "noflags".
To make the "perfect" test results file:
make golden
To generate the API documentation files:
make cleanapidocs apidocs
To generate a specific API document, e.g. interp.1:
rm DOC/API_DOCUMENTS/interp.1.gz
make apidocs
To make the tarball:
make tarball
To create the md5sum:
make md5sum
To check the tarball checksum:
make checkit
For compiler development:
Be sure to use "make testI2" and "make goldenI2" as needed.
FILES IN THIS DISTRIBUTION:
AUTHOR
CHANGES
DOC/*
LICENSE
Makefile
NOTES
README
TODO
golden_results.txt
goldenI2_results.txt
idefine.c
idefine.h
ierror_codes.h
iif.c
iif.h
ilib.c
ilib.h
ilowlevelio.c
ilowlevelio.h
imain.c
imain.h
imem.c
imem.h
interp.c
interp.h
interp_opcodes.c
interp_table.c
interpio.c
interpio.h
iportio.c
iportio.h
isin.c
istack.c
istack.h
itypes.h
main.c
test.int
testI2.int
wiff.int
Duane L. King, esq.
kingdl802@gmail.com