Add ability for reading variables

This commit is contained in:
~karx 2021-02-07 00:10:34 +00:00
parent 4f8b004183
commit 64c5958193
1 changed files with 8 additions and 10 deletions

View File

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