Programming Languages · Cluster

Language Design

Syntax, ergonomics, and feature interactions.

  1. 01 Automatic Semicolon Insertion and Restricted Productions How JavaScript decides where statements end without semicolons, why the rule lives in the parser rather than the lexer, and which line breaks silently change meaning. foundational · Jul 9, 2022
  2. 02 The Dangling Else and How Grammars Resolve Ambiguity Why an if-statement grammar is ambiguous, how shift-reduce parsers settle the conflict by default, and what brace-less and indentation-based designs cost instead. foundational · Feb 6, 2026
  3. 03 Operator Precedence Tables and Why They Are a Design Artifact How precedence is encoded in a grammar, why the table is not arbitrary, and what goes wrong when a new operator is fitted into an existing hierarchy. foundational · Aug 22, 2026
  4. 04 Evaluation Order, Sequencing Points, and Unspecified Behaviour Why C leaves the order of operand evaluation open, which operators impose sequencing, and how a language that fixes left-to-right evaluation pays for the guarantee. intermediate · May 16, 2026
  5. 05 Short-Circuit Evaluation as a Language Guarantee How && and || guarantee operand order, why that guarantee is a control-flow construct rather than an optimisation, and what nullable and optional chaining borrow from it. intermediate · Nov 14, 2024
  6. 06 Pattern Matching and the Exhaustiveness Check How a match expression is compiled into a decision tree, why exhaustiveness is decidable for constructors but not for guards, and what an unreachable arm costs. intermediate · May 31, 2026
  7. 07 Expression-Oriented Syntax and the Value of a Block What changes when every construct produces a value, how a block’s trailing expression becomes its result, and why the statement form survives in languages that removed it. intermediate · May 15, 2024
  8. 08 Desugaring Boundaries: Where Surface Syntax Ends How a language defines sugar by translation to a core form, why for-loops and async blocks are specified as rewrites, and what the rewrite leaks into error messages. advanced · Aug 4, 2026
  9. 09 Declaration Instantiation, Hoisting, and the Temporal Dead Zone How a scope is populated before its body runs, why var and function declarations are visible early while let and const are not, and what the dead zone prevents. advanced · Jun 23, 2025
  10. 10 Contextual Keywords and Extending a Grammar in Place How a language adds new syntax without reserving a word, why soft keywords are resolved by the parser rather than the lexer, and what the compatibility technique costs in ambiguity. advanced · Mar 10, 2026