[cvs-nhc98] (no subject)

Malcolm Wallace malcolm@sparud.net
Fri, 29 Jun 2001 16:40:45 +0200 (CEST)


malcolm: Fri Jun 29 16:40:45 CEST 2001

Update of /usr/src/master/nhc/src/compiler98
In directory hinken:/tmp/cvs-serv14384

Modified Files:
	Flags.hs Main.hs Makefile OsOnly.hs PrettySyntax.hs 
Added Files:
	AuxFile.hs AuxFixity.hs AuxLabelAST.hs TraceId.hs 
Log Message:

      --------------------------------------------------------------
      Portability: preparation for moving the tracing transformation
                  to an early phase of the compiler.
                  ----------------------------------

The tracing transformation will eventually move from its current
position to be just after lexing/parsing.  This commit prepares the
ground in various ways for that move.

  * There is a new "auxiliary" information file generated for every
    module.  Its extension is .hx, and it holds arity and fixity
    information for every exported identifier.  This means that
    imports must be chased to read .hx files (separate from the
    ordinary .hi file chasing).

  * There is a new type TraceId, which associates the current TokenId
    type with auxiliary information about arity and let/lambda-bound.

  * The new compiler flag -hx causes .hx information to be generated,
    and the abstract syntax tree to be completely relabelled from
    TokenIds to TraceIds.  (The relabelling also sorts out fixity,
    so that all ambiguous infix expressions are changed to simple
    applications.)

  * At the moment, with the -hx flag, the compiler simply pretty-prints
    the relabelled syntax tree and then stops.  The /plan/ is that the
    tracing transformation will take the relabelled tree as input
    and generate a new syntax tree, with the type dropped back down
    to simple TokenIds.  This tree could then either be pretty-printed
    for input to another compiler, or simply carried on through the
    normal nhc98 middle and back end.

Issues still to be addressed:

  * The .hx information currently takes no account of qualified identifiers.
  * Class methods have no arity information.