Finite automata – Regular expression to finite automata – Introduction to Compliers– Compilers – Analysis of the source program – Phases of Compliers– Cousins of Compliers – The grouping of phases – Compiler construction tools. The role of the lexical analyzer – Input buffering – Specification and Recognition of tokens –A language for specifying lexical analyzer –Tool for generating lexical analyzer
Syntax Analysis – The role of the parser – Context-free grammars – Writing a grammar – Top down parsing –Recursive Descent Parsing-Predictive Parsing- Bottom-up Parsing – LR parsers – Constructing an LR parsing table -SLR Parsers – Canonical LR Parsers – LALR Parsers –Tool for generating parser
Syntax Directed Definition – Types of attributes-Evaluation Order -Syntax Directed Translation Schemes- Applications of Syntax Directed Translation– Intermediate languages – Declarations – Assignment statements – Boolean expressions – Case statements – Back patching – Procedure calls.
Run-Time Environments – Source language issues – Storage organization – Storage-allocation strategies -Introduction to optimization techniques – The principle sources of optimization – Optimization of basic blocks – The DAG representation of basic blocks - Generating code from DAGs- Basic blocks and flow graphs -Loops in flow graphs – Introduction to global data-flow analysis – Code improving transformations- Peephole optimization.
Issues in the design of a code generator – The target machine – Run-time storage management –– Next-use information – A simple code generator – Register allocation and assignment
Reference Book:
Alfred V. Aho, Ravi Sethi Jeffrey D. Ullman, “Compilers- Principles, Techniques, and Tools”, Second Edition, Pearson Education Asia, 2012.
Text Book:
John E. Hopcroft and Rajeev Motwani and Jeffrey D. Ullman, “Introduction to Automata Theory, Languages and Computation”, Second Edition, Pearson Education, New Delhi, 2013.