macro_rules! grammar {
(start $s:ident; $($tail:tt)+) => { ... };
(with builder $builder:ident | rule $left:ident -> $($tail:tt)+) => { ... };
(with builder $builder:ident | ) => { ... };
(with builder $builder:ident in rule | epsilon ; $($tail:tt)*) => { ... };
(with builder $builder:ident in rule | $n:ident, $($tail:tt)+) => { ... };
(with builder $builder:ident in rule | $t:expr, $($tail:tt)+) => { ... };
(with builder $builder:ident in rule | $n:ident; $($tail:tt)*) => { ... };
(with builder $builder:ident in rule | $t:expr; $($tail:tt)*) => { ... };
}