algorithmify 0.1.1

Create specifications for algorithms defined using Rust code
Documentation
use crate::{interpreter::context::Context, Expression};

use super::Statement;

#[derive(Debug, Clone, PartialEq)]
pub struct Block {
    pub statements: Vec<Statement>,
}

impl Block {
    pub(crate) fn execute(&self, context: &mut Context) -> Result<Expression, anyhow::Error> {
        let mut result = Expression::Unit;

        context.push_stack();

        for statement in &self.statements {
            result = statement.execute(context)?;
        }

        context.pop_stack();

        Ok(result)
    }
}