Engineering a compiler