From c4a401a1d1582e3df5869184036cf11da506018b Mon Sep 17 00:00:00 2001 From: ghostlyzsh Date: Thu, 1 Aug 2024 22:49:49 -0500 Subject: [PATCH] single-line comments --- kabel/src/lexer.rs | 11 +++++++++-- kabel/src/macros.rs | 5 +---- kabel/src/parser.rs | 30 +++++++++++++++++++++++------- 3 files changed, 33 insertions(+), 13 deletions(-) diff --git a/kabel/src/lexer.rs b/kabel/src/lexer.rs index 56973153c5b8f5e7254020acc36390e4cc7382e3..3e0a3109f56d47cce0a8f486164f716325fc2c9f 100644 --- a/kabel/src/lexer.rs +++ b/kabel/src/lexer.rs @@ -48,8 +48,15 @@ impl Lexer { self.start = self.current; } b'/' => { - self.output.push(token!(self, TokenType::Slash)); - self.start = self.current; + if self.peek() == b'/' { + while self.peek() != b'\n' && self.current < self.input.len() { + self.read_char(); + } + self.start = self.current; + } else { + self.output.push(token!(self, TokenType::Slash)); + self.start = self.current; + } } b'(' => { self.output.push(token!(self, TokenType::LeftParen)); diff --git a/kabel/src/macros.rs b/kabel/src/macros.rs index c1b513564a0ce53163f112f0290b30dd318a09cf..3bbb766b7fce56d953b2ea97db640b25d845d2c1 100644 --- a/kabel/src/macros.rs +++ b/kabel/src/macros.rs @@ -30,10 +30,7 @@ macro_rules! unexpected_token { ($self:expr, $message:expr, $token:expr) => { $crate::error::KabelError::new( $crate::error::ErrorKind::UnexpectedToken, - format!( - $message, - $self.text[$token.start..$token.end].to_string() - ), + format!($message, $self.text[$token.start..$token.end].to_string()), $token.line, $token.column, $self.text[$token.line_start..$token.end].to_string(), diff --git a/kabel/src/parser.rs b/kabel/src/parser.rs index 09c312993b275ab1d4d15d25612a96df38f6852a..3ec8d8dba8f840b20e0e840a54f7b80feb095a90 100644 --- a/kabel/src/parser.rs +++ b/kabel/src/parser.rs @@ -75,7 +75,11 @@ impl Parser { if let TokenType::RightParen = right_paren.token_type { let block = self.block()?; return Ok(AST { - ast_type: ASTType::Function(Box::new(lit!(Ident, name, ident)), expressions, Box::new(block.clone())), + ast_type: ASTType::Function( + Box::new(lit!(Ident, name, ident)), + expressions, + Box::new(block.clone()), + ), start: function_ident.start, end: block.end, line: function_ident.line, @@ -88,7 +92,11 @@ impl Parser { return Err(unexpected_token!(self, "Expected ( found {}", left_paren)); } } else { - return Err(unexpected_token!(self, "Expected identifier found {}", ident)); + return Err(unexpected_token!( + self, + "Expected identifier found {}", + ident + )); } } @@ -169,7 +177,11 @@ impl Parser { column: if_ident.column, }); } else { - return Err(unexpected_token!(self, "Expected if found {}", else_if_ident)); + return Err(unexpected_token!( + self, + "Expected if found {}", + else_if_ident + )); } } return Err(unexpected_token!(self, "Unexpected token {}", else_ident)); @@ -265,7 +277,11 @@ impl Parser { return Err(unexpected_token!(self, "Expected = found {}", equal)); } } else { - return Err(unexpected_token!(self, "Expected identifier found {}", ident)); + return Err(unexpected_token!( + self, + "Expected identifier found {}", + ident + )); } } @@ -741,10 +757,10 @@ pub enum ASTType { Program(Vec), Function(Box, Vec, Box), // name, args, block - Loop(Box), // block - While(Box, Box), // condition, block + Loop(Box), // block + While(Box, Box), // condition, block If(Box, Box, Option>), // condition, block, else/else if - Block(Vec), // statements + Block(Vec), // statements Decl(Box, Box), // identifier, expression Binary(Box, BinOp, Box),