SwiftSyntax: for good and evil
summary
Explains how SwiftSyntax (16 modules) parses a concrete syntax tree and how the demo builds a small REPL called ripple that uses SwiftSyntax parser, operator table foldAll from SwiftOperators to resolve precedence, and SyntaxVisitor / SyntaxAnyVisitor to walk nodes; adds ParserDiagnosticsGenerator for errors and a SyntaxRewriter preprocessor to inject missing types. Interpreter evaluates ints, floats, strings, booleans, variables and recursion (Fibonacci) but crashes on unknown operators until handled and ultimately ends up dynamically typed — more JavaScript‑like than Swift.
AI-written summary · about
chapters (14)
- 0:00Introduction
- 2:11SwiftSyntax uniqueness
- 3:38Simple interpreter
- 6:24Evaluating expressions
- 8:31Testing with Ripple
- 9:35Syntax errors and diagnostics
- 12:48Fixing crashes with operators
- 14:55Detecting unsupported syntax
- 16:21Better errors with diagnostics
- 18:50Variables and types
- 20:14Expanding interpreter
- 21:39Rejecting type annotations
- 23:24Testing type-free Swift
- 25:53Final adjustments
related talks
22mImproving Swift Tools with libSyntax
33mMaking Your Own Tools Using SwiftSyntax
06mFundamentals for Building Convenience with SwiftSyntax
28mSwiftly Swift manipulation... with Swift
27mAST Meta-programming
29mSyntax Tree
38mCompilers aren’t magic, so let’s build one in Swift
27mParsing, Compiling, and Static Metaprogramming
