Compiler Construction 2015 Computer Laboratory University of Cambridge Timothy G. Griffin (tgg22@cam.ac.uk) Practical Exercises, Set 2. (For slang1_compile.) ) Implement elimination of tail-recursion in the compiler. But how to represent loops? Can't do it as a Ast.expr to Ast.expr transformation! And Jargon.listing seems too "low level". Perhaps another intermediate representation is needed? ) The claim was made that alpha converting in the front-end made the rest of compilation easier. Can you identify places in the compiler that would have to change if we did not first alpha convert? ) Would using De Bruijn indices be better? Would that simplify lambda lifting? ) Practical Exercises, Set 1, suggested adding mutual recursion to Slang1. If you have done this can you now extend lambda-lifting in a why that it never fails?