Expand description
Recursive-descent parser: laid-out token stream → typed AST (src/ast.rs).
Error recovery is per-declaration: an unparseable declaration becomes
Decl::Unknown plus a diagnostic, and parsing continues at the next
virtual semicolon. The parser never panics and never aborts the file.