sandwich

A funny programming language written in Rust
git clone https://tilde.team/~karx/sandwich.git
Log | Files | Refs | README | LICENSE

commit 64c5958193816f12a089c0b04559bddb24ed8809
parent 4f8b0041839453a0def59dfea6678d4c899921cb
Author: ~karx <karx@tilde.team>
Date:   Sun,  7 Feb 2021 00:10:34 +0000

Add ability for reading variables

Diffstat:
Msrc/main.rs | 18++++++++----------
1 file changed, 8 insertions(+), 10 deletions(-)

diff --git a/src/main.rs b/src/main.rs @@ -9,7 +9,7 @@ mod eval; struct Program { data: Vec<String>, pc: usize, - vars: HashMap<char, String> + vars: HashMap<char, char> } impl Program { @@ -32,22 +32,21 @@ impl Program { let mut deconstructed: Vec<char> = arguments.chars().collect(); for (index, char) in arguments.chars().enumerate() { - if char == 'e' { - deconstructed[index] = 'f'; + let value = self.vars.get(&char); + + match value { + Some(content) => deconstructed[index] = *content, + None => {} } } - println!("{:?}", self.vars); deconstructed.into_iter().collect() } fn add_var(&mut self, arguments: &str) { - let name = arguments.chars().collect::<Vec<char>>()[0]; - let old_value = &arguments[1..]; - - let value = old_value.to_owned(); + let argument_vec: Vec<char> = arguments.chars().collect(); - self.vars.insert(name, value); + self.vars.insert(argument_vec[0], argument_vec[1]); } fn eval(&mut self, instruction: &String) { @@ -84,7 +83,6 @@ impl fmt::Display for Program { } fn main() { - let args: Vec<String> = env::args().collect(); if args.len() == 1 { panic!("You must provide an argument!");