aboutsummaryrefslogtreecommitdiff
path: root/src/parser/event_parser/parser.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser/event_parser/parser.rs')
-rw-r--r--src/parser/event_parser/parser.rs15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/parser/event_parser/parser.rs b/src/parser/event_parser/parser.rs
index 9592b90c9..0e4d44b79 100644
--- a/src/parser/event_parser/parser.rs
+++ b/src/parser/event_parser/parser.rs
@@ -34,10 +34,14 @@ impl<'t> Parser<'t> {
34 } 34 }
35 35
36 pub(crate) fn into_events(self) -> Vec<Event> { 36 pub(crate) fn into_events(self) -> Vec<Event> {
37 assert!(self.pos == self.non_ws_tokens.len()); 37 assert!(self.is_eof());
38 self.events 38 self.events
39 } 39 }
40 40
41 pub(crate) fn is_eof(&self) -> bool {
42 self.pos == self.non_ws_tokens.len()
43 }
44
41 pub(crate) fn start(&mut self, kind: SyntaxKind) { 45 pub(crate) fn start(&mut self, kind: SyntaxKind) {
42 self.event(Event::Start { kind }); 46 self.event(Event::Start { kind });
43 } 47 }
@@ -46,6 +50,15 @@ impl<'t> Parser<'t> {
46 self.event(Event::Finish); 50 self.event(Event::Finish);
47 } 51 }
48 52
53 pub(crate) fn bump(&mut self) -> Option<SyntaxKind> {
54 if self.is_eof() {
55 return None;
56 }
57 let idx = self.non_ws_tokens[self.pos].0;
58 self.pos += 1;
59 Some(self.raw_tokens[idx].kind)
60 }
61
49 fn event(&mut self, event: Event) { 62 fn event(&mut self, event: Event) {
50 self.events.push(event) 63 self.events.push(event)
51 } 64 }