Building a Compiler from Scratch
Embark on a journey to demystify compilers by building one from the ground up, mastering each phase from lexical analysis to code generation.
...
Share
Introduction to Compilers and Lexical Analysis
Unit 1: Compiler Architecture and Introduction
What is a Compiler?
Compiler Phases Overview
Source Code to Executable
Compiler Design Choices
Our Compiler's Structure
Unit 2: Lexical Analysis: The Lexer
Lexical Analysis Defined
Tokens, Patterns, Lexemes
Regular Expressions Crash
Finite Automata (FA)
Implementing a Basic Lexer
Parsing: Syntax Analysis
Unit 1: Introduction to Parsing
What is Parsing?
Context-Free Grammars
Derivations & Parse Trees
Ambiguity in Grammars
Parser Types: Overview
Unit 2: Top-Down Parsing
Top-Down Parsing Intro
Recursive Descent Parsing
LL(k) Grammars
LL(1) Parsing Tables
Error Handling in LL(1)
Unit 3: Bottom-Up Parsing
Bottom-Up Parsing Intro
Shift-Reduce Parsing
LR Parsing: The Basics
SLR Parsing
LALR and CLR (Overview)
Unit 4: Parser Generators (Bison)
Intro to Parser Generators
Bison Basics
Bison & Lex Integration
Error Handling in Bison
Advanced Bison Features
Semantic Analysis and Intermediate Code Generation
Unit 1: Symbol Tables
Symbol Table Intro
Scope Management
Symbol Table Design
Attributes in Tables
Symbol Table Example
Unit 2: Type Checking
Type System Basics
Static Type Checking
Type Checking Rules
Handling Functions
Error Reporting
Unit 3: Intermediate Representation (IR)
IR Introduction
Three-Address Code
AST to IR
IR for Functions
IR Optimization Intro
Code Optimization and Target Code Generation
Unit 1: Introduction to Code Optimization
Optimization Overview
Basic Blocks & CFG
Data Flow Analysis Intro
Reaching Definitions
Live Variable Analysis
Unit 2: Common Optimization Techniques
Constant Folding
Constant Propagation
Dead Code Elimination
Common Subexpression
Loop Invariant Code
Unit 3: Target Code Generation
Target Code Generation
Instruction Selection
Register Allocation
Spilling and Allocation
Code Emission
Advanced Topics: Memory Management, Error Handling, and DSLs
Unit 1: Memory Management in Compilers
Memory Allocation Basics
Garbage Collection Intro
Mark and Sweep GC
Reference Counting GC
Memory Leaks and Tools
Unit 2: Error Handling and Reporting
Error Detection Stages
Error Message Design
Error Recovery Techniques
Error Reporting Systems
Custom Error Types
Unit 3: Domain-Specific Languages (DSLs)
DSL Concepts
DSL Grammar Design
DSL Parsing
DSL Code Generation
DSL Tooling