Tag
semantic-analysis
- Jun 3, 2026 Collecting Declarations Before Resolving Any Body How a hoisting pass makes forward and mutual references resolvable, what it must record about ordering and initialization, and which language rules it cannot express. compilers
- May 15, 2026 Bidirectional Checking: When a Type Is Synthesized and When It Is Checked How splitting the typing judgment into synthesis and checking makes annotated lambdas and empty literals typable without a global constraint solver, and where the split loses completeness. compilers
- Sep 6, 2025 Definite Assignment as a Flow-Sensitive Dataflow Problem How a checker proves every variable is written before it is read, why the answer depends on control flow rather than scope, and how the lattice and transfer functions are chosen. compilers
- Mar 26, 2025 Bottom-Up Expression Typing with Inference Variables How a checker types an expression from its children, when it must defer a decision to a metavariable, and how unification and the occurs check close those holes. compilers
- Mar 4, 2025 Symbol Table Layouts and the Cost of Leaving a Scope Why a compiler symbol table is not just a hash map, how scope exit is made cheap, and what the per-scope-frame and shadow-stack designs each cost in lookup and memory. compilers
- Feb 10, 2025 Error Types and Recovery in a Type Checker How a checker keeps going after the first type error without accepting nonsense, what an error type must absorb, and why the count of reported errors is a design decision. compilers
- Nov 14, 2021 Resolving Identifier Uses Against a Stack of Lexical Scopes How a semantic pass turns each identifier token into a reference to exactly one declaration, what the scope stack must record, and where a single pass over the tree is not enough. compilers