Algorithms for Compiler Design