
This directory contains "p2c", a Pascal to C translator.

"p2c"  Copyright 1989, 1990, 1991, 1992, 1993  Free Software Foundation, Inc.

Written and maintained by:   Dave Gillespie
			     c/o Synaptics, Inc.
			     2698 Orchard Parkway
			     San Jose CA 95134
			     daveg@synaptics.com, uunet!synaptx!daveg


This program is distributed under the terms of the GNU License Agreement.
See the file src/COPYING for details.

The GNU License Agreement restrictions do _not_ apply to code generated
by p2c, nor to the p2c run-time files "p2clib.c" and "p2c.h".



The file "trans.c" includes an overview of the source files of p2c.
All p2c source files include the header "trans.h".

The file "dir.c" is intended to be modified by the user to install
code for custom translations of certain procedures.  To add your own
custom code to p2c, modify CUSTSRCS and CUSTDEFS in the Makefile,
then recompile dir.c.

The file "system.imp" (copied to %H/system.imp) contains declarations
for "predefined" functions like "sqrt".  These generally have custom
translation code in funcs.c.  Functions with irregular syntaxes have
their symbol table entries built directly in funcs.c; they do not
appear here.  The default sys.p2crc causes p2c to read system.imp at
the beginning of every job.

The file "system.m2" contains declarations for predefined Modula-2
functions.  It should be substituted for "system.imp" when translating
Modula-2 programs.

The file "turbo.imp" contains declarations for all the Turbo Pascal
standard units like dos and crt.  (These are very incomplete at
present.)  The default sys.p2crc causes p2c to read turbo.imp as
soon as any Turbo standard unit is used.

The file "string.pas" implements the Oregon Software dynamic strings
package.  These are translated pretty completely into native C strings
using only the FuncMacro mechanism of p2c---no custom C code was
written to support these functions.

The file "NOTES" contains the author's current bugs-and-plans list.
The file "HISTORY" contains the revision history of the program.
(NOTES is a bit out of date, but HISTORY is actively maintained.)

The "makeproto" program is an independent utility for scanning a large
C program with old-style declarations and building function prototypes
for all its functions.  The "trans.h" file #includes the prototype
files for all of p2c.


NO WARRANTY:
   The program in this directory was developed for internal use at
   Caltech and thus absolutely no guarantee is made that the program
   will compile or run on other systems or that it will produce correct
   code.  P2c is _not_ a compiler, it is a translator; it strives to
   produce correct code but reserves the right to sacrifice correctness
   in extreme cases for readability in the general case.  P2c is designed
   to be extended (see funcs.c, hpmods.c and citmods.c for examples), but
   some of the main code is pretty messy since the translator has grown
   considerably beyond its original planned scale.  Bug reports are
   welcome at daveg@synaptics.com, but I may not have time to respond
   to them immediately.  Suggestions are welcome, too!

