Syllabus

CS2352       PRINCIPLES OF COMPILER DESIGN

 

UNIT I         LEXICAL ANALYSIS

Introduction to Compiling- Compilers-Analysis of the source program-The phases- Cousins-The grouping of phases-Compiler construction tools. The role of the lexical analyzer- Input buffering-Specification of tokens-Recognition of tokens-A language for specifying lexical analyzer.

 

UNIT II        SYNTAX ANALYSIS and RUN-TIME ENVIRONMENTS

Syntax Analysis- The role of the parser-Context-free grammars-Writing a grammar-Topdown parsing-Bottom-up Parsing-LR parsers-Constructing an SLR(1) parsing table. Type Checking- Type Systems-Specification of a simple type checker. Run-Time Environments-Source language issues-Storage organization-Storage-allocation strategies.

 

UNIT III       INTERMEDIATE CODE GENERATION

Intermediate languages-Declarations-Assignment statements - Boolean expressions- Case statements- Backpatching-Procedure calls

 

UNIT IV       CODE GENERATION

Issues in the design of a code generator- The target machine-Run-time storage management-Basic blocks and flow graphs- Next-use information-A simple code generator- Register allocation and assignment-The dag representation of basic blocks - Generating code from dags.

 

UNIT V        CODE OPTIMIZATION

Introduction-The principle sources of optimization-Peephole optimization- Optimization of basic blocks-Loops in flow graphs- Introduction to global data-flow analysis-Code improving transformations.

 

TEXT BOOK

1.    Alfred V. Aho, Ravi Sethi Jeffrey D. Ullman, “Compilers- Principles, Techniques, and Tools”, Pearson Education Asia, 2007.

 

REFERENCES:

1.    David Galles, “Modern Compiler Design”, Pearson Education Asia, 2007

2.    Steven S. Muchnick, “Advanced Compiler Design & Implementation”, Morgan Kaufmann Pulishers, 2000.

3.    C. N. Fisher and R. J. LeBlanc “Crafting a Compiler with C”, Pearson Education, 2000.