To Install bisonc++ by hand instead of using the binary distribution perform
the following steps:

    0. Bisonc++ and its construction depends, in addition to the normally
        standard available system software on specific software and versions 
        which is documented in the file `required', in particular the Bobcat
        library. 

       (If you compile the bobcat library yourself, note that bisonc++ does
        not use the SSL, Milter and Xpointer classes; they may --as far as
        bisonc++ is concerned-- be left out of the library)

    1. To install bobcat icmake should be used, for which a top-level script
        (build) and support scripts in the ./icmake/ directory are
        available. Icmake is available on many architectures. 

    2. Inspect the values of the variables in the file INSTALL.im, in
        particular the #defines below COMPONENTS TO INSTALL. Modify
        these #defines when necessary.

    3. Inspect the path to icmake at the top of the `build' script. By default
        it is /usr/bin/icmake, but some installations use
        /usr/local/bin/icmake Adapt when necessary.

    4. Run 
            ./build program [strip]
       to compile bisonc++. The argument `strip' is optional and strips
       symbolic information from the final executable.

    5. If you installed Yodl then you can create the documentation:
            ./build man 
        builds the man-pages, and
            ./build manual
        builds the manual.

    6. Run (probably as root) 

            ./build install 'LOG:path' 'what' 'base'

        to install components of Bisonc++. 

        Here, 
            'LOG:path' is an optional item specifying the absolute or relative
                path of a log file to contain a log of all installed files (see
                also the next item). Using LOG:~/.bisoncpp usually works
                well. Do not put any blanks between LOG: and the path
                specification, or protect the LOG: specification by quotes.

            'what' specifies what you want to install.
                Specify:
                          x, to install all components,
                or specify a combination of:
                          a (additional documentation),
                          b (binary program),
                          d (standard documentation),
                          m (man-pages)
                          s (skeleton files)
                          u (user guide)
                E.g., use 
                    ./build install bs 'base'
                if you only want to be able to run bisonc++, and want it to be
                installed below 'base'. 

                When requesting non-existing elements (e.g., ./build install x
                was requested, but the man-pages weren't constructed) then
                these non-existing elements are silently ignored by the
                installation process.
    
            'base' is optional and specifies the base directory below which
                the requested files are installed. This base directory is
                prepended to the paths #defined in the INSTALL.im file. If
                'base' is not specified, then INSTALL.im's #defined paths are
                used as-is.

    7.  Uninstalling previously installed components of Bisonc++ is easy if a
        log path (LOG:...) was specified at the `./build install ...'
        command. In that case, run the command

            ./build uninstall logpath

        where 'logpath' specifies the location of the logfile that was
        written by ./build install.  Modified files and non-empty directories
        are not removed, but the logfile itself is removed following the
        uninstallation.

    8. Following the installation nothing in the directory tree which contains
        this file (i.e., INSTALL) is required for the proper functioning of
        bisonc++, so consider removing it. If you only want to remove
        left-over files from the build-process, just run

            ./build distclean

-----------------------------------------------------------------------------
NOTE: the parser-class header file generated by bisonc++ before version
     4.02.00 should have the prototypes of some of their private members
     modified.

    Simply replacing the `support functions for parse()' section shown at the
     end of the header file by the following lines should make your header
     file up-to-date again. Bisonc++ will not by itself rewrite the
     parser class headers to prevent undoing any modifications you may have
     implemented in parser-class header files:

    // support functions for parse():
        void executeAction(int ruleNr);
        void errorRecovery();
        int lookup(bool recovery);
        void nextToken();
        void print_();
        void exceptionHandler_(std::exception const &exc);

     The function print_) is defined by bisonc++, the default implementation
     of exceptionHandler_() can be added to the parser's internal header
     file:

inline void Parser::exceptionHandler_(std::exception const &exc)         
{
    throw;              // optionally re-implement to handle exceptions thrown
                        // by actions 
}
