The target generation module constructs the parse tree of the transformed source program. It takes the index spaces, schedule and allocation to build transformation matrices for every statement in the source program. Since the generated parse tree does not contain any synchronization or communication statements this module should be called ``raw target generator''.
This process takes place in three steps. First, all required information is loaded. Second, the source statements are transformed individually. In order to achieve that, the transformation matrices are computed, the target index spaces are constructed, strides and offsets are calculated, and finally all expressions in every statement are re-indexed according to its transformed coordinates. Third, the transformed statements in their respective index spaces (parts) are merged to a single target program. Aside from the two options of synchronous or asynchronous code, three merging strategies are available (see [Wet95] for details):