Use Earley's algorithm to retrieve all possible parses of an input given a grammar.
Example: ``` fn main() { use std::str::FromStr;
let grammar = r#"
expr := expr ('+'|'-') term | term ;
term := term ('*'|'/') factor | factor ;
factor := '-' factor | power ;
power := ufact '^' factor | ufact ;
ufact := ufact '!' | group ;
group := num | '(' expr ')' ;
"#;
let input = "3.2 ^ 3 - (8 / 4)!";
let parser = earlgrey::ParserBuilder::new()
.plug_terminal("num", |n| f64::from_str(n).is_ok())
.treeficator("expr", &grammar);
for tree in parser(&mut Tokenizer::from_str(input)).unwrap() {
tree[0].print();
}
} ```