From 3e41b5f3acb056e24460ea652e1753e917d8edb2 Mon Sep 17 00:00:00 2001 From: Leo dev Date: Mon, 8 Apr 2024 14:09:59 +0200 Subject: [PATCH] colorful printing --- src/lexer.rs | 2 +- src/main.rs | 2 +- src/parser.rs | 26 +++++++++++++++++++------- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/lexer.rs b/src/lexer.rs index 3834498..d4b0268 100644 --- a/src/lexer.rs +++ b/src/lexer.rs @@ -41,7 +41,7 @@ impl fmt::Debug for Token { impl fmt::Display for Token { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "(TokenType: {:?}, TokenValue: {}, Line: {}, Column {})", self.token_type, self.value, self.line, self.column) + write!(f, "(\x1b[33mTokenType:\x1b[0m \x1b[35m{:?}\x1b[0m, \x1b[33mTokenValue:\x1b[0m \x1b[32m\"{}\"\x1b[0m, \x1b[33mLine:\x1b[0m \x1b[36m{}\x1b[0m, \x1b[33mColumn:\x1b[0m \x1b[36m{}\x1b[0m)", self.token_type, self.value, self.line, self.column) } } diff --git a/src/main.rs b/src/main.rs index 6af6f8a..5c09e11 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,7 +4,7 @@ mod parser; use parser::Parser; fn main() { - let input = "int x"; + let input = "int mut x"; println!("\n\n\n\n"); let tokens = lex(input, false); let mut ast = Parser::new(tokens.clone()); diff --git a/src/parser.rs b/src/parser.rs index dab7f6a..9aac16b 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -3,8 +3,8 @@ use std::fmt; #[derive(Clone, Debug)] pub enum AstType { - FunctionDecleration, - VariableDecleration, + FunctionDeceleration, + VariableDeceleration, Other } @@ -15,7 +15,7 @@ pub struct Ast { impl fmt::Display for Ast { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "{:?}: [\n", self.ast_type)?; + write!(f, "\x1b[36m{:?}:\x1b[0m [\n", self.ast_type)?; for (i, token) in self.tokens.iter().enumerate() { if i < self.tokens.len() - 1 { write!(f, " {},\n", token)?; @@ -27,7 +27,19 @@ impl fmt::Display for Ast { } } - +impl fmt::Debug for Ast { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "{:?}: [\n", self.ast_type)?; + for (i, token) in self.tokens.iter().enumerate() { + if i < self.tokens.len() - 1 { + write!(f, " {:?},\n", token)?; + } else { + write!(f, " {:?}\n", token)?; + } + } + write!(f, "]") + } +} pub struct Parser { pub tokens: Vec, @@ -51,7 +63,7 @@ impl Parser { ast_res.tokens.push(self.tokens[index+1].clone()); ast_res.tokens.push(self.tokens[index+2].clone()); ast_res.tokens.push(self.tokens[index+3].clone()); - ast_res.ast_type = AstType::FunctionDecleration; + ast_res.ast_type = AstType::FunctionDeceleration; self.index += 3; } else { loop { @@ -63,11 +75,11 @@ impl Parser { self.index += 1; } else if ntk.token_type==TokenType::Identifier { ast_res.tokens.push(ntk.clone()); - ast_res.ast_type = AstType::VariableDecleration; + ast_res.ast_type = AstType::VariableDeceleration; self.index += 1; } else if ntk.token_type==TokenType::Keyword { ast_res.tokens.push(ntk.clone()); - ast_res.ast_type = AstType::VariableDecleration; + ast_res.ast_type = AstType::VariableDeceleration; self.index += 1; } else if ntk.token_type==TokenType::Angle { ast_res.tokens.push(ntk.clone());