In this project, you will be asked to write a recursive descent LL(1) parser and code
generator for the tinyL languagr. Your compiler will generate RISC
machine instructions called ILOC (Intermediate Language for Optimizing Compilers). You will also write a code optimizer that takes ILOC instructions as input and implements dead code elimination. The output of the optimzer is a sequence of ILOC instructions which produces the same results as the original input sequence. To test your generated programs, you can use a virtual machine (simulator) that can “run” your ILOC programs. The project will require you to manipulate doubly-linked lists of instructions. In order to avoid memory leaks, explicit deallocation of “dead” instructions is necessary. This document is not a complete specification of the project. You will encounter important design and implementation issues that need to be addressed in your project solution. Identifying these issues is part of the project. (See attachment for more info).