Compiler Design: Principles, Techniques and Tools

Principles of Compiler Design

Compiler Design: Principles, Techniques and Tools
Compiler Design: Principles, Techniques and Tools

Compiler Design: Principles, Techniques and Tools udemy course

Principles of Compiler Design

Course Objectives:

  1. Introduce the major concepts of language translation and compiler design and impart the knowledge of practical skills necessary for constructing a compiler.

  2. Topics include phases of compiler, parsing, syntax directed translation, type checking use of symbol tables, code optimization techniques, intermediate code generation, code generation and data flow analysis.

Course Outcomes:

  1. Demonstrate the ability to design a compiler given a set of language features.

  2. Demonstrate the the knowledge of patterns, tokens & regular expressions for lexical analysis.

  3. Acquire skills in using lex tool & yacc tool for developing a scanner and parser.

  4. Design and implement LL and LR parsers

  5. Design algorithms to do code optimization in order to improve the performance of a program in terms of space and time complexity.

  6. Design algorithms to generate machine code.

SYLLABUS:

Module- I:

Introduction: The structure of a compiler, the science of building a compiler, programming language basics.

Lexical Analysis: The Role of the Lexical Analyzer, Input Buffering, Recognition of Tokens, The Lexical-Analyzer Generator Lex, Finite Automata, From Regular Expressions to Automata, Design of a Lexical-Analyzer Generator, Optimization of DFA-Based Pattern Matchers.

Module- II:

Syntax Analysis: Introduction, Context-Free Grammars, Writing a Grammar.

Top-Down Parsing, Bottom-Up Parsing.

Introduction to LR Parsing: Simple LR, More Powerful LR Parsers, Using Ambiguous Grammars and Parser Generators.

Module- III:

Syntax-Directed Translation: Syntax-Directed Definitions, Evaluation Orders for SDD's, Applications of Syntax-Directed Translation, Syntax-Directed Translation Schemes, Implementing L-Attributed SDD's.

Intermediate-Code Generation: Variants of Syntax Trees, Three-Address Code, Types and Declarations, Type Checking, Control Flow, Switch-Statements, Intermediate Code for Procedures.

Module- IV: 

Run-Time Environments: Stack Allocation of Space, Access to Non-local Data on the Stack, Heap Management, Introduction to Garbage Collection, Introduction to Trace-Based Collection.

Code Generation: Issues in the Design of a Code Generator, The Target Language, Addresses in the Target Code, Basic Blocks and Flow Graphs, Optimization of Basic Blocks, A Simple Code Generator, Peephole Optimization, Register Allocation and Assignment, Dynamic Programming Code-Generation.

Module- V: 

Machine-Independent Optimization: The Principal Sources of Optimization, Introduction to Data-Flow Analysis, Foundations of Data-Flow Analysis, Constant Propagation, Partial-Redundancy Elimination, Loops in Flow Graphs.


Reference:

  1. Compilers: Principles, Techniques and Tools, Second Edition, Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffry D. Ullman.