references are binding/bound variables (beyond those appearing in the
define-language itself)
Specifically,
- change define-language (and friends) so they record binding and
source location information for non-terminals in the identifier that
names the language (and to expand to disappeared bindings);
- change rewrite-side-conditions/check-errs so that it accepts the
language identifier (instead of a list of non-terminals) and returns
one extra piece of syntax: that extra piece of syntax is just
(void), but it has a bunch of disappeared uses on it that connect
to the identifiers added to define-language;
- similarly, adjust (term ...) so that it puts disappeared uses for
non-terminal references.