Compiler Design Tutorial
A compiler is software that translates or converts a program written in a high-level language (Source Language) into a low-level language (Machine Language or Assembly Language). Compiler design is the process of developing a compiler.
- The Key objectives of compiler design are to automate the translation process, check correctness of input code, and reporting errors in source code.
- It acts as the "translator" of the programming world, bridging the gap between human-readable code and machine-understandable instructions.
- It involves many stages like lexical analysis, syntax analysis (parsing), semantic analysis, code generation, optimization, etc.
- Most of the early high level languages like C and C++ were compiled. However modern languages like Java and Python use both interpreter and compiler. Please note that compiler only translates but interpreter runs as well.

Introduction
- Introduction
- Phases of a Compiler
- Compiler construction tools
- Symbol Table in Compiler
- Error Handling in Compiler Design
- Generations of Programming Languages
Lexical Analysis
Syntax Analysis
- Introduction to Syntax Analysis
- FIRST and FOLLOW
- Classification of Context Free Grammars(CFG)
- Ambiguous Grammar
- Introduction to Parsers
- Classification of top down parsers
- Bottom Up Parser
- Shift Reduce Parser in Compiler
- SLR, CLR and LALR Parsers
- Operator grammar and precedence parser
Syntax Directed Translation
- Syntax Directed Translation
- S â attributed and L â attributed SDTs in Syntax directed translation
Code Generation and Optimization
- Code Optimization
- Intermediate Code Generation
- Issues in the design of a code generator
- Three address code in Compiler
- Detection of a Loop in Three Address Code
- Introduction of Object Code
- Data flow analysis in Compiler
Runtime Environments
Quick Links
- GATE | Previous Years Questions : Set â 1 , Set â 2
- Quiz on Compiler Design