Implementation of HydraCAT?

HydraCAT is currently implented in C, Lex, and YACC. It is based on a library called C-Tree, developed by Shaun Flisakowski.

C-Tree reads in an ANSI C program, and builds a tree structure containing a respresentation of the program. It also builds a rudimentary symbol table.

HydraCAT them makes several passes over the tree. There are passes to perform such operations as "prune out include files", "find and translate p-loops into speculative functions", "scan for return calls", and "globalize appropriate variables". These passes are applied to the tree, and then the tree is printed out to source code form once again. The end result is speculatively parallelized.

We'll now examine the major translations that HydraCAT performs: (All taken from Lance's book of Magic Spells.)