Major Topics to be Covered |
Week 1 |
Introduction
Overview of Compilers, Compilation Process, Phases of Compiler,
Cousins of compiler |
Week 2 |
Lexical Analyzer
Overview and Role of Lexical Analyzer, Tokens, Lexemes, Patterns, Specification of tokens, recognition of tokens. |
Week 3 |
Lexical Analyzer (Continued)
Finite automata, NFA, DFA, Conversion from a regular expression to an NFA, NFA problems, NFA & DFA Comparison, Design of a Lexical Analyzer. |
Week 4 |
Symbol Table Manager
Overview, Symbol Table organization, Classification of the symbol table, symbol table operations, working, implementation. |
Week 5 |
Syntax Analyzer
Role of Parser, Context-Free grammars, writing a grammar, Types of Parsing, Top-down parsing, Bottom-up parsing |
Week 6 |
Syntax Analyzer (Continued)
Backtracking, Recursive Descent parsing, problems with RD parsing, Predictive parsing, Transition diagrams for predictive parsers, Non-Recursive Predictive Parsing |
Week 7 |
Syntax Analyzer (Continued)
Practical Examples and Parser Generators. |
Week 8 |
Semantic Analysis
Overview of Type Checking, specification of a simple type checker, Equivalence of type expressions |
Midterm Exam |
Week 9 |
Semantic Analysis (Continued)
Type conversions, type rules, type constructors, Overloading of functions and operators, polymorphic functions |
Week 10 |
Semantic Analysis (Continued)
A simple type checker generator |
Week 11 |
Intermediate Code Generator
Intermediate languages, declarations, Three address code instructions, and their representations |
Week 12 |
Intermediate Code Generator (Continued)
Intermediate Code Generator examples |
Week 13 |
Code Optimization
Overview, the principal sources of optimization, optimization of basic blocks, loops, code improvement transformations. |
Week 14 |
Code Generation
Role of a code generator, Issues in the design of a code generator, Runtime storage management, simple code generator. |
Week 15 |
Detection and recovery from errors
Detection of syntax errors by compilers and their recovery mechanism |
Week 16 |
Miscellaneous
Overview of principles of programming languages. Criteria for selecting programming languages, Representing concurrency and analyzing concurrent designs |
Final Exam |