This pretty-printer was originally developed by Greg Nelson and Hania
Gajewska for Modula-2.

m3pp.1

  manpage for the pretty-printer, installed under name m3pp.

m3pp.ml, m3pp.mu

  m3pp.ml is a mocklisp file which, when loaded into emacs, allows portions
  of the file to be pretty-printed at the stroke of a key.  m3pp.mu is
  the compiled version of m3pp.ml.

Tutorial.m3

  Edit this file with emacs and follow the instructions to get a tutorial
  of the pretty-printer.

Main.m3, Main.mo

  Main.m3 is the main program of the pretty-printer.  Main.mo is the
  compiled version Main.m3.

Parse.i3, Parse.io

  The Modula-3 interface to the parser.  Parse.io is the compiled version of
  Parse.i3.

Parse.lex

  Lex source for the pretty-printer's scanner.

Parse.yacc

  The yacc source for the pretty-printer. This grammar requires a
  larger than normal yacc.

Parse.lc

  The two c file generated by lex.

Parse.o

  The parser.

Parse.output

  Parse.output contains the diagnostic output of yacc's last run.

hash.h

  A hash table implementation for storing the keywords of the language.

Buffer.m3, m3ppBuf

  A Modula-3 program that reads and stores standard input until a control-A
  is encountered, writes everything it has stored to standard output, and
  then repeats the cycle.  This is needed to work around a bug in emacs: the
  file m3pp.ml execs the pipeline m3pp | m3ppBuf; thus emacs can write out
  the entire region to be pretty-printed before trying to read anything back
  from the pipeline, without danger of deadlock.  Without m3ppBuf, deadlock
  seems to occur for regions containing more than about 1000 characters.

