topdown-rs 0.1.0

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