Skip to main content

Module body

Module body 

Source
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.