The
compiler accepts several forms of source and can
potentially produce multiple files, each containing a different
representation of the program.
The most common use of the compiler is to take a source file and produce a platform-independent binary object ``aso'' file. The aso file contains types and documentation for exports, intermediate code, and other information. It is possible to produce C, Lisp or Foam files from an aso file. It is also possible to create a platform-specific object file or a symbol table file. The symbol table file contains human-readable type and documentation information in a form suitable for use by other programs. Any combination of these files can be produced in a single invocation of the compiler.
The generated C or Lisp code is designed to be used either by itself or as part of a larger software system. The generated code uses a judicious selection of macros for which sets of default definitions are provided.
The compiler has an additional interface to allow interactive
investigation of compile-time errors.
This has turned out to be very convenient for pinpointing errors
with heavily overloaded operations.
The information needed to fix the error can be located quickly
since it is not lost in a flood of preemptive detail.
The
compiler can also generate error messages in a
special format so that it can interact with other programs.
An X-Windows/Motif tool is supplied for inspecting compile-time
errors in that graphical user interface environment.
A full description of the external characteristics of the compiler is given in the user's guide [25].