diff --git a/src/lexer/mod.rs b/src/lexer/mod.rs index 8f4bb09..d1c6d2d 100644 --- a/src/lexer/mod.rs +++ b/src/lexer/mod.rs @@ -139,6 +139,10 @@ impl Lexer { self.advance(); *token = Some(Token::Boolean(c.is_boolean_true())); } + else if c.is_left_paren() { + self.advance(); + *token = Some(Token::LeftVectorParen); + } } fn state_string(&mut self, c: char, token: &mut Option) { @@ -208,6 +212,7 @@ mod tests { fn lexer_finds_parens() { check_single_token("(", Token::LeftParen(String::from("("))); check_single_token(")", Token::RightParen(String::from(")"))); + check_single_token("#(", Token::LeftVectorParen); } #[test] diff --git a/src/lexer/token.rs b/src/lexer/token.rs index ab66c69..c56b6ca 100644 --- a/src/lexer/token.rs +++ b/src/lexer/token.rs @@ -6,6 +6,7 @@ #[derive(PartialEq)] pub enum Token { LeftParen(String), + LeftVectorParen, RightParen(String), Dot, Identifier(String),