Expand description
The capture-body parser (§7.3, ADR-072).
A template capture’s body is a full parser expression:
{items:csv(int)}, {x:optional(int)}, {s:sep("-", int)},
{g:choice(A: `{n:int}`)}. §7.7’s own monkey example writes the first
one, so “atomics only” is not a smaller language — it is a language that
cannot run the design document’s text.
Each capture’s body is parsed here, in its own right: no later pass rescans the template, and no unrecognized name has a default.
This is a hand-written parser and not a call back into praxis-parser.
ADR-023 fixes the dependency direction — praxis-input-parser must not
depend on the ordinary grammar — and the argument grammar is shared with the
HIR bridge through crate::call::build_call instead, so the two cannot
drift.