From 35e8cc813e0e4d9efeb1e3a04316d53e434b1f8e Mon Sep 17 00:00:00 2001 From: bog Date: Fri, 1 Mar 2024 18:11:50 +0100 Subject: [PATCH] :sparkles: add comments. --- src/ast/lexer.rs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/ast/lexer.rs b/src/ast/lexer.rs index e662266..b1e2666 100644 --- a/src/ast/lexer.rs +++ b/src/ast/lexer.rs @@ -231,6 +231,20 @@ impl Lexer { self.cursor += 1; } } + + fn skip_comments(&mut self) { + while let Some('#') = self.text.chars().nth(self.cursor) { + loop { + if let Some('\n') + = self.text.chars().nth(self.cursor) { + break; + } + + self.cursor += 1; + } + self.skip_spaces(); + } + } } impl Iterator for Lexer { @@ -238,6 +252,7 @@ impl Iterator for Lexer { fn next(&mut self) -> Option { self.skip_spaces(); + self.skip_comments(); if let Some(token) = self.scan_keyword("true") { self.cursor = token.position; @@ -388,4 +403,18 @@ mod test { Ok(()) } + + #[test] + fn test_comments() -> Result<(), error::AstError> { + let mut lex = Lexer::new(); + + let res = lexer_run(&mut lex, + " # aze \n 4 ")?; + + assert_eq!(1, res.len()); + assert_eq!(Node::Int(4), + *res.get(0).unwrap()); + + Ok(()) + } }