Name: MCross

Maintainer: Paul Rovner

Date: 15-Mar-82 13:16:14

Purpose: MCross is a simple Cedar program that creates a textual
cross-reference for the identifiers that appear in a specified
collection of Cedar source files on the local disk. It is happy
to accept other source files (like .cm and .config ones) too. 

Usage:

Where to get it: [Indigo]<Cedar>MCross>MCross.df

How to run it: type

   MCross <output file name> <input file name>...<input file name>

to the Exec. The output file name extension must be  ".mcross"; this
is supplied if no extension is specified. Input file names may have
any extension. The default extension for input file names is ".mesa";
this is supplied if no extension is specified.

Example: MCross foo foo1 foo2 foo3 foo4

What it does:

MCross reads the input files one at a time, building a list for each
non-reserved identifier of the files in which the identifier is
encountered, and for each such file, of the page and line number
of each appearance of the identifier (MCross operates on the
assumption that hardcopy of the input files will be made with
  Print /l
using GACHA8). After reading all of the input files, MCross
writes the output file, which consists of an alphabetical listing of
identifiers, each with a textual rendering of its list of appearances.
Each appearance of an identifier which was found to be followed
immediately by ":" is tagged with "(D)" in its entry (to identify
definitions. This doesn't catch all definitions, of course). The
output will be put into multiple files if there's a lot of it;
the "overflow" output files will have the extensions .mcross1,
.mcross2, etc. If this happens, MCross will print a message.

Special Features:

  1. The first <input file name> can be replaced by
         /b <list of identifiers> /e
     to cause only the specified identifiers to be included in the
     cross reference. Example:
       MCross out.mcross /b ERROR SIGNAL /e file1 file2 file3

  2. Appearance of /f as an <input file name> will suppress detailed
     line number information, leaving only filenames in the cross
     reference output.  

Known problems:
          * page/line numbers are not precise, but are close
          * (see comment above) not all definitions are tagged with (D)