Lecture Plan
Lecture Plan
Course Course
Name of Course L T P Credit
Type Code
CSC302 Compiler Design 3 0 0 9
Course Objective
The main objective of this course is to make the students understand various phases of a compiler with the associated
techniques and algorithms to impart knowledge about designing a new compiler.
Learning Outcomes
Upon successful completion of this course, students
will have a broad understanding of language translator and their need.
will have a detailed understanding of various phases of a compiler and their design techniques.
will be able to design a complier for new high level language.
Unit Lecture
Topics to be Covered Learning Outcome
No. Hours
Introduction: Need of compilers; Cousins of The students will be introduced with the
1 compilers; Compiler writing tools, compiler 2 language translator, their need and various
phases. phases of a compiler.
Lexical analysis: Tokens, regular expressions, Students will be familiar with various elements
transition diagrams, Design of lexical of a scanner (lexical analyzer). They will also
2 5
analyzer generator. learn how to use transition diagram or finite
automata for designing a new lexical analyzer
Syntax analysis: Context free grammars, This will help the students in understanding
ambiguity, top down parsing, bottom up various parsing techniques, basic as well as
3 parsing, operator precedence parsing, LR 10 advanced level. They will also gain knowledge
parsers (SLR, LALR, LR). of using a specific parsing technique for a new
language construct.
Syntax Directed Translation (SDT): Scheme, This unit will help the students to understand
Implementation of SDT, postfix notation, intermediate code generator. They will learn
4 SDT to postfix code; Intermediate code 6 how to use Syntax Directed Translation for its
generation. design.
Error Detection and Recovery: Lexical-phase The students will familiarize with various kinds
errors, Syntactic-phase errors. of compiler errors and they will learn how to
5 3
design error handler associated with various
parsing techniques.
Code optimization: Sources, optimization of This unit will help the students to understand
basic blocks, loops in flow graphs, loop importance of code optimization. They will also
6 5
optimization. learn various code optimization techniques with
a special emphasis on loop optimization.
Code generation: Issues, target machine, Here the students will know how to use DAGs
runtime storage management, basic block and for optimization of a basic block of code. They
flow graphs, next use information, a simple will also learn about the analysis of flow graph
7 7
code generator, register allocation, DAG and their use for generating final code.
representation of basic blocks, peephole
optimization, code generation from DAGs.
Text Book:
1. Alfred Aho and Jeffrey Ullman, Principles of Compiler Design, Narosa, 2002
Reference Books:
2. Aho, Ullman, Sethi, Compiler Principles, Techniques and Tools, Addison-Wesley, 2004.
3. K. Muneeswaran, Compiler Design, Oxford University Press, 2013