From edd0bee1e33c0605102c93d4e404948fec30429a Mon Sep 17 00:00:00 2001 From: RonaldsonBellande Date: Mon, 21 Oct 2024 03:14:41 -0400 Subject: [PATCH] latest pushes --- bellos_scripts/control_structures.bellos | 102 ++-- bellos_scripts/file_operations.bellos | 18 +- executable/bellos | Bin 684936 -> 646432 bytes src/bellos.rs | 3 +- src/executor_processes/executor.rs | 64 +-- src/executor_processes/processes.rs | 472 +++++++++++------- src/interpreter/interpreter.rs | 263 ---------- src/interpreter_logic/interpreter.rs | 210 ++++++++ src/interpreter_logic/logic.rs | 210 ++++++++ src/{interpreter => interpreter_logic}/mod.rs | 1 + src/lexer/lexer.rs | 24 +- src/parser/parser.rs | 158 ++++-- src/shell/mod.rs | 1 + src/shell/shell.rs | 272 ++++++++++ src/utilities/utilities.rs | 52 +- 15 files changed, 1248 insertions(+), 602 deletions(-) delete mode 100644 src/interpreter/interpreter.rs create mode 100644 src/interpreter_logic/interpreter.rs create mode 100644 src/interpreter_logic/logic.rs rename src/{interpreter => interpreter_logic}/mod.rs (58%) create mode 100644 src/shell/mod.rs create mode 100644 src/shell/shell.rs diff --git a/bellos_scripts/control_structures.bellos b/bellos_scripts/control_structures.bellos index 82df9d4..46498e4 100644 --- a/bellos_scripts/control_structures.bellos +++ b/bellos_scripts/control_structures.bellos @@ -1,52 +1,80 @@ #!/usr/bin/env bellos -# File: control_structures.bellos +# File: control_structures_with_seq.bellos -# Demonstrating if-else statements +# 1. Simple echo and variable assignment echo "Demonstrating if-else statements:" x=10 -If [ $x -gt 5 ] Then - echo "x is greater than 5" -Else - echo "x is not greater than 5" -Fi -# Demonstrating nested if-else +# 2. If-else statement +if [ $x -gt 5 ] +then + echo "x is greater than 5" +else + echo "x is not greater than 5" +fi + +# 3. Nested if-else echo "Demonstrating nested if-else:" y=20 -If [ $x -gt 5 ] Then - If [ $y -gt 15 ] Then +if [ $x -gt 5 ] +then + if [ $y -gt 15 ] + then echo "x is greater than 5 and y is greater than 15" - Else + else echo "x is greater than 5 but y is not greater than 15" - Fi -Else + fi +else echo "x is not greater than 5" -Fi +fi -# Demonstrating while loop +# 4. While loop echo "Demonstrating while loop:" counter=0 -While [ $counter -lt 5 ] Do +while [ $counter -lt 5 ] +do echo "Counter: $counter" counter=$((counter + 1)) -Done +done -# Demonstrating for loop +# 5. For loop echo "Demonstrating for loop:" -For i In 1 2 3 4 5 Do +for i in 1 2 3 4 5 +do echo "Iteration: $i" -Done +done -# Demonstrating for loop with command substitution -echo "Demonstrating for loop with command substitution:" -For i In $(seq 1 5) Do - echo "Number: $i" -Done +# 6. For loop with seq command +echo "Demonstrating for loop with seq command:" +for i in $(seq 1 5) +do + echo "Number from seq: $i" +done -# Demonstrating case statement +# 7. Using seq with different arguments +echo "Demonstrating seq with different arguments:" +echo "seq 3 (implicit start at 1, increment by 1):" +for i in $(seq 3) +do + echo "Value: $i" +done + +echo "seq 2 5 (start at 2, increment by 1):" +for i in $(seq 2 5) +do + echo "Value: $i" +done + +echo "seq 0 2 10 (start at 0, increment by 2):" +for i in $(seq 0 2 10) +do + echo "Value: $i" +done + +# 8. Case statement echo "Demonstrating case statement:" fruit="apple" -Case $fruit In +case $fruit in "apple") echo "It's an apple" ;; @@ -59,14 +87,16 @@ Case $fruit In *) echo "Unknown fruit" ;; -Esac +esac -# Demonstrating function -echo "Demonstrating function:" -Function greet ( - echo "Hello, $1!" -) -greet "World" -greet "Bellos" +# 9. Using seq in arithmetic operations +echo "Using seq in arithmetic operations:" +sum=0 +for i in $(seq 1 5) +do + sum=$((sum + i)) + echo "Running sum: $sum" +done +echo "Final sum of numbers 1 to 5: $sum" -echo "Control structures demonstration completed." +echo "Control structures and seq demonstration completed." diff --git a/bellos_scripts/file_operations.bellos b/bellos_scripts/file_operations.bellos index 019bb67..7614abd 100755 --- a/bellos_scripts/file_operations.bellos +++ b/bellos_scripts/file_operations.bellos @@ -8,37 +8,37 @@ echo "Creating test file..." write test.txt "Hello, World!" # Read the contents of the file -echo "\nReading test file:" +echo "Reading test file:" read test.txt # Append to the file -echo "\nAppending to test file..." +echo "Appending to test file..." append test.txt "This is a new line" # Read the updated contents -echo "\nReading updated test file:" +echo "Reading updated test file:" read test.txt # Write to a new file -echo "\nWriting to a new file..." +echo "Writing to a new file..." write new_file.txt "This is a new file" # Read the new file -echo "\nReading new file:" +echo "Reading new file:" read new_file.txt # List files in the current directory -echo "\nListing files in the current directory:" +echo "Listing files in the current directory:" ls -l # Rename a file -echo "\nRenaming file..." +echo "Renaming file..." mv new_file.txt renamed_file.txt # Delete files -echo "\nDeleting files..." +echo "Deleting files..." rm test.txt renamed_file.txt # List files again to confirm deletion -echo "\nListing files after deletion:" +echo "Listing files after deletion:" ls -l diff --git a/executable/bellos b/executable/bellos index 079a1bff60045cdd1e74d0c9f58872531c0c6f13..4636b1f88b68ea33f513278824b5e2309c929d7e 100755 GIT binary patch delta 231691 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

Rv6Nk$**w4OnjA*DTTUXM_@mN&-eFcr5Aaa%d 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 delta 267602 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 F{|{MmS_uFE diff --git a/src/bellos.rs b/src/bellos.rs index 144db67..b4a654a 100644 --- a/src/bellos.rs +++ b/src/bellos.rs @@ -14,9 +14,10 @@ // along with this program. If not, see . mod executor_processes; -mod interpreter; +mod interpreter_logic; mod lexer; mod parser; +mod shell; mod utilities; use crate::executor_processes::executor::Executor; diff --git a/src/executor_processes/executor.rs b/src/executor_processes/executor.rs index a00388f..c97678a 100644 --- a/src/executor_processes/executor.rs +++ b/src/executor_processes/executor.rs @@ -13,26 +13,19 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -use crate::executor_processes::processes::Processes; -use crate::interpreter::interpreter::Interpreter; -use crate::lexer::lexer::Lexer; -use crate::parser::parser::Parser; -use crate::utilities::utilities::ASTNode; +use crate::shell::shell::Shell; use std::fs::File; use std::io::{self, BufRead, BufReader, Write}; use std::path::Path; -use std::sync::Arc; pub struct Executor { - interpreter: Interpreter, - processes: Arc, + shell: Shell, } impl Executor { pub fn new() -> Self { Executor { - interpreter: Interpreter::new(), - processes: Arc::new(Processes::new()), + shell: Shell::new(), } } @@ -65,7 +58,7 @@ impl Executor { continue; } - if let Err(e) = self.process_content(trimmed_line) { + if let Err(e) = self.shell.run(trimmed_line) { eprintln!("Error on line {}: {}", index + 1, e); } io::stdout().flush().unwrap(); @@ -84,56 +77,9 @@ impl Executor { continue; } - if let Err(e) = self.process_content(&input) { + if let Err(e) = self.shell.run(&input) { eprintln!("Error: {}", e); } } } - - fn process_content(&mut self, content: &str) -> Result<(), String> { - let ast_nodes = self.parse_content(content)?; - self.execute(ast_nodes) - } - - fn parse_content(&self, content: &str) -> Result, String> { - let mut lexer = Lexer::new(content.to_string()); - let tokens = lexer.tokenize(); - let mut parser = Parser::new(tokens); - parser.parse() - } - - pub fn execute(&mut self, nodes: Vec) -> Result<(), String> { - for node in nodes { - self.execute_node(node)?; - } - Ok(()) - } - - fn execute_node(&mut self, node: ASTNode) -> Result, String> { - match node { - ASTNode::Command { name, args } => Arc::get_mut(&mut self.processes) - .unwrap() - .execute_command(&mut self.interpreter, name, args), - ASTNode::Assignment { name, value } => { - let expanded_value = self.interpreter.expand_variables(&value); - self.interpreter.variables.insert(name, expanded_value); - Ok(None) - } - ASTNode::Pipeline(commands) => { - self.processes.execute_pipeline(&self.interpreter, commands) - } - ASTNode::Redirect { - node, - direction, - target, - } => Arc::get_mut(&mut self.processes).unwrap().execute_redirect( - &mut self.interpreter, - *node, - direction, - target, - ), - ASTNode::Background(node) => self.processes.execute_background(*node), - _ => self.interpreter.interpret_node(Box::new(node)), - } - } } diff --git a/src/executor_processes/processes.rs b/src/executor_processes/processes.rs index 076185b..35026b3 100644 --- a/src/executor_processes/processes.rs +++ b/src/executor_processes/processes.rs @@ -13,7 +13,8 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . -use crate::interpreter::interpreter::Interpreter; +use crate::interpreter_logic::interpreter::Interpreter; +use crate::interpreter_logic::logic::Logic; use crate::utilities::utilities::{ASTNode, RedirectType}; use glob::glob; use std::fs::{File, OpenOptions}; @@ -24,165 +25,178 @@ use std::thread; pub struct Processes { background_jobs: Arc>>>>, + pub logic: Logic, } impl Processes { pub fn new() -> Self { Processes { background_jobs: Arc::new(Mutex::new(Vec::new())), + logic: Logic::new(), } } pub fn execute_command( &mut self, interpreter: &mut Interpreter, - name: String, - args: Vec, + name: &str, + args: &[String], + ) -> Result, String> { + match name { + "echo" => self.builtin_echo(interpreter, args), + "exit" => std::process::exit(0), + "export" => self.builtin_export(interpreter, args), + "jobs" => self.builtin_jobs(), + "write" => self.builtin_write(args), + "read" => self.builtin_read(args), + "append" => self.builtin_append(args), + "delete" => self.builtin_delete(args), + "[" => self.evaluate_condition(interpreter, args), + "seq" => self.builtin_seq(args), + _ => self.execute_external_command(name, args), + } + } + + fn builtin_echo( + &self, + interpreter: &mut Interpreter, + args: &[String], ) -> Result, String> { - let expanded_name = interpreter.expand_variables(&name); let expanded_args: Vec = args .iter() .map(|arg| interpreter.expand_variables(arg)) .collect(); - - match expanded_name.as_str() { - "echo" => { - let output = expanded_args.join(" "); - println!("{}", output); - io::stdout().flush().unwrap(); - Ok(Some(0)) - } - "cd" => { - let path = if expanded_args.is_empty() { - std::env::var("HOME").unwrap_or_else(|_| ".".to_string()) - } else { - expanded_args[0].clone() - }; - if let Err(e) = std::env::set_current_dir(&path) { - Err(format!("cd: {}", e)) - } else { - Ok(Some(0)) - } - } - "exit" => std::process::exit(0), - "export" => { - for arg in expanded_args { - let parts: Vec<&str> = arg.splitn(2, '=').collect(); - if parts.len() == 2 { - std::env::set_var(parts[0], parts[1]); - } - } - Ok(Some(0)) - } - "jobs" => { - let jobs = self.background_jobs.lock().unwrap(); - for (i, _) in jobs.iter().enumerate() { - println!("[{}] Running", i + 1); - } - Ok(Some(0)) - } - "write" => { - if expanded_args.len() != 2 { - return Err("Usage: write ".to_string()); - } - let filename = &expanded_args[0]; - let content = &expanded_args[1]; - let mut file = File::create(filename) - .map_err(|e| format!("Failed to create file {}: {}", filename, e))?; - file.write_all(content.as_bytes()) - .map_err(|e| format!("Failed to write to file {}: {}", filename, e))?; - Ok(Some(0)) - } - "read" => { - if expanded_args.len() != 1 { - return Err("Usage: read ".to_string()); - } - let filename = &expanded_args[0]; - let mut content = String::new(); - File::open(filename) - .map_err(|e| format!("Failed to open file {}: {}", filename, e))? - .read_to_string(&mut content) - .map_err(|e| format!("Failed to read file {}: {}", filename, e))?; - println!("{}", content); - Ok(Some(0)) - } - "append" => { - if expanded_args.len() != 2 { - return Err("Usage: append ".to_string()); - } - let filename = &expanded_args[0]; - let content = &expanded_args[1]; - let mut file = OpenOptions::new() - .append(true) - .open(filename) - .map_err(|e| format!("Failed to open file {}: {}", filename, e))?; - file.write_all(content.as_bytes()) - .map_err(|e| format!("Failed to append to file {}: {}", filename, e))?; - Ok(Some(0)) - } - "delete" => { - if expanded_args.len() != 1 { - return Err("Usage: delete ".to_string()); - } - let filename = &expanded_args[0]; - std::fs::remove_file(filename) - .map_err(|e| format!("Failed to delete file {}: {}", filename, e))?; - Ok(Some(0)) - } - _ => { - // If it's not a built-in command, try to execute as external command - match Command::new(&expanded_name).args(&expanded_args).spawn() { - Ok(mut child) => { - let status = child.wait().map_err(|e| e.to_string())?; - Ok(Some(status.code().unwrap_or(0))) - } - Err(e) => Err(format!("Failed to execute command: {}", e)), - } - } - } + println!("{}", expanded_args.join(" ")); + Ok(Some(0)) } - pub fn execute_pipeline( + fn builtin_export( &self, - interpreter: &Interpreter, - commands: Vec, + interpreter: &mut Interpreter, + args: &[String], ) -> Result, String> { - let mut previous_stdout = None; - let mut processes = Vec::new(); - - for (i, command) in commands.iter().enumerate() { - match command { - ASTNode::Command { name, args } => { - let mut cmd = Command::new(interpreter.expand_variables(name)); - for arg in args { - cmd.arg(interpreter.expand_variables(arg)); - } - - if let Some(prev_stdout) = previous_stdout.take() { - cmd.stdin(prev_stdout); - } - - if i < commands.len() - 1 { - cmd.stdout(Stdio::piped()); - } - - let mut child = cmd.spawn().map_err(|e| e.to_string())?; - if i < commands.len() - 1 { - previous_stdout = child.stdout.take(); - } - processes.push(child); - } - _ => return Err("Pipeline can only contain commands".to_string()), + for arg in args { + let parts: Vec<&str> = arg.splitn(2, '=').collect(); + if parts.len() == 2 { + std::env::set_var(parts[0], parts[1]); + interpreter + .variables + .insert(parts[0].to_string(), parts[1].to_string()); } } + Ok(Some(0)) + } - let mut last_status = None; - for mut process in processes { - let status = process.wait().map_err(|e| e.to_string())?; - last_status = Some(status.code().unwrap_or(0)); + fn builtin_jobs(&self) -> Result, String> { + let jobs = self.background_jobs.lock().unwrap(); + for (i, _) in jobs.iter().enumerate() { + println!("[{}] Running", i + 1); + } + Ok(Some(0)) + } + + fn builtin_write(&self, args: &[String]) -> Result, String> { + if args.len() != 2 { + return Err("Usage: write ".to_string()); + } + let filename = &args[0]; + let content = &args[1]; + let mut file = File::create(filename) + .map_err(|e| format!("Failed to create file {}: {}", filename, e))?; + file.write_all(content.as_bytes()) + .map_err(|e| format!("Failed to write to file {}: {}", filename, e))?; + Ok(Some(0)) + } + + fn builtin_read(&self, args: &[String]) -> Result, String> { + if args.len() != 1 { + return Err("Usage: read ".to_string()); + } + let filename = &args[0]; + let mut content = String::new(); + File::open(filename) + .map_err(|e| format!("Failed to open file {}: {}", filename, e))? + .read_to_string(&mut content) + .map_err(|e| format!("Failed to read file {}: {}", filename, e))?; + println!("{}", content); + Ok(Some(0)) + } + + fn builtin_append(&self, args: &[String]) -> Result, String> { + if args.len() != 2 { + return Err("Usage: append ".to_string()); + } + let filename = &args[0]; + let content = &args[1]; + let mut file = OpenOptions::new() + .append(true) + .open(filename) + .map_err(|e| format!("Failed to open file {}: {}", filename, e))?; + file.write_all(content.as_bytes()) + .map_err(|e| format!("Failed to append to file {}: {}", filename, e))?; + Ok(Some(0)) + } + + fn builtin_delete(&self, args: &[String]) -> Result, String> { + if args.len() != 1 { + return Err("Usage: delete ".to_string()); + } + let filename = &args[0]; + std::fs::remove_file(filename) + .map_err(|e| format!("Failed to delete file {}: {}", filename, e))?; + Ok(Some(0)) + } + + fn builtin_seq(&self, args: &[String]) -> Result, String> { + if args.len() < 1 || args.len() > 3 { + return Err("Usage: seq [START] [STEP] END".to_string()); } - Ok(last_status) + let (start, step, end) = match args.len() { + 1 => ( + 1, + 1, + args[0] + .parse::() + .map_err(|_| "Invalid number".to_string())?, + ), + 2 => ( + args[0] + .parse::() + .map_err(|_| "Invalid number".to_string())?, + 1, + args[1] + .parse::() + .map_err(|_| "Invalid number".to_string())?, + ), + 3 => ( + args[0] + .parse::() + .map_err(|_| "Invalid number".to_string())?, + args[1] + .parse::() + .map_err(|_| "Invalid number".to_string())?, + args[2] + .parse::() + .map_err(|_| "Invalid number".to_string())?, + ), + _ => unreachable!(), + }; + + for i in (start..=end).step_by(step as usize) { + println!("{}", i); + } + Ok(Some(0)) + } + + fn execute_external_command(&self, name: &str, args: &[String]) -> Result, String> { + match Command::new(name).args(args).spawn() { + Ok(mut child) => { + let status = child.wait().map_err(|e| e.to_string())?; + Ok(Some(status.code().unwrap_or(0))) + } + Err(e) => Err(format!("Failed to execute command: {}", e)), + } } pub fn execute_redirect( @@ -194,39 +208,128 @@ impl Processes { ) -> Result, String> { let target = interpreter.expand_variables(&target); match direction { - RedirectType::Out => { - let file = File::create(&target).map_err(|e| e.to_string())?; - let mut writer = BufWriter::new(file); - let result = self.capture_output(interpreter, Box::new(node))?; - writer - .write_all(result.as_bytes()) - .map_err(|e| e.to_string())?; - Ok(Some(0)) - } - RedirectType::Append => { - let file = OpenOptions::new() - .write(true) - .append(true) - .create(true) - .open(&target) - .map_err(|e| e.to_string())?; - let mut writer = BufWriter::new(file); - let result = self.capture_output(interpreter, Box::new(node))?; - writer - .write_all(result.as_bytes()) - .map_err(|e| e.to_string())?; - Ok(Some(0)) - } - RedirectType::In => { - let file = File::open(&target).map_err(|e| e.to_string())?; - let mut reader = BufReader::new(file); - let mut input = String::new(); - reader - .read_to_string(&mut input) - .map_err(|e| e.to_string())?; - self.execute_with_input(interpreter, Box::new(node), input) + RedirectType::Output => self.execute_output_redirect(interpreter, node, &target), + RedirectType::Append => self.execute_append_redirect(interpreter, node, &target), + RedirectType::Input => self.execute_input_redirect(interpreter, node, &target), + } + } + + fn execute_output_redirect( + &self, + interpreter: &mut Interpreter, + node: ASTNode, + target: &str, + ) -> Result, String> { + let file = File::create(target).map_err(|e| e.to_string())?; + let mut writer = BufWriter::new(file); + let result = self.capture_output(interpreter, Box::new(node))?; + writer + .write_all(result.as_bytes()) + .map_err(|e| e.to_string())?; + Ok(Some(0)) + } + + fn execute_append_redirect( + &self, + interpreter: &mut Interpreter, + node: ASTNode, + target: &str, + ) -> Result, String> { + let file = OpenOptions::new() + .write(true) + .append(true) + .create(true) + .open(target) + .map_err(|e| e.to_string())?; + let mut writer = BufWriter::new(file); + let result = self.capture_output(interpreter, Box::new(node))?; + writer + .write_all(result.as_bytes()) + .map_err(|e| e.to_string())?; + Ok(Some(0)) + } + + fn execute_input_redirect( + &self, + interpreter: &mut Interpreter, + node: ASTNode, + target: &str, + ) -> Result, String> { + let file = File::open(target).map_err(|e| e.to_string())?; + let mut reader = BufReader::new(file); + let mut input = String::new(); + reader + .read_to_string(&mut input) + .map_err(|e| e.to_string())?; + self.execute_with_input(interpreter, node, input) + } + + pub fn execute_pipeline( + &self, + interpreter: &mut Interpreter, + commands: Vec, + ) -> Result, String> { + let mut previous_stdout = None; + let mut processes = Vec::new(); + + for (i, command) in commands.iter().enumerate() { + match command { + ASTNode::Command { name, args } => { + let process = self.setup_pipeline_command( + interpreter, + name, + args, + i, + &commands.len(), + &mut previous_stdout, + )?; + processes.push(process); + } + _ => return Err("Pipeline can only contain commands".to_string()), } } + + self.wait_for_processes(processes) + } + + fn setup_pipeline_command( + &self, + interpreter: &mut Interpreter, + name: &str, + args: &[String], + index: usize, + total_commands: &usize, + previous_stdout: &mut Option, + ) -> Result { + let mut cmd = Command::new(interpreter.expand_variables(name)); + for arg in args { + cmd.arg(interpreter.expand_variables(arg)); + } + + if let Some(prev_stdout) = previous_stdout.take() { + cmd.stdin(prev_stdout); + } + + if index < total_commands - 1 { + cmd.stdout(Stdio::piped()); + } + + let mut child = cmd.spawn().map_err(|e| e.to_string())?; + + if index < total_commands - 1 { + *previous_stdout = child.stdout.take().map(Stdio::from); + } + + Ok(child) + } + + fn wait_for_processes(&self, processes: Vec) -> Result, String> { + let mut last_status = None; + for mut process in processes { + let status = process.wait().map_err(|e| e.to_string())?; + last_status = Some(status.code().unwrap_or(0)); + } + Ok(last_status) } fn capture_output( @@ -239,7 +342,7 @@ impl Processes { let mut buffer = Vec::new(); { let mut cursor = Cursor::new(&mut buffer); - let result = interpreter.interpret_node(node)?; + let result = interpreter.interpret_node(&node)?; writeln!(cursor, "{:?}", result).map_err(|e| e.to_string())?; } handle.write_all(&buffer).map_err(|e| e.to_string())?; @@ -249,44 +352,47 @@ impl Processes { fn execute_with_input( &self, interpreter: &mut Interpreter, - node: Box, + node: ASTNode, input: String, ) -> Result, String> { std::env::set_var("BELLOS_INPUT", input); - interpreter.interpret_node(node) + interpreter.interpret_node(&node) } - pub fn execute_background(&self, node: ASTNode) -> Result, String> { + pub fn execute_background( + &mut self, + interpreter: &mut Interpreter, + node: ASTNode, + ) -> Result, String> { let bg_jobs = Arc::clone(&self.background_jobs); + let interpreter_clone = interpreter.clone(); thread::spawn(move || { - let mut interpreter = Interpreter::new(); - if let Err(e) = interpreter.interpret_node(Box::new(node)) { + let mut local_interpreter = interpreter_clone; + if let Err(e) = local_interpreter.interpret_node(&node) { eprintln!("Background job error: {}", e); } - // Remove completed jobs from bg_jobs let mut jobs = bg_jobs.lock().unwrap(); jobs.retain(|job| { let mut child = job.lock().unwrap(); match child.try_wait() { Ok(Some(_)) => { println!("Job completed."); - false // Job has completed, remove it + false } Ok(None) => { println!("Job still running."); - true // Job is still running, keep it + true } Err(err) => { eprintln!("Error waiting for job: {}", err); - false // Error occurred, remove the job + false } } }); }); - // Add a placeholder Child process to the background_jobs list let placeholder = Arc::new(Mutex::new(Command::new("sleep").arg("1").spawn().map_err( |e| format!("Failed to create placeholder process: {}", e), @@ -305,4 +411,18 @@ impl Processes { Err(_) => vec![pattern.to_string()], } } + + fn evaluate_condition( + &self, + interpreter: &mut Interpreter, + args: &[String], + ) -> Result, String> { + if args.len() != 3 { + return Err("Invalid condition syntax".to_string()); + } + let result = + self.logic + .compare_values(&interpreter.variables, &args[0], &args[1], &args[2])?; + Ok(Some(if result { 0 } else { 1 })) + } } diff --git a/src/interpreter/interpreter.rs b/src/interpreter/interpreter.rs deleted file mode 100644 index 0ce26dd..0000000 --- a/src/interpreter/interpreter.rs +++ /dev/null @@ -1,263 +0,0 @@ -// Copyright (C) 2024 Bellande Architecture Mechanism Research Innovation Center, Ronaldson Bellande - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - -use crate::utilities::utilities::ASTNode; -use std::collections::HashMap; -use std::env; - -pub struct Interpreter { - pub variables: HashMap, - pub functions: HashMap, -} - -impl Interpreter { - pub fn new() -> Self { - Interpreter { - variables: HashMap::new(), - functions: HashMap::new(), - } - } - - pub fn interpret(&mut self, nodes: Vec) -> Result<(), String> { - for node in nodes { - self.interpret_node(Box::new(node))?; - } - Ok(()) - } - - pub fn interpret_node(&mut self, node: Box) -> Result, String> { - match *node { - ASTNode::Assignment { name, value } => { - let expanded_value = self.expand_variables(&value); - self.variables.insert(name, expanded_value); - Ok(None) - } - ASTNode::Block(statements) => { - for statement in statements { - self.interpret_node(Box::new(statement))?; - } - Ok(None) - } - ASTNode::If { - condition, - then_block, - else_block, - } => { - if self.evaluate_condition(&condition)? { - self.interpret_node(then_block)?; - } else if let Some(else_block) = else_block { - self.interpret_node(else_block)?; - } - Ok(None) - } - ASTNode::While { condition, block } => { - while self.evaluate_condition(&condition)? { - self.interpret_node(Box::new(*block.clone()))?; - } - Ok(None) - } - ASTNode::For { var, list, block } => { - for item in list { - self.variables.insert(var.clone(), item); - self.interpret_node(Box::new(*block.clone()))?; - } - Ok(None) - } - ASTNode::Function { name, body } => { - self.functions.insert(name, *body); - Ok(None) - } - ASTNode::Command { name: _, args: _ } => { - Err("Commands should be handled by Processes".to_string()) - } - _ => Err("Node type not handled by Interpreter".to_string()), - } - } - - pub fn evaluate_condition(&mut self, condition: &ASTNode) -> Result { - match condition { - ASTNode::Command { name, args } => { - let expanded_args: Vec = - args.iter().map(|arg| self.expand_variables(arg)).collect(); - match name.as_str() { - "[" | "test" => { - if expanded_args.len() < 3 || expanded_args.last() != Some(&"]".to_string()) - { - return Err("Invalid test condition".to_string()); - } - match expanded_args[1].as_str() { - "-eq" => Ok(expanded_args[0] == expanded_args[2]), - "-ne" => Ok(expanded_args[0] != expanded_args[2]), - "-lt" => Ok(expanded_args[0].parse::().unwrap_or(0) - < expanded_args[2].parse::().unwrap_or(0)), - "-le" => Ok(expanded_args[0].parse::().unwrap_or(0) - <= expanded_args[2].parse::().unwrap_or(0)), - "-gt" => Ok(expanded_args[0].parse::().unwrap_or(0) - > expanded_args[2].parse::().unwrap_or(0)), - "-ge" => Ok(expanded_args[0].parse::().unwrap_or(0) - >= expanded_args[2].parse::().unwrap_or(0)), - "-z" => Ok(expanded_args[0].is_empty()), - "-n" => Ok(!expanded_args[0].is_empty()), - _ => Err(format!("Unsupported test condition: {}", expanded_args[1])), - } - } - _ => Err("Condition evaluation not supported for this command".to_string()), - } - } - _ => Err("Invalid condition node".to_string()), - } - } - - pub fn expand_variables(&self, input: &str) -> String { - let mut result = String::new(); - let mut chars = input.chars().peekable(); - while let Some(c) = chars.next() { - if c == '$' { - if chars.peek() == Some(&'(') { - let mut depth = 0; - let mut expr = String::new(); - for c in chars.by_ref() { - expr.push(c); - if c == '(' { - depth += 1; - } else if c == ')' { - depth -= 1; - if depth == 0 { - break; - } - } - } - if expr.starts_with("((") && expr.ends_with("))") { - match self.evaluate_arithmetic(&expr) { - Ok(value) => result.push_str(&value.to_string()), - Err(e) => result.push_str(&format!("Error: {}", e)), - } - } else { - result.push('$'); - result.push_str(&expr); - } - } else { - let var_name: String = chars - .by_ref() - .take_while(|&c| c.is_alphanumeric() || c == '_') - .collect(); - if let Some(value) = self.variables.get(&var_name) { - result.push_str(value); - } else if let Ok(value) = env::var(&var_name) { - result.push_str(&value); - } else { - result.push('$'); - result.push_str(&var_name); - } - } - } else { - result.push(c); - } - } - result - } - - pub fn evaluate_arithmetic(&self, expr: &str) -> Result { - let expr = expr.trim(); - let inner_expr = if expr.starts_with("$((") && expr.ends_with("))") { - &expr[3..expr.len() - 2] - } else if expr.starts_with("((") && expr.ends_with("))") { - &expr[2..expr.len() - 2] - } else { - expr - }; - - // Handle parentheses - if inner_expr.contains('(') { - let mut depth = 0; - let mut start = 0; - for (i, c) in inner_expr.chars().enumerate() { - match c { - '(' => { - if depth == 0 { - start = i + 1; - } - depth += 1; - } - ')' => { - depth -= 1; - if depth == 0 { - let sub_result = self.evaluate_arithmetic(&inner_expr[start..i])?; - let new_expr = format!( - "{} {} {}", - &inner_expr[..start - 1], - sub_result, - &inner_expr[i + 1..] - ); - return self.evaluate_arithmetic(&new_expr); - } - } - _ => {} - } - } - } - - // Split the expression into tokens - let tokens: Vec<&str> = inner_expr.split_whitespace().collect(); - - // Handle single number or variable - if tokens.len() == 1 { - return self.get_var_value(tokens[0]); - } - - // Handle binary operations - if tokens.len() == 3 { - let a = self.get_var_value(tokens[0])?; - let b = self.get_var_value(tokens[2])?; - - let result = match tokens[1] { - "+" => Ok(a + b), - "-" => Ok(a - b), - "*" => Ok(a * b), - "/" => { - if b != 0 { - Ok(a / b) - } else { - Err("Division by zero".to_string()) - } - } - "%" => { - if b != 0 { - Ok(a % b) - } else { - Err("Modulo by zero".to_string()) - } - } - _ => Err(format!("Unsupported operation: {}", tokens[1])), - }; - - result - } else { - Err("Invalid arithmetic expression".to_string()) - } - } - - fn get_var_value(&self, var: &str) -> Result { - if let Some(value) = self.variables.get(var) { - value - .parse() - .map_err(|_| format!("Invalid integer: {}", value)) - } else if let Ok(value) = var.parse() { - Ok(value) - } else { - Err(format!("Undefined variable or invalid integer: {}", var)) - } - } -} diff --git a/src/interpreter_logic/interpreter.rs b/src/interpreter_logic/interpreter.rs new file mode 100644 index 0000000..51efdf1 --- /dev/null +++ b/src/interpreter_logic/interpreter.rs @@ -0,0 +1,210 @@ +// Copyright (C) 2024 Bellande Architecture Mechanism Research Innovation Center, Ronaldson Bellande + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +use crate::interpreter_logic::logic::Logic; +use crate::utilities::utilities::ASTNode; +use std::collections::HashMap; + +#[derive(Clone)] +pub struct Interpreter { + pub variables: HashMap, + pub functions: HashMap, + pub logic: Logic, +} + +impl Interpreter { + pub fn new() -> Self { + Interpreter { + variables: HashMap::new(), + functions: HashMap::new(), + logic: Logic::new(), + } + } + + pub fn interpret(&mut self, nodes: Vec) -> Result<(), String> { + for node in nodes { + if let Err(e) = self.interpret_node(&node) { + eprintln!("Error executing command: {}", e); + } + } + Ok(()) + } + + pub fn interpret_node(&mut self, node: &ASTNode) -> Result, String> { + match node { + ASTNode::Assignment { name, value } => self.assignment(name, value), + ASTNode::Block(statements) => self.execute_block(statements), + ASTNode::If { + condition, + then_block, + else_block, + } => self.execute_if(condition, then_block, else_block), + ASTNode::While { condition, block } => self.execute_while(condition, block), + ASTNode::For { var, list, block } => self.execute_for(var, list, block), + ASTNode::Case { var, cases } => self.execute_case(var, cases), + ASTNode::Comparison { left, op, right } => self.execute_comparison(left, op, right), + ASTNode::Expression(expr) => self.execute_expression(expr), + ASTNode::Function { name, body } => self.define_function(name, body), + _ => Err(format!("Unsupported node type in Interpreter: {:?}", node)), + } + } + + fn assignment(&mut self, name: &str, value: &str) -> Result, String> { + let expanded_value = self.expand_variables(value); + self.variables.insert(name.to_string(), expanded_value); + Ok(None) + } + + fn execute_block(&mut self, statements: &[ASTNode]) -> Result, String> { + let mut last_result = Ok(None); + for statement in statements { + last_result = self.interpret_node(statement); + if last_result.is_err() { + break; + } + } + last_result + } + + fn execute_if( + &mut self, + condition: &ASTNode, + then_block: &ASTNode, + else_block: &Option>, + ) -> Result, String> { + if self.logic.evaluate_condition(&self.variables, condition)? { + self.interpret_node(then_block) + } else if let Some(else_block) = else_block { + self.interpret_node(else_block) + } else { + Ok(None) + } + } + + fn execute_while( + &mut self, + condition: &ASTNode, + block: &ASTNode, + ) -> Result, String> { + while self.logic.evaluate_condition(&self.variables, condition)? { + self.interpret_node(block)?; + } + Ok(None) + } + + fn execute_for( + &mut self, + var: &str, + list: &[String], + block: &ASTNode, + ) -> Result, String> { + for item in list { + let expanded_item = self.expand_variables(item); + self.variables.insert(var.to_string(), expanded_item); + self.interpret_node(block)?; + } + Ok(None) + } + + fn execute_case( + &mut self, + var: &ASTNode, + cases: &[(ASTNode, ASTNode)], + ) -> Result, String> { + let var_str = match var { + ASTNode::Expression(expr) => self.expand_variables(expr), + _ => return Err("Invalid case variable".to_string()), + }; + for (pattern, block) in cases { + let expanded_pattern = match pattern { + ASTNode::Expression(expr) => self.expand_variables(expr), + _ => return Err("Invalid case pattern".to_string()), + }; + if expanded_pattern == "*" || expanded_pattern == var_str { + return self.interpret_node(block); + } + } + Ok(None) + } + + fn execute_comparison( + &mut self, + left: &str, + op: &str, + right: &str, + ) -> Result, String> { + let result = self + .logic + .compare_values(&self.variables, left, op, right)?; + Ok(Some(if result { 0 } else { 1 })) + } + + fn execute_expression(&mut self, expr: &str) -> Result, String> { + let expanded = self.expand_variables(expr); + Ok(Some(self.logic.evaluate_arithmetic(&expanded)?)) + } + + fn define_function(&mut self, name: &str, body: &ASTNode) -> Result, String> { + self.functions.insert(name.to_string(), body.clone()); + Ok(None) + } + + pub fn expand_variables(&self, input: &str) -> String { + self.logic.expand_variables(&self.variables, input) + } + + pub fn call_function(&mut self, name: &str, args: &[String]) -> Result, String> { + if let Some(function_body) = self.functions.get(name).cloned() { + // Save current variables + let saved_variables = self.variables.clone(); + + // Set up function arguments as variables + if let ASTNode::Function { name: _, body } = function_body { + if let ASTNode::Block(statements) = *body { + // Assume the first statement is a parameter list + if let Some(ASTNode::Assignment { + name: params, + value: _, + }) = statements.first() + { + let param_names: Vec<&str> = params.split_whitespace().collect(); + for (i, param_name) in param_names.iter().enumerate() { + if i < args.len() { + self.variables + .insert(param_name.to_string(), args[i].clone()); + } else { + self.variables.insert(param_name.to_string(), String::new()); + } + } + } + + // Execute function body + let result = self.execute_block(&statements[1..]); + + // Restore original variables + self.variables = saved_variables; + + result + } else { + Err("Invalid function body".to_string()) + } + } else { + Err("Invalid function definition".to_string()) + } + } else { + Err(format!("Function '{}' not found", name)) + } + } +} diff --git a/src/interpreter_logic/logic.rs b/src/interpreter_logic/logic.rs new file mode 100644 index 0000000..57929b1 --- /dev/null +++ b/src/interpreter_logic/logic.rs @@ -0,0 +1,210 @@ +// Copyright (C) 2024 Bellande Architecture Mechanism Research Innovation Center, Ronaldson Bellande + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +use crate::utilities::utilities::ASTNode; +use std::collections::HashMap; + +#[derive(Clone)] +pub struct Logic; + +impl Logic { + pub fn new() -> Self { + Logic + } + + pub fn expand_variables(&self, variables: &HashMap, input: &str) -> String { + let mut result = String::new(); + let mut chars = input.chars().peekable(); + while let Some(c) = chars.next() { + if c == '$' { + if chars.peek() == Some(&'(') { + chars.next(); // Consume '(' + if chars.peek() == Some(&'(') { + chars.next(); // Consume second '(' + let expr = self.extract_arithmetic_expression(&mut chars); + if let Ok(value) = self.evaluate_arithmetic(&expr) { + result.push_str(&value.to_string()); + } else { + result.push_str(&format!("$(({})", expr)); + } + } else { + let cmd = self.extract_command_substitution(&mut chars); + // For now, we'll just insert the command as-is + result.push_str(&format!("$({})", cmd)); + } + } else { + let var_name: String = chars + .by_ref() + .take_while(|&c| c.is_alphanumeric() || c == '_') + .collect(); + if let Some(value) = variables.get(&var_name) { + result.push_str(value); + } else { + result.push('$'); + result.push_str(&var_name); + } + } + } else { + result.push(c); + } + } + result + } + + pub fn extract_arithmetic_expression( + &self, + chars: &mut std::iter::Peekable, + ) -> String { + let mut expr = String::new(); + let mut depth = 2; // We've already consumed "((" + while let Some(c) = chars.next() { + match c { + '(' => depth += 1, + ')' => { + depth -= 1; + if depth == 0 { + break; + } + } + _ => {} + } + expr.push(c); + } + expr + } + + pub fn evaluate_arithmetic(&self, expr: &str) -> Result { + let expr = expr.trim(); + let inner_expr = if expr.starts_with("$((") && expr.ends_with("))") { + &expr[3..expr.len() - 2] + } else if expr.starts_with("((") && expr.ends_with("))") { + &expr[2..expr.len() - 2] + } else { + expr + }; + + self.evaluate_arithmetic_expression(inner_expr) + } + + fn extract_command_substitution( + &self, + chars: &mut std::iter::Peekable, + ) -> String { + let mut depth = 1; + let mut cmd = String::new(); + for c in chars.by_ref() { + match c { + '(' => depth += 1, + ')' => { + depth -= 1; + if depth == 0 { + break; + } + } + _ => {} + } + cmd.push(c); + } + cmd + } + + fn evaluate_arithmetic_expression(&self, expr: &str) -> Result { + let tokens: Vec<&str> = expr.split_whitespace().collect(); + if tokens.len() != 3 { + return Err("Invalid arithmetic expression".to_string()); + } + + let left: i32 = self.parse_value(tokens[0])?; + let right: i32 = self.parse_value(tokens[2])?; + + match tokens[1] { + "+" => Ok(left + right), + "-" => Ok(left - right), + "*" => Ok(left * right), + "/" => { + if right != 0 { + Ok(left / right) + } else { + Err("Division by zero".to_string()) + } + } + "%" => { + if right != 0 { + Ok(left % right) + } else { + Err("Modulo by zero".to_string()) + } + } + _ => Err(format!("Unsupported operation: {}", tokens[1])), + } + } + + fn parse_value(&self, value: &str) -> Result { + value + .parse() + .map_err(|_| format!("Invalid integer: {}", value)) + } + + pub fn compare_values( + &self, + variables: &HashMap, + left: &str, + op: &str, + right: &str, + ) -> Result { + let left_val = self.expand_variables(variables, left); + let right_val = self.expand_variables(variables, right); + + match op { + "-eq" => Ok(left_val == right_val), + "-ne" => Ok(left_val != right_val), + "-lt" => self.compare_numbers(&left_val, &right_val, |a, b| a < b), + "-le" => self.compare_numbers(&left_val, &right_val, |a, b| a <= b), + "-gt" => self.compare_numbers(&left_val, &right_val, |a, b| a > b), + "-ge" => self.compare_numbers(&left_val, &right_val, |a, b| a >= b), + _ => Err(format!("Unknown comparison operator: {}", op)), + } + } + + fn compare_numbers(&self, left: &str, right: &str, compare: F) -> Result + where + F: Fn(i32, i32) -> bool, + { + let left_num = left + .parse::() + .map_err(|_| format!("Invalid number: {}", left))?; + let right_num = right + .parse::() + .map_err(|_| format!("Invalid number: {}", right))?; + Ok(compare(left_num, right_num)) + } + + pub fn evaluate_condition( + &self, + variables: &HashMap, + condition: &ASTNode, + ) -> Result { + match condition { + ASTNode::Comparison { left, op, right } => { + self.compare_values(variables, left, op, right) + } + ASTNode::Expression(expr) => { + let result = self.evaluate_arithmetic(&self.expand_variables(variables, expr))?; + Ok(result != 0) + } + _ => Err("Invalid condition".to_string()), + } + } +} diff --git a/src/interpreter/mod.rs b/src/interpreter_logic/mod.rs similarity index 58% rename from src/interpreter/mod.rs rename to src/interpreter_logic/mod.rs index 144a532..149fc03 100644 --- a/src/interpreter/mod.rs +++ b/src/interpreter_logic/mod.rs @@ -1 +1,2 @@ pub mod interpreter; +pub mod logic; diff --git a/src/lexer/lexer.rs b/src/lexer/lexer.rs index 4771321..af4ce2a 100644 --- a/src/lexer/lexer.rs +++ b/src/lexer/lexer.rs @@ -44,6 +44,14 @@ impl Lexer { } Some(match self.current_char() { + '[' => { + self.advance(); + Token::LeftBracket + } + ']' => { + self.advance(); + Token::RightBracket + } ' ' | '\t' => { self.advance(); return self.next_token(); @@ -54,7 +62,12 @@ impl Lexer { } ';' => { self.advance(); - Token::Semicolon + if self.current_char() == ';' { + self.advance(); + Token::DoubleSemicolon + } else { + Token::Semicolon + } } '|' => { self.advance(); @@ -82,12 +95,12 @@ impl Lexer { self.advance(); Token::Redirect(RedirectType::Append) } else { - Token::Redirect(RedirectType::Out) + Token::Redirect(RedirectType::Output) } } '<' => { self.advance(); - Token::Redirect(RedirectType::In) + Token::Redirect(RedirectType::Input) } '"' => self.read_string(), '$' => { @@ -135,13 +148,18 @@ impl Lexer { "if" => Token::If, "then" => Token::Then, "else" => Token::Else, + "elif" => Token::Elif, "fi" => Token::Fi, "while" => Token::While, "do" => Token::Do, "done" => Token::Done, "for" => Token::For, "in" => Token::In, + "case" => Token::Case, + "esac" => Token::Esac, "function" => Token::Function, + "[" => Token::LeftBracket, + "]" => Token::RightBracket, _ => Token::Word(word), } } diff --git a/src/parser/parser.rs b/src/parser/parser.rs index 378a288..89a2091 100644 --- a/src/parser/parser.rs +++ b/src/parser/parser.rs @@ -40,78 +40,120 @@ impl Parser { Ok(nodes) } - fn parse_statement(&mut self) -> Result { - if self.position >= self.tokens.len() { - return Err("Unexpected end of input".to_string()); + fn current_token(&self) -> Option<&Token> { + self.tokens.get(self.position) + } + + fn consume_token(&mut self) -> Result<(), String> { + if self.position < self.tokens.len() { + self.position += 1; + Ok(()) + } else { + Err("Unexpected end of input".to_string()) } - match &self.tokens[self.position] { - Token::Word(w) if w.eq_ignore_ascii_case("if") => self.parse_if(), - Token::Word(w) if w.eq_ignore_ascii_case("while") => self.parse_while(), - Token::Word(w) if w.eq_ignore_ascii_case("for") => self.parse_for(), - Token::Word(w) if w.eq_ignore_ascii_case("case") => self.parse_case(), - Token::Word(w) if w.eq_ignore_ascii_case("function") => self.parse_function(), + } + + fn parse_statement(&mut self) -> Result { + match self.current_token() { + Some(Token::Word(w)) if w == "if" => self.parse_if(), + Some(Token::Word(w)) if w == "while" => self.parse_while(), + Some(Token::Word(w)) if w == "for" => self.parse_for(), + Some(Token::Word(w)) if w == "case" => self.parse_case(), _ => self.parse_command_or_assignment(), } } fn parse_if(&mut self) -> Result { - self.position += 1; // Consume 'if' - let condition = Box::new(self.parse_command()?); - self.skip_newlines_and_expect("then")?; - let then_block = Box::new(self.parse_block("else", "fi")?); + self.consume_token()?; // Consume 'if' + let condition = self.parse_condition()?; + self.expect_token(&Token::Then)?; + let then_block = self.parse_block("else", "fi")?; let else_block = if self.current_token_is("else") { - self.position += 1; - self.skip_newlines(); + self.consume_token()?; Some(Box::new(self.parse_block("fi", "fi")?)) } else { None }; - self.skip_newlines_and_expect("fi")?; + self.expect_token(&Token::Fi)?; Ok(ASTNode::If { - condition, - then_block, + condition: Box::new(condition), + then_block: Box::new(then_block), else_block, }) } - fn parse_while(&mut self) -> Result { - self.position += 1; // Consume 'while' - let condition = Box::new(self.parse_command()?); - self.skip_newlines_and_expect("do")?; - let block = Box::new(self.parse_block("done", "done")?); - self.skip_newlines_and_expect("done")?; - Ok(ASTNode::While { condition, block }) + fn parse_condition(&mut self) -> Result { + self.expect_token(&Token::LeftBracket)?; + let left = self.parse_expression()?.to_string(); + let op = self.expect_word()?; + let right = self.parse_expression()?.to_string(); + self.expect_token(&Token::RightBracket)?; + Ok(ASTNode::Comparison { left, op, right }) } - fn parse_for(&mut self) -> Result { - self.position += 1; // Consume 'for' - let var = self.expect_word()?; - self.skip_newlines_and_expect("in")?; - let list = self.parse_list()?; - self.skip_newlines_and_expect("do")?; - let block = Box::new(self.parse_block("done", "done")?); - self.skip_newlines_and_expect("done")?; - Ok(ASTNode::For { var, list, block }) + fn parse_expression(&mut self) -> Result { + let left = self.expect_word()?; + if self.current_token_is("-eq") + || self.current_token_is("-ne") + || self.current_token_is("-lt") + || self.current_token_is("-le") + || self.current_token_is("-gt") + || self.current_token_is("-ge") + { + let op = self.expect_word()?; + let right = self.expect_word()?; + Ok(ASTNode::Comparison { left, op, right }) + } else { + Ok(ASTNode::Expression(left)) + } } fn parse_case(&mut self) -> Result { - self.position += 1; // Consume 'case' + self.consume_token()?; // Consume 'case' let var = self.parse_expression()?; - self.skip_newlines_and_expect("in")?; + self.expect_token(&Token::In)?; let mut cases = Vec::new(); while !self.current_token_is("esac") { - self.skip_newlines(); let pattern = self.parse_expression()?; self.expect_token(&Token::RightParen)?; let block = self.parse_block(";;", "esac")?; cases.push((pattern, block)); - self.skip_newlines(); if self.current_token_is(";;") { - self.position += 1; + self.consume_token()?; } } - self.skip_newlines_and_expect("esac")?; - Ok(ASTNode::Case { var, cases }) + self.expect_token(&Token::Esac)?; + Ok(ASTNode::Case { + var: Box::new(var), + cases, + }) + } + + fn parse_while(&mut self) -> Result { + self.consume_token()?; // Consume 'while' + let condition = self.parse_condition()?; + self.expect_token(&Token::Do)?; + let block = self.parse_block("done", "done")?; + self.expect_token(&Token::Done)?; + Ok(ASTNode::While { + condition: Box::new(condition), + block: Box::new(block), + }) + } + + fn parse_for(&mut self) -> Result { + self.consume_token()?; // Consume 'for' + let var = self.expect_word()?; + self.expect_token(&Token::In)?; + let list = self.parse_list()?; + self.expect_token(&Token::Do)?; + let block = self.parse_block("done", "done")?; + self.expect_token(&Token::Done)?; + Ok(ASTNode::For { + var, + list, + block: Box::new(block), + }) } fn parse_function(&mut self) -> Result { @@ -127,7 +169,10 @@ impl Parser { fn parse_block(&mut self, end_token1: &str, end_token2: &str) -> Result { let mut statements = Vec::new(); - while !self.current_token_is(end_token1) && !self.current_token_is(end_token2) { + while self.position < self.tokens.len() + && !self.current_token_is(end_token1) + && !self.current_token_is(end_token2) + { self.skip_newlines(); if self.current_token_is(end_token1) || self.current_token_is(end_token2) { break; @@ -144,6 +189,14 @@ impl Parser { } if args.is_empty() { Err("Expected command".to_string()) + } else if args[0] == "[" { + if args.last() != Some(&"]".to_string()) { + return Err("Condition must end with ]".to_string()); + } + Ok(ASTNode::Command { + name: "[".to_string(), + args, + }) } else { Ok(ASTNode::Command { name: args[0].clone(), @@ -161,10 +214,6 @@ impl Parser { Ok(list) } - fn parse_expression(&mut self) -> Result { - self.expect_word() - } - fn expect_word(&mut self) -> Result { if self.position >= self.tokens.len() { return Err("Unexpected end of input".to_string()); @@ -174,6 +223,21 @@ impl Parser { self.position += 1; Ok(w.clone()) } + Token::If + | Token::Then + | Token::Else + | Token::Fi + | Token::While + | Token::Do + | Token::Done + | Token::For + | Token::In + | Token::Case + | Token::Esac => { + let word = format!("{:?}", self.tokens[self.position]); + self.position += 1; + Ok(word) + } _ => Err(format!( "Expected word, found {:?}", self.tokens[self.position] @@ -247,7 +311,7 @@ impl Parser { let name = self.expect_word()?; if self.position < self.tokens.len() && self.tokens[self.position] == Token::Assignment { self.position += 1; - let value = self.parse_expression()?; + let value = self.expect_word()?; Ok(ASTNode::Assignment { name, value }) } else { let mut args = Vec::new(); diff --git a/src/shell/mod.rs b/src/shell/mod.rs new file mode 100644 index 0000000..327cf1b --- /dev/null +++ b/src/shell/mod.rs @@ -0,0 +1 @@ +pub mod shell; diff --git a/src/shell/shell.rs b/src/shell/shell.rs new file mode 100644 index 0000000..9a5df2c --- /dev/null +++ b/src/shell/shell.rs @@ -0,0 +1,272 @@ +// Copyright (C) 2024 Bellande Architecture Mechanism Research Innovation Center, Ronaldson Bellande + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +use crate::interpreter_logic::interpreter::Interpreter; +use crate::lexer::lexer::Lexer; +use crate::parser::parser::Parser; +use crate::utilities::utilities::{ASTNode, RedirectType}; +use std::io::{self, Write}; +use std::process::{Command, Stdio}; + +pub struct Shell { + pub interpreter: Interpreter, +} + +impl Shell { + pub fn new() -> Self { + Shell { + interpreter: Interpreter::new(), + } + } + + pub fn run(&mut self, input: &str) -> Result<(), String> { + let mut lexer = Lexer::new(input.to_string()); + let tokens = lexer.tokenize(); + let mut parser = Parser::new(tokens); + let ast = parser.parse()?; + self.interpret(ast) + } + + pub fn interpret(&mut self, nodes: Vec) -> Result<(), String> { + for node in nodes { + if let Err(e) = self.interpret_node(&node) { + eprintln!("Error executing command: {}", e); + } + } + Ok(()) + } + + pub fn interpret_node(&mut self, node: &ASTNode) -> Result, String> { + match node { + ASTNode::Command { name, args } => self.execute_command(name, args), + ASTNode::Pipeline(commands) => self.execute_pipeline(commands), + ASTNode::Redirect { + node, + direction, + target, + } => self.execute_redirect(node, direction, target), + ASTNode::Background(node) => self.execute_background(node), + _ => self.interpreter.interpret_node(node), + } + } + + pub fn execute_command(&mut self, name: &str, args: &[String]) -> Result, String> { + let expanded_name = self.interpreter.expand_variables(name); + let expanded_args: Vec = args + .iter() + .map(|arg| self.interpreter.expand_variables(arg)) + .collect(); + + let output = Command::new(&expanded_name) + .args(&expanded_args) + .output() + .map_err(|e| format!("Failed to execute command: {}", e))?; + + io::stdout() + .write_all(&output.stdout) + .map_err(|e| e.to_string())?; + io::stderr() + .write_all(&output.stderr) + .map_err(|e| e.to_string())?; + + Ok(Some(output.status.code().unwrap_or(-1))) + } + + pub fn execute_pipeline(&mut self, commands: &[ASTNode]) -> Result, String> { + let mut last_output = Vec::new(); + let mut last_exit_code = None; + + for (i, command) in commands.iter().enumerate() { + if let ASTNode::Command { name, args } = command { + let expanded_name = self.interpreter.expand_variables(name); + let expanded_args: Vec = args + .iter() + .map(|arg| self.interpreter.expand_variables(arg)) + .collect(); + + let mut process = Command::new(&expanded_name); + process.args(&expanded_args); + + if i == 0 { + process.stdin(Stdio::inherit()); + } else { + process.stdin(Stdio::piped()); + } + + if i == commands.len() - 1 { + process.stdout(Stdio::inherit()); + } else { + process.stdout(Stdio::piped()); + } + + let mut child = process + .spawn() + .map_err(|e| format!("Failed to spawn process: {}", e))?; + + if i > 0 { + if let Some(mut stdin) = child.stdin.take() { + stdin + .write_all(&last_output) + .map_err(|e| format!("Failed to write to stdin: {}", e))?; + } + } + + let output = child + .wait_with_output() + .map_err(|e| format!("Failed to wait for process: {}", e))?; + + last_output = output.stdout; + last_exit_code = Some(output.status.code().unwrap_or(-1)); + } else { + return Err("Invalid command in pipeline".to_string()); + } + } + + Ok(last_exit_code) + } + + pub fn execute_redirect( + &mut self, + node: &ASTNode, + direction: &RedirectType, + target: &str, + ) -> Result, String> { + let expanded_target = self.interpreter.expand_variables(target); + match direction { + RedirectType::Input => self.execute_input_redirect(node, &expanded_target), + RedirectType::Output => self.execute_output_redirect(node, &expanded_target), + RedirectType::Append => self.execute_append_redirect(node, &expanded_target), + } + } + + fn execute_input_redirect( + &mut self, + node: &ASTNode, + target: &str, + ) -> Result, String> { + if let ASTNode::Command { name, args } = node { + let expanded_name = self.interpreter.expand_variables(name); + let expanded_args: Vec = args + .iter() + .map(|arg| self.interpreter.expand_variables(arg)) + .collect(); + + let input = std::fs::File::open(target) + .map_err(|e| format!("Failed to open input file '{}': {}", target, e))?; + + let output = std::process::Command::new(&expanded_name) + .args(&expanded_args) + .stdin(input) + .output() + .map_err(|e| format!("Failed to execute command: {}", e))?; + + io::stdout() + .write_all(&output.stdout) + .map_err(|e| e.to_string())?; + io::stderr() + .write_all(&output.stderr) + .map_err(|e| e.to_string())?; + + Ok(Some(output.status.code().unwrap_or(-1))) + } else { + Err("Invalid command for input redirection".to_string()) + } + } + + fn execute_output_redirect( + &mut self, + node: &ASTNode, + target: &str, + ) -> Result, String> { + if let ASTNode::Command { name, args } = node { + let expanded_name = self.interpreter.expand_variables(name); + let expanded_args: Vec = args + .iter() + .map(|arg| self.interpreter.expand_variables(arg)) + .collect(); + + let output_file = std::fs::File::create(target) + .map_err(|e| format!("Failed to create output file '{}': {}", target, e))?; + + let output = std::process::Command::new(&expanded_name) + .args(&expanded_args) + .stdout(output_file) + .output() + .map_err(|e| format!("Failed to execute command: {}", e))?; + + io::stderr() + .write_all(&output.stderr) + .map_err(|e| e.to_string())?; + + Ok(Some(output.status.code().unwrap_or(-1))) + } else { + Err("Invalid command for output redirection".to_string()) + } + } + + fn execute_append_redirect( + &mut self, + node: &ASTNode, + target: &str, + ) -> Result, String> { + if let ASTNode::Command { name, args } = node { + let expanded_name = self.interpreter.expand_variables(name); + let expanded_args: Vec = args + .iter() + .map(|arg| self.interpreter.expand_variables(arg)) + .collect(); + + let output_file = std::fs::OpenOptions::new() + .write(true) + .append(true) + .open(target) + .map_err(|e| format!("Failed to open file '{}' for appending: {}", target, e))?; + + let output = std::process::Command::new(&expanded_name) + .args(&expanded_args) + .stdout(output_file) + .output() + .map_err(|e| format!("Failed to execute command: {}", e))?; + + io::stderr() + .write_all(&output.stderr) + .map_err(|e| e.to_string())?; + + Ok(Some(output.status.code().unwrap_or(-1))) + } else { + Err("Invalid command for append redirection".to_string()) + } + } + + pub fn execute_background(&mut self, node: &ASTNode) -> Result, String> { + if let ASTNode::Command { name, args } = node { + let expanded_name = self.interpreter.expand_variables(name); + let expanded_args: Vec = args + .iter() + .map(|arg| self.interpreter.expand_variables(arg)) + .collect(); + + let child = Command::new(&expanded_name) + .args(&expanded_args) + .spawn() + .map_err(|e| format!("Failed to spawn background process: {}", e))?; + + println!("Started background process with PID: {}", child.id()); + Ok(Some(0)) + } else { + Err("Invalid command for background execution".to_string()) + } + } +} diff --git a/src/utilities/utilities.rs b/src/utilities/utilities.rs index d2f27ca..5d3d945 100644 --- a/src/utilities/utilities.rs +++ b/src/utilities/utilities.rs @@ -37,21 +37,25 @@ pub enum Token { Case, Esac, Function, + Elif, + LeftBracket, + RightBracket, + DoubleSemicolon, } #[derive(Debug, Clone, PartialEq)] pub enum RedirectType { - Out, + Input, + Output, Append, - In, } impl RedirectType { pub fn as_str(&self) -> &'static str { match self { - RedirectType::Out => ">", + RedirectType::Output => ">", RedirectType::Append => ">>", - RedirectType::In => "<", + RedirectType::Input => "<", } } } @@ -87,15 +91,21 @@ pub enum ASTNode { list: Vec, block: Box, }, + Comparison { + left: String, + op: String, + right: String, + }, + Case { + var: Box, + cases: Vec<(ASTNode, ASTNode)>, + }, Function { name: String, body: Box, }, Background(Box), - Case { - var: String, - cases: Vec<(String, ASTNode)>, - }, + Expression(String), } impl ASTNode { @@ -106,3 +116,29 @@ impl ASTNode { } } } + +impl ToString for ASTNode { + fn to_string(&self) -> String { + match self { + ASTNode::Command { name, args } => format!("{} {}", name, args.join(" ")), + ASTNode::Assignment { name, value } => format!("{}={}", name, value), + ASTNode::Expression(expr) => expr.clone(), + _ => format!("{:?}", self), + } + } +} + +impl PartialEq for ASTNode { + fn eq(&self, other: &str) -> bool { + match self { + ASTNode::Expression(s) => s == other, + _ => false, + } + } +} + +impl PartialEq for ASTNode { + fn eq(&self, other: &String) -> bool { + self == other.as_str() + } +}