nova-interpreter 0.1.1

An interpreter library for the nova language
Documentation
#![feature(let_chains, vec_into_raw_parts)]

use engine::Engine;
use primitives::add_memory_manipulation_builtins;

use crate::utils::interner::Interner;

pub mod engine;
pub mod parser;
pub mod primitives;
pub mod utils;

/// Creates an engine with some default builtins for memory
/// manipulation
pub fn engine_with_default_builtins() -> Engine {
    let interner = Interner::<String>::default();

    let mut engine = Engine::new(interner);

    engine.with_builtins(&|builtins, interner| {
        add_memory_manipulation_builtins(interner, builtins);
    });

    engine
}