Function evaluation work

This commit is contained in:
greg 2018-02-24 14:31:04 -08:00
parent 5da7c809b2
commit e7cabb2a79

View File

@ -143,10 +143,14 @@ impl<'a> State<'a> {
Expression(Value(identifier, _), _) => {
match self.values.get(&identifier) {
Some(&ValueEntry::Function { ref body }) => {
let new_state = State::new_with_parent(self);
let sub_ast = AST(body.clone());
println!("LOL ALL FUNCTIONS EVALUATE TO 2!");
Ok(FullyEvaluatedExpr::UnsignedInt(2))
let mut new_state = State::new_with_parent(self);
let sub_ast = body.clone();
let mut ret: Option<FullyEvaluatedExpr> = None;
for statement in sub_ast.into_iter() {
ret = new_state.eval_statement(statement)?;
}
Ok(ret.unwrap_or(FullyEvaluatedExpr::Custom { string_rep: Rc::new("()".to_string()) }))
},
_ => Err(format!("Function {} not found", identifier)),
}