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()18fn 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