macro_rules! enum_parser {
( $enum_name:ident, $($rest:tt)* ) => { ... };
(
input_lifetime = $inp:lifetime;
$enum_name:ident <$param:tt>,
$($rest:tt)*
) => { ... };
( @variants $enum_name:ident, $parser:ident $(,)? ) => { ... };
(
@variants $enum_name:ident, $parser:ident,
$var_name:ident { $($var_fields:tt)* } = |$var_arg:ident| { $($var_body:tt)* }
$(,$($rest:tt)*)?
) => { ... };
(
@variants $enum_name:ident, $parser:ident,
$var_name:ident ( $($var_fields:tt)* ) = |$var_arg:ident| { $($var_body:tt)* }
$(, $($rest:tt)* )?
) => { ... };
(
@variants $enum_name:ident, $parser:ident,
$var_name:ident { $($var_fields:tt)* } = [ $($var_args:tt)* ]
$(, $($rest:tt)* )?
) => { ... };
(
@variants $enum_name:ident, $parser:ident,
$var_name:ident ( $($var_fields:tt)* ) = [ $($var_args:tt)* ]
$(, $($rest:tt)* )?
) => { ... };
(
@variants $enum_name:ident, $parser:ident,
$var_name:ident = [ $($var_args:tt)* ]
$(, $($rest:tt)* )?
) => { ... };
(
@variants $enum_name:ident, $parser:ident,
$var_name:ident = |$var_arg:ident| { $($var_body:tt)* }
$(, $($rest:tt)* )?
) => { ... };
}