macro_rules! do_parse {
($i:expr, ( $($rest:expr),* )) => { ... };
($i:expr, $e:ident >> $($rest:tt)*) => { ... };
($i:expr, $submac:ident!( $($args:tt)* ) >> $($rest:tt)*) => { ... };
($i:expr, $field:ident : $e:ident >> $($rest:tt)*) => { ... };
($i:expr, $field:ident : $submac:ident!( $($args:tt)* ) >> $($rest:tt)*) => { ... };
}