A compiler translates the codes 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 mechanisms and error detection & recovery. It includes lexical, syntax, and semantic analysis as front end, and code generation and optimization as back-end.
This tutorial is designed for 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.
This tutorial requires no prior knowledge of compiler design but requires a 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.