1 #[macro_use]
2 extern crate pest_derive;
3 extern crate pest;
4 
5 use pest::Parser;
6 
7 #[derive(Parser)]
8 #[grammar = "../examples/help-menu.pest"]
9 struct HelpMenuGrammar;
10 
11 const INPUT: &str = r"cli help
12 cli positional-command <required-single-argument> [optional-single-argument]
13 cli [choice | of | one | or | none | of | these | options]
14 cli <choice | of | one | of | these | options>
15 cli [nesting | <is | ok>]
16 ";
17 
main()18 fn main() {
19     HelpMenuGrammar::parse(Rule::HelpMenu, INPUT)
20         .expect("Error parsing file")
21         .next()
22         .expect("Infallible")
23         .into_inner()
24         .filter(|pair| Rule::Command == pair.as_rule())
25         .for_each(|pair| {
26             println!("{:#?}", pair);
27         });
28 }
29