UNIT 1:
Introduction to Finite Automata
Central concepts of Automata Theory
Regular Expressions, Identity rules for Regular Expressions
FSA- Deterministic Finite State Automata(DFA)
Non Deterministic Finite State Automata(NDFA)
Equivalence of DFA and NDFA
Pushdown Automata - Languages of a Pushdown Automata
Turing Machines- Languages of Turing Machine
UNIT 2:
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 and Recognition of tokens
Finite automata – Regular expression to finite automata
A language for specifying lexical analyzer
UNIT 3:
Syntax Analysis, The role of the parser
Context-free grammars, Writing a grammar, Top down parsing, Bottom-up Parsing
Context-free grammars, Writing a grammar, Top down parsing, Bottom-up Parsing
Context-free grammars, Writing a grammar, Top down parsing, Bottom-up Parsing
Top Down Parsing: First & Follow, LL(1) Parser
Summary of parsers, Tool to generate parser
UNIT 4:
Run-Time Environments, Source language issues
Storage-allocation strategies
Intermediate Representation: parse tree, 3 address code and postfix Notation
Intermediate code representation of Declarations & Assignment statements
UNIT 5:
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
The DAG representation of basic blocks & Generating code from DAGs
Introduction to optimization techniques – The principle sources of optimization
Peephole optimization – Optimization of basic blocks
Loops in flow graphs – Introduction to global data-flow analysis
Code improving transformations.
Loops in flow graphs – Introduction to global data-flow analysis