								-*-text-*-

This directory contains the Sizzle interpreter library.

If you're interested in how this interpreter works, start reading the
embedding manual in the ../doc/ directory.  Then, when looking at the
code, start reading in `node.h', which defines the basic data
structures.  `node.c' implements those data types as well as
initialization and finalization of the library.

The garbage collector is located in the files gc.c and gc.h

`eval.[ch]' holds the evaluator, interesting is the (rather long for
performance reasons) function zzz_evaluate().  

The primitive syntactic forms are implemented in the file syntax.c,
but most of the code which does the work is in the function
zzz_evaluate(), where it is executed inline.

The `*port.[ch]' files implement various port types: `fport.[ch]' for
the stdio (FILE *) based ports, `fdport.[ch]' for file descriptor
based ports and `sport.[ch]' for string ports.

`alloc.[ch]' holds a wrapper for malloc() and code, with (very simple)
memory leak detection support code.

`libsizzle.h' is the file which is intended to be included into
embedding applications.  It includes the header files necessary for
interfacing with the C API functions.

Most other files define extended data types and primitive procedures,
such as `regexp.[ch]' for Posix regular expressions or `net.[ch]' for
network primitives.

Happy hacking!

  'mgrabmue

