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.rs36
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) {