macro_rules! p {
() => { ... };
(: $y:expr) => { ... };
(: $y:expr,) => { ... };
(: $y:expr;) => { ... };
(: $y:expr, $($x:tt)+) => { ... };
(: $y:expr; $($x:tt)+) => { ... };
(_ $y:expr) => { ... };
(_ $y:expr,) => { ... };
(_ $y:expr;) => { ... };
(_ $y:expr, $($x:tt)+) => { ... };
(_ $y:expr; $($x:tt)+) => { ... };
($y:expr) => { ... };
($y:expr,) => { ... };
($y:expr;) => { ... };
($y:expr, $($x:tt)+) => { ... };
($y:expr; $($x:tt)+) => { ... };
}