
Adl Compiler Front End
----------------------



Version 0.41
------------

WARNING - this code is very much a prototype and subject to arbitrary 
          update that may make the performance on some benchmarks worse.

EXTRA WARNING - Error-recovery of the compiler - especially from type errors
          is currently very bad. All components except parser expect correct 
          programs - if it doesn't get them they behave cryptically.


Credits
--------

Copyright Brad Alexander, 2008.
Permission granted to use this code for any purpose (no warranty given)
as long as it is attributed to the author.

A big thanks to Nisarg Patel for helping to debug initial drafts of 
the tracing infrastructure.

Also a big thanks to Li Lei for her collaboration on the 
Stratego front code to insert trace statements.


Software requirements
---------------------
 Stratego XT 0.17, ghc 6.6.1 (other recent versions will probably work too).

Quick Setup and Test
-------------------

./Build.sh             # build everything
cd programs            # go to benchmarks dir
less README.txt        # read about reg_test options.


Description
-----------

This directory contains the components of the front end of a compiler
for Adl. Subdirectories contain components. There are README.txt 
files in subordinate directories describing what is contained in each.

  syn: syntax definitions for various compilation components.
  translator: the Adl to point-free form (bmf) translator.
  transform:  the optimiser for point-free form.
  tracing-transform: the tracing optimiser for point-free form.
  typechecker: a typechecker for point free form. 
  shapely-typecheker: work in progress - size propagator for point free form
                      to help with mapping to BlueSpec(tm) compiler for 
                      mapping to Verilog and then to FPGA.

  programs: Where all the benchmarks live
  pp: unparsers and pretty printer tables.
  reg_test: contains the haskell performance model.



 