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.
  1. Compile goofie.
  2. Build the meta-dossiers in the meta-dossier subdirectory. Several files have compilation problems which must be fixed by hand.
  3. Compile the i/o library in the om/c++api directory.
  4. 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