Three phase compiler structure design.
Front end is specific for each source languageMiddle end performs optimizations, without caring about the source language nor the target platformBack end is target dependent
An example of a compiler infrastructure implemented in this way is the LLVM project.
File:Compiler design IPL.png
Pronesto