From 0a9da3b7e846d269cf6ee17c66cb5e1bddc3015a Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Mon, 26 Dec 2016 08:52:15 -0700 Subject: [PATCH] Assert invalid characters in states --- src/lexer/mod.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/lexer/mod.rs b/src/lexer/mod.rs index d1c6d2d..35825a3 100644 --- a/src/lexer/mod.rs +++ b/src/lexer/mod.rs @@ -120,6 +120,10 @@ impl Lexer { self.state = State::Comment; self.advance(); } + + else { + assert!(false, "Invalid token character: {}", c); + } } /// Handle self.state == State::Identifier @@ -132,6 +136,9 @@ impl Lexer { *token = Some(Token::Identifier(self.value())); self.retract(); } + else { + assert!(false, "Invalid token character: {}", c); + } } fn state_hash(&mut self, c: char, token: &mut Option) { @@ -143,6 +150,9 @@ impl Lexer { self.advance(); *token = Some(Token::LeftVectorParen); } + else { + assert!(false, "Invalid token character: {}", c); + } } fn state_string(&mut self, c: char, token: &mut Option) { @@ -151,18 +161,23 @@ impl Lexer { *token = Some(Token::String(self.value())); } else { + assert!(false, "Invalid token character: {}", c); } } fn state_comment(&mut self, c: char, token: &mut Option) { if c.is_newline() { self.handle_newline(); + self.advance(); *token = Some(Token::Comment(self.value())); } else if c.is_eof() { *token = Some(Token::Comment(self.value())); + self.advance(); + } + else { + assert!(false, "Invalid token character: {}", c); } - self.advance(); } }