Documentation
use kes::builtin::Builtin;
use kes::bumpalo::Bump;
use kes::context::Context;
use kes::parser::parse;
use kes::value::Value;

pub struct StdioBuiltin;

impl Builtin for StdioBuiltin {
    #[inline(always)]
    fn run(&mut self, _name: &str, _ctx: &mut Context) {
        unimplemented!();
    }
    #[inline(always)]
    fn print(&mut self, v: Value) {
        print!("{}", v);
    }
    #[inline(always)]
    fn new_line(&mut self) {
        println!();
    }
    #[inline(always)]
    fn wait(&mut self) {
        let mut buf = String::new();
        std::io::stdin().read_line(&mut buf).unwrap();
    }
}

fn main() {
    let bump = Bump::with_capacity(8196);

    let script = parse(&bump, include_str!("fib.kes")).unwrap();

    let ctx = Context::new(&bump, &script);

    ctx.run(StdioBuiltin);
}