macro_rules! gen_backward_body {
($src:expr ;) => { ... };
($src:expr ; (tail, $first:ident)) => { ... };
($src:expr ; ($($modifier:ident $(($modifier_arg:expr))?)?, $first:ident) $(, ($($rest_modifier:ident $(($rest_modifier_arg:expr))?)?, $rest:ident))*) => { ... };
}