macro_rules! alt_complete_sep {
($i:expr, $separator:ident, $e:ident | $($rest:tt)*) => { ... };
($i:expr, $separator:ident, $subrule:ident!( $($args:tt)*) | $($rest:tt)*) => { ... };
($i:expr, $separator:ident, $subrule:ident!( $($args:tt)* ) => { $gen:expr } | $($rest:tt)+) => { ... };
($i:expr, $separator:ident, $e:ident => { $gen:expr } | $($rest:tt)*) => { ... };
($i:expr, $separator:ident, $e:ident => { $gen:expr }) => { ... };
($i:expr, $separator:ident, $subrule:ident!( $($args:tt)* ) => { $gen:expr }) => { ... };
($i:expr, $separator:ident, $e:ident) => { ... };
($i:expr, $separator:ident, $subrule:ident!( $($args:tt)*)) => { ... };
}