From ed14b6fa3b05558e5b3320470d84282c39012d4c Mon Sep 17 00:00:00 2001 From: mainak55512 Date: Sat, 12 Oct 2024 17:29:51 +0530 Subject: [PATCH] updated err messages --- src/main.rs | 8 +++++++- src/parser.rs | 8 ++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index dd18af7..cec026e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -32,7 +32,13 @@ fn main() { let cli = Cli::parse(); let content = if let Some(load) = cli.load.as_deref() { - fs::read_to_string(load).expect("Could't read file content") + match fs::read_to_string(load) { + Ok(val) => val, + Err(_e) => { + println!("Couldn't read content from file"); + std::process::exit(1); + } + } } else { io::stdin() .lock() diff --git a/src/parser.rs b/src/parser.rs index 3c3246e..cb31f7b 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -87,8 +87,16 @@ fn parse_binary_expr(token_array: &mut VecDeque) -> ASTNode { pub fn parse_ast(token_array: &mut VecDeque) -> ASTNode { let mut left = parse_binary_expr(token_array); + if token_array.len() > 0 && token_array[0].val != "&&" && token_array[0].val != "||" { + println!("Query is invalid"); + std::process::exit(1); + } while token_array.len() > 0 && (token_array[0].val == "&&" || token_array[0].val == "||") { let operator = token_array.pop_front().expect("Empty operator").val; + if token_array.len() <= 0 { + println!("Query is invalid"); + std::process::exit(1); + } let right = parse_binary_expr(token_array); left = ASTNode::BinaryExpr(Box::new(BinaryExpr { kind: LiteralType::LOGICAL_EXPR,