Implemented SymTable optimization for efficient variable updates
This commit is contained in:
parent
dcb2969b0a
commit
381852b3bd
9 changed files with 122 additions and 23 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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())),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue