Computer Science Engineering > Compiler Design
Compiler Design
Learn the Concepts of Compiler Design and test your knowledge

CHOOSE YOUR TOPIC
Introduction
In this topic, we learn about What is a Compiler, The Phases of a Compiler, What is a Cross-Compiler, Interpreters, Regular Expression Notation/Finite Automata Definitions
Lexical Analysis
In this topic, we learn about Introduction, Regular Expressions, Nondeterministic Finite Automata, Converting a Regular Expression to an NFA, Deterministic Finite Automata etc
Syntax Analysis
In this topic, we learn about Context-Free Grammar, Derivation, Operator Precedence, Other Sources of Ambiguity, Syntax Analysis, Predictive Parsing, Nullable and FIRST etc
Scopes and Symbol Tables
In this topic, we learn about Introduction, Symbol Tables, Implementation, Entering Information into The Symbol Table, Information About The Runtime Storage Location
Interpretation
In this topic, we learn about The Structure of an Interpreter, A Small Example Language, An Interpreter for the Example Language, Advantages and Disadvantages of Interpretation
Type Checking
In this topic, we learn about The Design Space of Types, Attributes, Environments for Type Checking, Type Checking Expressions, Type Checking of Function Declarations, Type Checking a Program, Advanced Type Checking
Intermediate-Code Generation
In this topic, we learn about Choosing an Intermediate Language, The Intermediate Language, Syntax-Directed Translation, Generating Code From Expressions, Translating Statements, Logical Operators etc
Machine-Code Generation
In this topic, we learn about Introduction, Conditional Jumps, Constants, Exploiting Complex Instructions, Peephole Optimizations, Using DAG for Code Generation, The Machine Model
Register Allocation
In this topic, we learn about Introduction, Liveness, Liveness Analysis, Interference, Register Allocation by Graph Coloring, Spilling, Heuristics
Function Calls
In this topic, we learn about Activation Records, Prologues, Epilogues and Call-Sequences, Caller-Saves Versus Callee-Saves, Using Registers to Pass Parameters, Interaction with the Register Allocator etc
Analysis and Optimization
In this topic, we learn about Data-Flow Analysis, Common Subexpression Elimination, Jump-to-Jump Elimination, Index-Check Elimination, Limitations of Data-Flow Analyses, Loop Optimizations etc
Memory Management
In this topic, we learn about Static Allocation, Stack Allocation, Heap Allocation, Manual Memory Management, Automatic Memory Management, Reference Counting, Tracing Garbage Collectors
Bootstrapping a Compiler
In this topic, we learn about Introduction, Notation, Compiling compilers, Full bootstrap, Incremental bootstrapping, Using an interpreter