A compiler translates the code written in one language to some other language without changing the meaning of the program. It is also expected that a compiler should make the target code efficient and optimized in terms of time and space.Compiler design principles provide an in-depth view of translation and optimization process. Compiler design covers basic translation mechanism and error detection & recovery. It includes lexical, syntax, and semantic analysis as front end, and code generation and optimization as back-end.
These notes for those students interested in learning the basic principles of compilers. Enthusiastic readers who would like to know more about compilers and those who wish to design a compiler themselves may start from here. It requires basic understanding of at least one programming language such as C, Java etc. It would be an additional advantage if you have had prior exposure to Assembly Programming.