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 {
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 argument_vec: Vec<char> = arguments.chars().collect();
let value = old_value.to_owned();
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!");