From 1ad13b2693829083ee26f7f96cd6821c49fde957 Mon Sep 17 00:00:00 2001 From: Charlie Root Date: Thu, 27 Mar 2025 09:33:33 +0100 Subject: [PATCH] main.rs: simplify tokenizer, add test --- src/main.rs | 45 +++++++++++++++++---------------------------- 1 file changed, 17 insertions(+), 28 deletions(-) diff --git a/src/main.rs b/src/main.rs index 4bfbcd3..67fffcc 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,6 @@ use std::io; -#[derive(Debug)] +#[derive(Debug, PartialEq, Eq)] enum Symbol { Number, @@ -44,38 +44,27 @@ fn get_user_input() -> io::Result { Ok(buffer) } +#[test] +fn try_tokenizing() { + let tokenized_input = tokenize("1 + 1").unwrap(); + let result = vec![Symbol::Number, Symbol::Add, Symbol::Number]; + assert!(tokenized_input == result, "1 + 1 not working"); +} + fn tokenize(input: &str) -> Result, ParseError> { let mut tokens: Vec = vec![]; for (i, c) in input.chars().enumerate() { match c { - ' ' => { - continue; - } - '(' => { - tokens.push(Symbol::LeftBracket); - } - ')' => { - tokens.push(Symbol::RightBracket); - } - '+' => { - tokens.push(Symbol::Add); - } - '-' => { - tokens.push(Symbol::Sub); - } - '*' => { - tokens.push(Symbol::Mul); - } - '/' => { - tokens.push(Symbol::Div); - } - '0'..='9' => { - tokens.push(Symbol::Number); - } - '\n' => { - break; - } + ' ' => continue, + '(' => tokens.push(Symbol::LeftBracket), + ')' => tokens.push(Symbol::RightBracket), + '+' => tokens.push(Symbol::Add), + '-' => tokens.push(Symbol::Sub), + '*' => tokens.push(Symbol::Mul), + '/' => tokens.push(Symbol::Div), + '0'..='9' => tokens.push(Symbol::Number), + '\n' => break, _ => return Err(ParseError::WrongTokenError { pos: i }), } }