Introduction to Goofie
This is a pretty lame introduction to goofie, but it will have to
do for now. The goal of goofie is to capture as much of the
semantic information about a C++ file as possible and to allow its
use by another program. Unfortunately, goofie has very limited
semantic analysis capabilities so this amounts to recording
everything we can from the syntax analysis.
Goofie has two forms of output: a text dump of its symbol table
and a C++ source representation to rebuild this symbol table in
another application.
Compiling
There should be nothing difficult about compiling goofie except
that it has only ever been compiled on a BSD machine! The program
does use function templates so you'll need something that
corresponds to USL's template implementation (GNU C++ barfs on
this, I believe).
Running
To run goofie, use the Goofie shell script.
Goofie options file
Options are:
-D<sym> Passed to cpp.
-E Run only cpp.
-H Passed to cpp. For GNU CPP this prints the name
of each header file used.
-I<dir> Passed to cpp.
-U<sym> Passed to cpp.
-g Generate prompts for synchronizing with Deja Gnu.
-i <file> Add a '#include' with this file name to the output.
-p Print extra debugging info.
-s Print the symbol table.
-y Turn on yacc debugging output.
Using Goofie
You are welcome to use goofie anyway you like (for instance, just
use the symbol table code with the Roskind grammar. But if you
want to try using the persistent objects library here's the
procedure.
- Compile goofie.
- Build the meta-dossiers in the meta-dossier subdirectory.
Several files have compilation problems which must be fixed by
hand.
- Compile the i/o library in the om/c++api directory.
- Build an application using the library, see the
om/c++api/Test directory.
Problems, questions, complaints can be sent to:
mecklen@cs.utah.edu
Cheers,
Robert