8.9 Debugging and inspection tools
The following special forms are for debugging syntax classes.
Returns a list of the syntax class’s attributes. Each attribute entry
consists of the attribute’s name and ellipsis depth.
Runs the parser for the syntax class (parameterized by the
arg-exprs) on the syntax object produced by
stx-expr. On success, the result is a list of vectors
representing the attribute bindings of the syntax class. Each vector
contains the attribute name, depth, and associated value. On failure,
the result is some internal representation of the failure.
Tries to match stx-expr against the S-patterns. If
matching succeeds, the symbol 'success is
returned. Otherwise, an S-expression describing the failure is returned.
The failure S-expression shows both the raw set of failures (unsorted)
and the failures with maximal progress. The maximal failures are
divided into equivalence classes based on their progress (progress is
a partial order); that is, failures within an equivalence class have
the same progress and, in principle, pinpoint the same term as the
problematic term. Multiple equivalence classes only arise from
~parse patterns (or equivalently, #:with clauses)
that match computed terms or ~fail (#:fail-when,
etc) clauses that allow a computed term to be pinpointed.