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.