ralix 0.2.0

A simple, type-safe, tree walking interpreter
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use crate::{EvalResult, Evaluator, Expression, Value, expressions::Identifier};

impl Evaluator<'_> {
    pub fn evaluate_binding(&mut self, ident: Identifier, value: Expression) -> EvalResult<Value> {
        let result = self.evaluate_expression(value);

        match result {
            EvalResult::Value(value) => self.ctx.define(ident, value),
            EvalResult::NoValue => self.ctx.define(ident, Value::NULL),
            EvalResult::Err(_) | EvalResult::Return(_) => return result,
        };

        EvalResult::NoValue
    }
}