macro_rules! m {
(return $r:expr ;) => { ... };
(let $p:pat = $e:expr ; $($r:tt)*) => { ... };
(_ <- $x:expr ; $($r:tt)*) => { ... };
($binding:ident <- $x:expr ; $($r:tt)*) => { ... };
($e:expr ; $($a:tt)*) => { ... };
($a:expr) => { ... };
}