UNIT-1: INTRODUCTION TO COMPILER
- Phases and passes,
- Bootstrapping,
- Finite state machines and regular expressions and their applications to lexical analysis,
- Optimization of DFA-Based Pattern Matchers implementation of lexical analyzers,
- Lexical-analyzer generator,
- LEX compiler,
- Formal grammars and their application to syntax analysis,
- BNF notation, ambiguity, YACC.
- The syntactic specification of programming languages: Context free grammars, derivation and parse trees, capabilities of CFG.
UNIT-2: BASIC PARSING TECHNIQUES
- Parsers,
- Shifts reduce parsing,
- Operator precedence parsing,
- Top-down parsing,
- Predictive parsers Automatic Construction of efficient Parsers: LR parsers, the canonical Collection of LR(0) items,
- Constructing SLR parsing tables,
- Constructing Canonical LR parsing tables,
- Constructing LALR parsing tables, using ambiguous grammars, an automatic parser generator,
- Implementation of LR parsing tables.
UNIT-3: SYNTAX-DIRECTED TRANSLATION
- Syntax-directed Translation schemes,
- Implementation of Syntax directed Translators,
- Intermediate code, postfix notation,
- Parse trees & syntax trees,
- Three address code, quadruple & triples,
- Translation of assignment statements,
- Boolean expressions,
- Statements that alter the flow of control,
- Postfix translation,
- Translation with a top down parser.
- More about translation: Array references in arithmetic expressions, procedures call,
- Declarations and case statements.
UNIT-4: SYMBOL TABLES
- Data structure for symbols tables,
- Representing scope information.
- Run-Time Administration: Implementation of simple stack allocation scheme,
- Storage allocation in block structured language.
- Error Detection & Recovery: Lexical Phase errors,
- Syntactic phase errors semantic errors.
UNIT-5: CODE GENERATION
- Design Issues,
- The Target Language.
- Addresses in the Target Code,
- Basic Blocks and Flow Graphs,
- Optimization of Basic Blocks,
- Code Generator.
- Code optimization: Machine-Independent Optimizations,
- Loop optimization,
- DAG representation of basic blocks,
- Value numbers and algebraic laws,
- Global Data-Flow analysis.