macro_rules! rules {
(
$(
$v:vis $name:ident $( ($id:expr) )? = ($symbol:ident,$rules:ident) => $b:block
)*
) => { ... };
(@I $v:vis $name:ident($id:expr) = ($symbol:ident,$rules:ident) => $b:block) => { ... };
(@I $v:vis $name:ident = ($symbol:ident,$rules:ident) => $b:block) => { ... };
}