topdown/
macros.rs

1#[macro_export]
2macro_rules! run_parser {
3    () =>({});
4    ($a:expr) => ($a);
5    ($a:ident >> $x:expr) => ($a.accept($x));
6    ($a:ident >> $x:expr, |$i:ident| $b:expr) => ($a.accept($x).map(|$i| $b));
7    ($a:ident >> $x:expr, |$i:ident| $b:expr, $(|$j:ident|$c:expr),*) => ($a.accept($x).and_then(|$i| {run_parser!($a >> $b, $(|$j| $c),*)}));
8}
9