From 1332ad71958ad4b8ae16da69652bbe716f99ec2b Mon Sep 17 00:00:00 2001 From: caelansar <819711623@qq.com> Date: Sat, 13 Jul 2024 19:36:52 +0800 Subject: [PATCH] perf: do not need Token::Comment anymore --- src/lexer/mod.rs | 12 ++++++++++-- src/parser/mod.rs | 3 +-- src/token/mod.rs | 2 -- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/lexer/mod.rs b/src/lexer/mod.rs index 1d081de..bf07372 100644 --- a/src/lexer/mod.rs +++ b/src/lexer/mod.rs @@ -175,8 +175,16 @@ impl<'a> Lexer<'a> { Token::SlashEq } Some('/') => { - self.skip_comment(); - Token::Comment + self.read_char(); + // a comment goes until the end of the line. + while let Some(ch) = self.ch { + if ch == '\n' { + break; + } + self.read_char(); + } + // do not need to call read_char in this recursion + return self.next_token(); } _ => Token::from_str(token.to_string().as_str()).unwrap(), }, diff --git a/src/parser/mod.rs b/src/parser/mod.rs index b973a32..cb5610e 100644 --- a/src/parser/mod.rs +++ b/src/parser/mod.rs @@ -778,8 +778,7 @@ impl<'a> Parser<'a> { .get(&self.current_token) { Some(parse_fn) => parse_fn(self), - None if self.current_token_is(&token::Token::Comment) => return None, - _ => { + None => { self.no_prefix_parse_fn_error(&self.current_token.clone()); return None; } diff --git a/src/token/mod.rs b/src/token/mod.rs index 1dd4b9f..aa73058 100644 --- a/src/token/mod.rs +++ b/src/token/mod.rs @@ -46,7 +46,6 @@ pub enum Token { Break, Continue, Return, - Comment, And, Or, LeftShift, @@ -166,7 +165,6 @@ impl fmt::Display for Token { Token::For => write!(f, "for"), Token::Return => write!(f, "return"), Token::Illegal => write!(f, "ILLEGAL"), - Token::Comment => write!(f, "//comment"), Token::Break => write!(f, "break"), Token::Continue => write!(f, "continue"), Token::And => write!(f, "&&"),