Skip to content
Home
Compilers

Learning Path — 18 articles

1 Compilers Guide: How Source Code Becomes Machine Code Understand the complete compiler pipeline — frontend, IR, optimizer, and backend — and learn how your source code … Start Here 2 Lexing and Parsing: Tokenization, Grammars, and Syntax Analysis Master lexical analysis and parsing — regular expressions for tokenization, BNF grammars, recursive descent parsers, and … Start Here 3 ASTs: Structure, Traversal, and Practical Manipulation Learn how abstract syntax trees represent code structure, how to traverse and transform them, and how ASTs power … Start Here 4 Semantic Analysis: Scope Resolution, Symbol Tables, and Binding Perform semantic analysis in compilers — build symbol tables, manage nested scopes, resolve name bindings, and implement … 5 Intermediate Representation: IR Types, SSA Form, and Optimization Learn how compilers use intermediate representations — three-address code, SSA form, CFGs, and how IR design enables … 6 Code Optimization: Loop Unrolling, Inlining, Constant Folding Discover how compilers transform code for speed — loop optimizations, inlining, constant propagation, dead code … 7 Code Generation: Instruction Selection, Scheduling, and Emission Master the compiler backend — learn instruction selection with tiling, scheduling for ILP, peephole optimization, and … 8 LLVM Framework: IR, Optimization Passes, and Toolchain Explore the LLVM compiler infrastructure — LLVM IR in detail, the optimization pass pipeline, Clang frontend … 9 GCC Architecture: Frontends, GENERIC/GIMPLE IR, and Backends Explore GCC's internal architecture — GENERIC and GIMPLE IR, the RTL backend, machine descriptions (MD files), and … 10 Interpreter vs Compiler: Execution Models and Tradeoffs Compare interpreters and compilers — pure interpretation, bytecode VMs, JIT compilation, REPL environments, and when to … 11 Just-In-Time Compilation: Techniques, Tiers, and Modern JITs Master JIT compilation — method-based vs tracing JITs, tiered compilation with C1/C2, on-stack replacement, and how … 12 Compiler Errors: Reporting, Recovery, and Diagnostic Design Build useful compiler diagnostics — learn error recovery strategies, diagnostic message design, and how Rust and Elm set … 13 Type Checking: Static Typing, Inference, and Type Systems Implement type checkers — type rules and judgments, Hindley-Milner type inference with unification, generics and … 14 Register Allocation: Graph Coloring, Linear Scan, and Spilling Master register allocation in compilers — graph coloring with Chaitin-Briggs, linear scan for JIT compilers, live range … 15 Parsing Techniques: Recursive Descent, LR, PEG, and Parser Generators Compare parsing algorithms — recursive descent vs LR/LALR parsers, PEG parsing with prioritized choice, parser … 16 Compiler Testing: Validation, Fuzzing, and Correctness Learn how to test compilers — test suite design, differential testing, fuzzing, random program generation, and formal … Advanced 17 Domain-Specific Languages: Design, Implementation, and Compilation Build your own DSL — learn the difference between internal and external DSLs, how to design syntax and semantics, and … Advanced 18 Compiler Engineer Career Guide: Skills, Research, and Industry Start or advance your compiler engineering career — learn the essential skills, explore research and industry paths, and … Advanced