MCPcopy Create free account
hub / github.com/Glyphack/enderpy / new

Method new

parser/src/parser/parser.rs:55–82  ·  view source on GitHub ↗
(source: &'a str)

Source from the content-addressed store, hash-verified

53#[allow(unused)]
54impl<'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();

Callers

nothing calls this directly

Calls 1

next_tokenMethod · 0.80

Tested by

no test coverage detected