Implemented SymTable optimization for efficient variable updates

This commit is contained in:
Ava Apples Affine 2023-03-20 17:16:44 -07:00
parent dcb2969b0a
commit 381852b3bd
Signed by: affine
GPG key ID: 3A4645B8CF806069
9 changed files with 122 additions and 23 deletions

View file

@ -38,6 +38,7 @@ mod eval_tests {
Box::from(Ctr::None),
)),
}),
..Default::default()
};
syms.insert(String::from("echo"), test_external_func);
@ -64,6 +65,7 @@ mod eval_tests {
Box::from(Ctr::None),
)),
}),
..Default::default()
};
syms.insert(String::from("echo"), test_external_func);

View file

@ -22,6 +22,7 @@ mod func_tests {
Ok(Ctr::Bool(is_bool))
},
)),
..Default::default()
};
let args = Seg::from(Box::new(Ctr::Bool(true)), Box::new(Ctr::None));
syms.insert(String::from("test_func_in"), test_internal_func);
@ -46,6 +47,7 @@ mod func_tests {
arg_syms: vec!["input".to_string()],
ast: finner,
}),
..Default::default()
};
let args = Seg::from(
@ -75,6 +77,7 @@ mod func_tests {
arg_syms: vec!["input".to_string()],
ast: finner,
}),
..Default::default()
};
let args = Seg::from(
@ -114,6 +117,7 @@ mod func_tests {
}
},
)),
..Default::default()
};
let finner = lex(&"((test_inner true))".to_string()).unwrap();
@ -126,6 +130,7 @@ mod func_tests {
arg_syms: vec!["input".to_string()],
ast: finner,
}),
..Default::default()
};
let args = Seg::from(Box::new(Ctr::Bool(true)), Box::new(Ctr::None));
@ -157,6 +162,7 @@ mod func_tests {
Ok(Ctr::Bool(is_bool))
},
)),
..Default::default()
};
let args = Seg::from(Box::new(Ctr::Integer(1)), Box::new(Ctr::None));
@ -182,6 +188,7 @@ mod func_tests {
arg_syms: vec!["input".to_string()],
ast: finner,
}),
..Default::default()
};
let args = Seg::from(
@ -211,6 +218,7 @@ mod func_tests {
arg_syms: vec!["input".to_string()],
ast: finner,
}),
..Default::default()
};
let args = Seg::new();
@ -241,6 +249,7 @@ mod func_tests {
Ok(Ctr::Bool(is_bool))
},
)),
..Default::default()
};
let args = Seg::from(
Box::new(Ctr::Symbol("undefined-symbol".to_string())),