From e9b0eab38aaa6e0d5e58aeec49804ae5727750f8 Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Sat, 24 Dec 2016 09:59:35 -0700 Subject: [PATCH] Sort out advancing pointers for whitespace --- src/lexer/mod.rs | 6 ++++-- src/main.rs | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/lexer/mod.rs b/src/lexer/mod.rs index 793de3d..9df933e 100644 --- a/src/lexer/mod.rs +++ b/src/lexer/mod.rs @@ -59,7 +59,8 @@ impl Lexer { /// Advance the begin pointer to prepare for the next iteration. fn advance_begin(&mut self) { self.begin = self.input.index_after(self.forward); - println!("> begin={}", self.begin); + self.forward = self.begin; + println!("> begin={}, forward={}", self.begin, self.forward); } /// Get the substring between the two input indexes. This is the value to give to a new Token instance. @@ -89,12 +90,13 @@ impl Lexer { if c.is_newline() { self.line += 1; } - self.advance(); + self.advance_begin(); } } /// Handle self.state == State::Identifier fn state_identifier(&mut self, c: char, token: &mut Option) { + println!("Identifier! c='{}'", c); if c.is_identifier_subsequent() { // State in Identifier state. self.advance(); diff --git a/src/main.rs b/src/main.rs index 4f64fc2..9ea6d22 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,7 +1,7 @@ mod lexer; fn main() { - let lexer = lexer::Lexer::new(String::from("((abc))")); + let lexer = lexer::Lexer::new(String::from("((abc def + ghi))")); for t in lexer { println!("token = {}", t); }