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
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
Tool for generating lexical analyzer
UNIT 3:
Syntax Analysis, The role of the parser
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:
Optimization techniques, The principle sources of optimization
Optimization of basic blocks, Loops in flow graphs
Introduction to global data-flow analysis, Code improving transformations
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