Returns true if a fragment of type frag can be followed by any sort of
token. We use this (among other things) as a useful approximation
for when frag can be followed by a repetition like $(...)* or
$(...)+. In general, these can be a bit tricky to reason about,
so we adopt a conservative position that says that any fragment
specifier which consumes at most one token tree can be followed by
a fragment specifier (indeed, these fragments can be followed by
ANYTHING without fear of future compatibility hazards).
Returns true if frag can legally be followed by the token tok. For
fragments that can consume an unbounded number of tokens, tok
must be within a well-defined follow set. This is intended to
guarantee future compatibility: for example, without this rule, if
we expanded expr to include a new binary operator, we might
break macros that were relying on that binary operator as a
separator.
Try expanding the macro. Returns the index of the successful arm and its named_matches if it was successful,
and nothing if it failed. On failure, itβs the callers job to use track accordingly to record all errors
correctly.