Syllabus Compiler Design - (CS3501) UNIT I INTRODUCTION TO COMPILERS & LEXICAL ANALYSIS Introduction - Translators - Compilation and Interpretation - Language processors - The Phases of Compiler - Lexical Analysis - Role of Lexical Analyzer - Input Buffering - Specification of Tokens - Recognition of Tokens - Finite Automata - Regular Expressions to Automata NFA, DFA - Minimizing DFA - Language for Specifying Lexical Analyzers - Lex tool. (Chapter - 1) UNIT II SYNTAX ANALYSIS Role of Parser - Grammars - Context - free grammars - Writing a grammar Top Down Parsing - General Strategies - Recursive Descent Parser Predictive Parser-LL(1) - Parser-Shift Reduce Parser-LR Parser - LR (0) Item Construction of SLR Parsing Table - Introduction to LALR Parser - Error Handling and Recovery in Syntax Analyzer - YACC tool - Design of a syntax Analyzer for a Sample Language. (Chapter - 2) UNIT III SYNTAX DIRECTED TRANSLATION & INTERMEDIATE CODE GENERATION Syntax directed Definitions - Construction of Syntax Tree - Bottom - up Evaluation of S - Attribute Definitions - Design of predictive translator - Type Systems-Specification of a simple type Checker - Equivalence of Type Expressions-Type Conversions. Intermediate Languages : Syntax Tree, Three Address Code, Types and Declarations, Translation of Expressions, Type Checking, Back patching. (Chapter - 3) UNIT IV RUN - TIME ENVIRONMENT AND CODE GENERATION Runtime Environments - source language issues - Storage organization - Storage Allocation Strategies : Static, Stack and Heap allocation - Parameter Passing-Symbol Tables - Dynamic Storage Allocation - Issues in the Design of a code generator - Basic Blocks and Flow graphs - Design of a simple Code Generator - Optimal Code Generation for Expressions - Dynamic Programming Code Generation. (Chapter - 4) UNIT V CODE OPTIMIZATION Principal Sources of Optimization - Peep-hole optimization - DAG - Optimization of Basic Blocks - Global Data Flow Analysis - Efficient Data Flow Algorithm - Recent trends in Compiler Design. (Chapter - 5)