Programme Content
Introduction, History, and Motivation
Explore the origins and evolution of compilers, understanding their significance in modern computing
Linking and Multifile Compilation
Delve into the processes of linking and handling multifile projects, including preprocessor directives.
An Overview of Compilers
Gain insights into compiler goals, translation steps, semantic analysis, and the phases involved in compilation.
Lexical Analysis Phase
Learn about token specification, regular expressions, transition diagrams, and lexical analyzer generators.
Lex and YACC Tutorial
Hands-on tutorials covering the use of Lex and YACC for lexical and syntax analysis.
Syntax Analysis Phase
Understand parsing techniques, ambiguity resolution, and bottom-up parsing strategies.
Abstract Syntax Tree
Discusses AST creation and how YACC assists in constructing it.
Semantic Analysis Phase
Introduces semantic checks, attribute grammars, and error detection.
Attribute Evaluation
Explains attribute types, evaluation schemes, and dependency management.
Type Systems
Delves into type checking, type conversions, overloading, and polymorphism.
Intermediate Representation (IR) and Symbol Tables
Focuses on three-address code and symbol table usage.
Symbol Table Creation
Teaches scope handling, binding, and memory management for symbols.
Intermediate Code Generation
Learn how to generate Three Address Code (3AC) for expressions, control flow, type conversions, Boolean logic (with and without short-circuiting), and complex structures like case statements.
Backpatching
Dive into backpatching techniques used for Boolean expressions and control flow. Understand syntax-directed translation and implementable schemes to manage dynamic jump targets in 3AC.
Procedures and Runtime Systems
Explore procedure calls, runtime organization, and activation records in depth. Covers scoping strategies, storage management, parameter passing, and dynamic vs lexical scoping.
Code Generation (CG)
Focus on the final stage of compilation: instruction selection, register allocation, and DAG-based optimization. Learn about the Sethi-Ullman algorithm and code generation strategies for optimal performance.
