From 7a6c2b91d1980a2897c4ec6977c5dc411601d2d5 Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Sun, 2 Sep 2018 14:05:35 -0700 Subject: [PATCH] [lexer] Bit of code cleanup in Lexer --- lexer/src/lib.rs | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/lexer/src/lib.rs b/lexer/src/lib.rs index 50165c2..8741851 100644 --- a/lexer/src/lib.rs +++ b/lexer/src/lib.rs @@ -26,21 +26,26 @@ impl Lexer where T: Iterator { Lexer { input: input.peekable(), line: 0, - offset: 0 + offset: 0, + } + } + + fn next(&mut self) -> Option { + let out = self.input.next(); + out + } + + fn handle_whitespace(&mut self, c: char) { + if c == '\n' { + self.line += 1; + self.offset = 1; + } else { + self.offset += 1; } } } impl Lexer where T: Iterator { - fn handle_whitespace(&mut self, c: char) { - if c == '\n' { - self.line += 1; - self.offset = 0; - } - else { - self.offset += 1; - } - } } impl Iterator for Lexer where T: Iterator { @@ -67,17 +72,17 @@ impl Iterator for Lexer where T: Iterator { match result { StateResult::Continue => { buffer.push(c); - self.input.next(); + self.next(); }, StateResult::Advance { to } => { buffer.push(c); - self.input.next(); + self.next(); state = to; }, StateResult::Emit(token, resume) => { if resume == Resume::AtNext { buffer.push(c); - self.input.next(); + self.next(); } out = Some(Ok(Lex::new(token, &buffer, self.line, self.offset))); break; @@ -86,7 +91,7 @@ impl Iterator for Lexer where T: Iterator { panic!("{}", msg); } } - } + }, } } out