macro_rules! pattern { ( ? $x:tt ) => { ... }; ( $f:tt ( $( $sub:tt )+ ) ) => { ... }; ( $f:tt () ) => { ... }; ( $f:tt ) => { ... }; }