Module rustc_expand::mbe::macro_rules
source · Structs
Enums
Constants
Functions
Checks that the lhs contains no repetition which could match an empty token
tree, because then the matcher would hang indefinitely.
Converts a macro item into a syntax extension.
Expands the rules based macro defined by
lhses
and rhses
for a given
input arg
.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.Generates an appropriate parsing failure message. For EOF, this is “unexpected end…”. For
other tokens, this is “unexpected token…”.