11//! Simple hand-written ungrammar parser.
2+ #![ allow( clippy:: disallowed_types) ]
23use std:: collections:: HashMap ;
34
45use crate :: {
@@ -36,10 +37,7 @@ const DUMMY_RULE: Rule = Rule::Node(Node(!0));
3637impl Parser {
3738 fn new ( mut tokens : Vec < lexer:: Token > ) -> Parser {
3839 tokens. reverse ( ) ;
39- Parser {
40- tokens,
41- ..Parser :: default ( )
42- }
40+ Parser { tokens, ..Parser :: default ( ) }
4341 }
4442
4543 fn peek ( & self ) -> Option < & lexer:: Token > {
@@ -49,9 +47,7 @@ impl Parser {
4947 self . tokens . iter ( ) . nth_back ( n)
5048 }
5149 fn bump ( & mut self ) -> Result < lexer:: Token > {
52- self . tokens
53- . pop ( )
54- . ok_or_else ( || format_err ! ( "unexpected EOF" ) )
50+ self . tokens . pop ( ) . ok_or_else ( || format_err ! ( "unexpected EOF" ) )
5551 }
5652 fn expect ( & mut self , kind : TokenKind , what : & str ) -> Result < ( ) > {
5753 let token = self . bump ( ) ?;
@@ -75,10 +71,7 @@ impl Parser {
7571 let len = self . node_table . len ( ) ;
7672 let grammar = & mut self . grammar ;
7773 * self . node_table . entry ( name. clone ( ) ) . or_insert_with ( || {
78- grammar. nodes . push ( NodeData {
79- name,
80- rule : DUMMY_RULE ,
81- } ) ;
74+ grammar. nodes . push ( NodeData { name, rule : DUMMY_RULE } ) ;
8275 Node ( len)
8376 } )
8477 }
@@ -127,11 +120,7 @@ fn rule(p: &mut Parser) -> Result<Rule> {
127120 let rule = seq_rule ( p) ?;
128121 alt. push ( rule)
129122 }
130- let res = if alt. len ( ) == 1 {
131- alt. pop ( ) . unwrap ( )
132- } else {
133- Rule :: Alt ( alt)
134- } ;
123+ let res = if alt. len ( ) == 1 { alt. pop ( ) . unwrap ( ) } else { Rule :: Alt ( alt) } ;
135124 Ok ( res)
136125}
137126
@@ -142,11 +131,7 @@ fn seq_rule(p: &mut Parser) -> Result<Rule> {
142131 while let Some ( rule) = opt_atom_rule ( p) ? {
143132 seq. push ( rule)
144133 }
145- let res = if seq. len ( ) == 1 {
146- seq. pop ( ) . unwrap ( )
147- } else {
148- Rule :: Seq ( seq)
149- } ;
134+ let res = if seq. len ( ) == 1 { seq. pop ( ) . unwrap ( ) } else { Rule :: Seq ( seq) } ;
150135 Ok ( res)
151136}
152137
@@ -175,10 +160,7 @@ fn opt_atom_rule(p: &mut Parser) -> Result<Option<Rule>> {
175160 p. bump ( ) ?;
176161 p. bump ( ) ?;
177162 let rule = atom_rule ( p) ?;
178- let res = Rule :: Labeled {
179- label,
180- rule : Box :: new ( rule) ,
181- } ;
163+ let res = Rule :: Labeled { label, rule : Box :: new ( rule) } ;
182164 return Ok ( Some ( res) ) ;
183165 }
184166 _ => ( ) ,
0 commit comments