(source: &'a str)
| 53 | #[allow(unused)] |
| 54 | impl<'a> Parser<'a> { |
| 55 | pub fn new(source: &'a str) -> Self { |
| 56 | let mut lexer = Lexer::new(source); |
| 57 | let cur_token = lexer.next_token(); |
| 58 | |
| 59 | let mut nested_expression_list = 0; |
| 60 | match cur_token.kind { |
| 61 | Kind::LeftParen | Kind::LeftBrace | Kind::LeftBracket => nested_expression_list += 1, |
| 62 | Kind::RightParen | Kind::RightBrace | Kind::RightBracket => nested_expression_list -= 1, |
| 63 | _ => {} |
| 64 | } |
| 65 | let identifiers_offset = |
| 66 | if matches!(cur_token.kind, Kind::Identifier | Kind::Match | Kind::Type) { |
| 67 | vec![(cur_token.start, cur_token.end, cur_token.to_string(source))] |
| 68 | } else { |
| 69 | vec![] |
| 70 | }; |
| 71 | let prev_token_end = 0; |
| 72 | |
| 73 | Self { |
| 74 | source, |
| 75 | lexer, |
| 76 | cur_token, |
| 77 | prev_token_end, |
| 78 | prev_nonwhitespace_token_end: prev_token_end, |
| 79 | nested_expression_list, |
| 80 | identifiers_start_offset: identifiers_offset, |
| 81 | } |
| 82 | } |
| 83 | |
| 84 | pub fn parse(&mut self) -> Result<Module, ParsingError> { |
| 85 | let node = self.start_node(); |
nothing calls this directly
no test coverage detected