Principles of Compiler Design

Principles of Compiler Design. Instructor: Prof. Y. N. Srikant, Department of Computer Science and Automation, IISc Bangalore. This course aims to teach students the principles involved in compiler design. It will cover all the basic components of a compiler but not the advanced material on optimizations and machine code generation. Topics covered in this course include lexical analysis, syntax analysis, semantic analysis, intermediate code generation, run-time environments, local optimizations, machine code generation, global register allocation, machine independent optimization, instruction scheduling and software pipelining, and automatic parallelization. (from

Lecture 15 - Semantic Analysis with Attributed Translation Grammars (cont.)

Go to the Course Home or watch other lectures:

An Overview of a Compiler
Lecture 01 - An Overview of a Compiler
Lexical Analysis
Lecture 02 - Lexical Analysis: Definition, its Purpose, Tokens, Patterns, Lexemes
Lecture 03 - Lexical Analysis: Finite Automata, Transition Diagrams, Regular Expressions
Lecture 04 - Lexical Analysis: LEX - A Lexical Analyzer Generator
Syntax Analysis
Lecture 05 - Syntax Analysis Definition, Context-Free Grammars, Pushdown Automata
Lecture 06 - Context-Free Grammars, Pushdown Automata and Parsing
Lecture 07 - Top-down Parsing: LL(1) Parsing and Recursive Descent Parsing
Lecture 08 - Recursive Descent Parsing, Bottom-up Parsing: LR-Parsing
Lecture 09 - Bottom-up Parsing: LR-Parsing
Lecture 10 - Bottom-up Parsing: LR-Parsing (cont.)
Lecture 11 - LR-Parsing (cont.), YACC Parser Generator
Semantic Analysis
Lecture 12 - Intro to Semantic Analysis, Attribute Grammars, Attributed Translation Grammars
Lecture 13 - Attribute Grammars, Attributed Translation Grammars (cont.)
Lecture 14 - Attribute Grammars, Attributed Translation Grammars, and Semantic Analysis
Lecture 15 - Semantic Analysis with Attributed Translation Grammars (cont.)
Lecture 16 - Semantic Analysis with Attributed Translation Grammars (cont.)
Intermediate Code Generation
Lecture 17 - Intro to Intermediate Code, Different Types of Intermediate Code
Lecture 18 - Intermediate Code Generation Techniques for Various Constructs
Lecture 19 - Intermediate Code Generation Strategies for Various Constructs
Lecture 20 - Intermediate Code Generation (cont.), Run-time Environments
Run-time Environments
Lecture 21 - Run-time Environments: Storage Allocation, Activation Records
Lecture 22 - Run-time Environments: Static Scope and Dynamic Scope
Lecture 23 - Run-time Environments: Garbage collection, Local Optimizations
Control Flow Graph and Local Optimizations
Lecture 24 - Control Flow Graph and Local Optimizations, Machine Code Generation
Machine Code Generation
Lecture 25 - Machine Code Generation (cont.)
Lecture 26 - Machine Code Generation: Optimal Code Generation
Lecture 27 - Machine Code Generation (cont.), Implementing Object-Oriented Languages
Implementing Object-Oriented Languages
Lecture 28 - Implementing Object-Oriented Languages (cont.), Global Register Allocation
Global Register Allocation
Lecture 29 - Register Allocation based in Usage Counts, Linear Scan Register Allocation
Lecture 30 - Global Register Allocation: Chaitin's Graph Coloring based Algorithm
Machine Independent Optimization
Lecture 31 - Machine Independent Optimization: Introduction, Code Optimizations
Lecture 32 - Machine Independent Optimization: Data Flow Analysis
Lecture 33 - Machine Independent Optimization: Data Flow Analysis (cont.)
Lecture 34 - Machine Independent Optimization: Data Flow Analysis, Control Flow Analysis
Lecture 35 - Machine Independent Optimization: Control Flow Analysis (cont.)
Lecture 36 - Algorithms for Machine Independent Optimizations
Lecture 37 - Static Single Assignment Form and its Applications, Instruction Scheduling
Instruction Scheduling and Software Pipelining
Lecture 38 - Instruction Scheduling: Trace, Superblock and Hyperblock Scheduling
Lecture 39 - Instruction Scheduling and Software Pipelining, Automatic Parallelization
Automatic Parallelization
Lecture 40 - Automatic Parallelization: Data Dependencies, Direction Vectors