Introduction:
Introduction to programming language, linker, loader, assembler, interpreter, compiler, one pass compiler, multi pass compiler, cross compiler, difference between interpreter, assembler and compiler. Syntax and semantics of the language, characteristics of compiler, challenges in compiler design, components of compiler, Front and Back end analysis.
Lexical Analysis:
The Role of the Lexical Analyzer, regular expression, regular languages, Specification of Lexemes, Tokens and pattern. Recognition of Tokens, Finite Automata, From a Regular Expression to an NFA, Design of a Lexical Analyzer Generator, Optimization of DFA-Based Pattern Matchers.
Syntax Analysis:
The Role of the Parser, Types of grammar, CFG, Restriction on CFG, Ambiguous grammar, Top-Down Parsing: Left Factoring, Left Recursion, Construction of Predictive Parsing Table , LL (1) Grammar, String Parsing using M-Table, Bottom-Up Parsing: Handle, Shift-reduce parser, LR parsers: LR (0), SLR (1), LALR (1), CLR (1), String parsing procedure using LR parser, R-R and S-R Conflicts, Operator Precedence Parser
Intermediate Code Generation:
Intermediate Languages, Declarations, Assignment Statements, Boolean Expressions, Case Statements, Back patching, Procedure Calls, three address code.
Code Optimization:
Introduction, The Principal Sources of Optimization, Optimization of Basic Blocks, Loop Optimization techniques
Symbol Table Management:
Symbol Table, Implementation, Entering information into symbol table, Various approaches to Symbol Table organization, Representing the scope information in Symbol table.