Compiler Engineering in Practice