pub struct ParserBuilder(pub GrammarBuilder);Tuple Fields§
§0: GrammarBuilderImplementations§
Source§impl ParserBuilder
impl ParserBuilder
pub fn parse_grammar( gb: GrammarBuilder, user_grammar_spec: &str, ) -> Result<GrammarBuilder, String>
Sourcepub fn plug_terminal<N, F>(self, name: N, pred: F) -> Self
pub fn plug_terminal<N, F>(self, name: N, pred: F) -> Self
Examples found in repository?
examples/ebnftree.rs (line 34)
19fn main() {
20 let grammar = r#"
21 expr := expr ('+'|'-') term | term ;
22 term := term ('*'|'/') factor | factor ;
23 factor := '-' factor | power ;
24 power := ufact '^' factor | ufact ;
25 ufact := ufact '!' | group ;
26 group := num | '(' expr ')' ;
27 "#;
28
29 let input = std::env::args().skip(1).
30 collect::<Vec<String>>().join(" ");
31
32 use std::str::FromStr;
33 let trificator = abackus::ParserBuilder::default()
34 .plug_terminal("num", |n| f64::from_str(n).is_ok())
35 .sexprificator(&grammar, "expr");
36
37 match trificator(&mut tokenizer(input.chars())) {
38 Ok(trees) => for t in trees { println!("{}", t.print()); },
39 Err(e) => println!("{:?}", e)
40 }
41}pub fn into_parser( self, start: &str, grammar: &str, ) -> Result<EarleyParser, String>
Source§impl ParserBuilder
impl ParserBuilder
pub fn treeficator<SI>( self, grammar: &str, start: &str, ) -> impl Fn(SI) -> Result<Vec<Tree>, String>
Sourcepub fn sexprificator<SI>(
self,
grammar: &str,
start: &str,
) -> impl Fn(SI) -> Result<Vec<Sexpr>, String>
pub fn sexprificator<SI>( self, grammar: &str, start: &str, ) -> impl Fn(SI) -> Result<Vec<Sexpr>, String>
Examples found in repository?
examples/ebnftree.rs (line 35)
19fn main() {
20 let grammar = r#"
21 expr := expr ('+'|'-') term | term ;
22 term := term ('*'|'/') factor | factor ;
23 factor := '-' factor | power ;
24 power := ufact '^' factor | ufact ;
25 ufact := ufact '!' | group ;
26 group := num | '(' expr ')' ;
27 "#;
28
29 let input = std::env::args().skip(1).
30 collect::<Vec<String>>().join(" ");
31
32 use std::str::FromStr;
33 let trificator = abackus::ParserBuilder::default()
34 .plug_terminal("num", |n| f64::from_str(n).is_ok())
35 .sexprificator(&grammar, "expr");
36
37 match trificator(&mut tokenizer(input.chars())) {
38 Ok(trees) => for t in trees { println!("{}", t.print()); },
39 Err(e) => println!("{:?}", e)
40 }
41}Trait Implementations§
Source§impl Default for ParserBuilder
impl Default for ParserBuilder
Source§fn default() -> ParserBuilder
fn default() -> ParserBuilder
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for ParserBuilder
impl !RefUnwindSafe for ParserBuilder
impl !Send for ParserBuilder
impl !Sync for ParserBuilder
impl Unpin for ParserBuilder
impl !UnwindSafe for ParserBuilder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more