Compiler techniques (Auerbach, 1972)