parse performs tokenization, CST construction, top-level for rule
extraction, and parser-level validation before returning Parsed.
use ddlint::parse;
let source = "input relation R(x: u32);";
let parsed = parse(source);
assert!(parsed.errors().is_empty());
assert_eq!(parsed.root().relations().len(), 1);
Parsed also exposes parse-time semantic rules and the recovered parse-tree
root so downstream stages can work with structured syntax data.