pub fn execute(env: &impl Environment, ast: &Expression) -> Result<Value>Expand description
Executes an Expression using an Environment.
§Example
use slac::{Expression, Operator, Value};
use slac::{execute, StaticEnvironment};
let env = StaticEnvironment::default();
let ast = Expression::Binary {
left: Box::new(Expression::Literal {
value: Value::Number(40.0),
}),
right: Box::new(Expression::Literal {
value: Value::Number(2.0),
}),
operator: Operator::Plus,
};
assert_eq!(Ok(Value::Number(42.0)), execute(&env, &ast));§Remarks
- Currently uses an
TreeWalkingInterpreterto evaluate the AST. - Will short-circuit boolean expression.
- Invalid operations will be evaluated to an
Error. - Comparison of empty Values (
Value::empty()) againstError::UndefinedVariableis a valid operation- e.g:
undefined_var = ''is valid
- e.g:
§Errors
Returns Error when encountering an error at runtime.