Compiling:
---------

This software has been tested to compile on Linux operating system
with GCC 3.2.3.  The software utilizes a few routines from the Star
Link Astronomy library.  The software can be compiled on Linux with the
command

	gmake check

Use "gmake allclean" to clean up any previous builds (.o, .a and
executable binary files).

You might need to set the CCPATH, CC and CCINCL variables in the
makefile to use the right compiler.

Finally issue the command:

	cp exit.dat ~/.exit.dat

The functions used from the StarLink Astronomy Library are in the
directory "sla" and the class used for the extended numbers which
holds the value and associated random error is in the directory
"emath".  The mathematical operators and other mathematical functions
for the extended numbers are overloaded here.

The lexical analyzer uses the GNU Readline library for commandline
editing features.

Tests:
-----

The "gmake check" command will build and check the interpretor (use
"gmake fussy" if you only want to build it).

A test script, with the test programs and their expected outputs are
in the test directory.  Simple tests can be run on fussy by running
the script "fussytest" from the test directory (the only argument to
this script is the name of the binary executable which needs to be
tested).  If the tests pass, the output of the script should look
like:

Testing fussy ...
Unit test (fussy test.general quit 2> /dev/null ) | diff - test.general.out...         [PASSED]
Unit test (fussy test.func quit 2> /dev/null ) | diff - test.func.out...               [PASSED]
Unit test (fussy test.builtins quit 2> /dev/null ) | diff - test.builtins.out...       [PASSED]
Unit test (fussy test.subtree.builtins quit 2> /dev/null ) | diff - test.subtree.builtins.out...[PASSED]
Unit test (fussy test.pow quit 2> /dev/null ) | diff - test.pow.out...                 [PASSED]
Unit test (fussy test.factorial quit 2> /dev/null ) | diff - test.factorial.out...     [PASSED]
Unit test (fussy test.laguerre quit 2> /dev/null ) | diff - test.laguerre.out...       [PASSED]


If the tests pass, that's it!  Usher yourself into the fussy world.


Files:
-----

AngFmt.cc,AngFmt.h:     Class to print the numbers in angular or time
                        formats.

BitField.cc,BitField.h: Implements a BitField type and methods to
                        manipulate bits.
                        
calc.h
calc_lex_bison.h:       The header file for various forward declarations.

calcinit.cc,calcinit.h: Functions to initialize the VM

defns.h:                Various type definitions.

emath:                  Directory for extended number format and
                        related overloaded math functions and operators.

ErrorObj.cc,ErrorObj.h: Object thrown to report errors via the
                        ErrorObj exception.
ExitMsg.cc:             Function to print a message if an
                        inappropriate exit is attempted (e.g. via a
                        Ctrl-C from the user).
                        
func.cc,func.h:         Functions for jumping the VM execution to a
                        sub-program. 

fussy.cc:               The main program which drives the VM.

fussy.l:                The fussy lexical analyzer Flex code.

fussy.working.y:        The fussy parser Bison code.

IDResource.cc,          The global resource to manage the
IDResource.h:           allocation and releasing the unique IDs of
                        fussy variables.
                        
namespace.h:            Defines the namespaces used from the Standard
                        C++ libraries.

prtVM.cc:               Functions to print the symbol tables and the
                        complied VM code from the memory.

sla:                    Has the required routines from the StarLink
                        Astronomy Library.

tables.h,               Implements the functions to manipulate the
tables.list.cc:         various symbol tables.
                        
test:                   Scripts to test the fussy interpretor.
                        
typeMake,vmMake:        Scripts to automatically make tables of VM
                        types and VM functions to be included in the
                        prtVM code.

units.h:                Enumerations for various physical units
                        definitions. 
                        
vcode.list.cc:          The code for various function calls for the
                        execution of the VM code.
                        
yyerror.c:              Functions used by the lexical analyzer to
                        report lexical errors.