diff options
Diffstat (limited to 'src/parser/event_parser/parser.rs')
-rw-r--r-- | src/parser/event_parser/parser.rs | 36 |
1 files changed, 12 insertions, 24 deletions
diff --git a/src/parser/event_parser/parser.rs b/src/parser/event_parser/parser.rs index 04ef4fb28..07e3ccc23 100644 --- a/src/parser/event_parser/parser.rs +++ b/src/parser/event_parser/parser.rs | |||
@@ -60,10 +60,6 @@ impl<'t> Parser<'t> { | |||
60 | Some(self.raw_tokens[idx].kind) | 60 | Some(self.raw_tokens[idx].kind) |
61 | } | 61 | } |
62 | 62 | ||
63 | pub(crate) fn current_is(&self, kind: SyntaxKind) -> bool { | ||
64 | self.current() == Some(kind) | ||
65 | } | ||
66 | |||
67 | pub(crate) fn bump(&mut self) -> Option<SyntaxKind> { | 63 | pub(crate) fn bump(&mut self) -> Option<SyntaxKind> { |
68 | let kind = self.current()?; | 64 | let kind = self.current()?; |
69 | match kind { | 65 | match kind { |
@@ -76,31 +72,23 @@ impl<'t> Parser<'t> { | |||
76 | Some(kind) | 72 | Some(kind) |
77 | } | 73 | } |
78 | 74 | ||
79 | pub(crate) fn expect(&mut self, kind: SyntaxKind) -> Result<(), ()> { | 75 | pub(crate) fn curly_block<F: FnOnce(&mut Parser)>(&mut self, f: F) -> bool { |
80 | if kind == self.current().ok_or(())? { | ||
81 | self.bump(); | ||
82 | Ok(()) | ||
83 | } else { | ||
84 | Err(()) | ||
85 | } | ||
86 | } | ||
87 | |||
88 | pub(crate) fn curly_block<F: FnOnce(&mut Parser)>(&mut self, f: F) -> Result<(), ()> { | ||
89 | let level = self.curly_level; | 76 | let level = self.curly_level; |
90 | self.expect(L_CURLY)?; | 77 | if !self.expect(L_CURLY) { |
78 | return false | ||
79 | } | ||
91 | f(self); | 80 | f(self); |
92 | assert!(self.curly_level > level); | 81 | assert!(self.curly_level > level); |
93 | if self.expect(R_CURLY).is_ok() { | 82 | if !self.expect(R_CURLY) { |
94 | return Ok(()); | 83 | self.start(ERROR); |
95 | } | 84 | while self.curly_level > level { |
96 | self.start(ERROR); | 85 | if self.bump().is_none() { |
97 | while self.curly_level > level { | 86 | break; |
98 | if self.bump().is_none() { | 87 | } |
99 | break; | ||
100 | } | 88 | } |
89 | self.finish(); | ||
101 | } | 90 | } |
102 | self.finish(); | 91 | true |
103 | Ok(()) //??? | ||
104 | } | 92 | } |
105 | 93 | ||
106 | fn event(&mut self, event: Event) { | 94 | fn event(&mut self, event: Event) { |