spaik 0.3.1

The SPAIK Programming Language
Documentation
#[cfg(all(target_env = "musl", target_pointer_width = "64"))]
use jemallocator::Jemalloc;
#[cfg(all(target_env = "musl", target_pointer_width = "64"))]
#[global_allocator]
static GLOBAL: Jemalloc = Jemalloc;
use spaik::Spaik;
use std::env;
use std::fs::File;
use std::io::prelude::*;
use std::io;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let args: Vec<String> = env::args().skip(1).collect();
    let mut f: Box<dyn Read> = match &args[..] {
        [file] => Box::new(File::open(file)?),
        [] => Box::new(io::stdin()),
        _ => panic!("Invalid arguments: {:?}", args),
    };
    let mut code = String::new();
    if f.read_to_string(&mut code).is_err() {
        return Ok(())
    }
    let mut vm = Spaik::new();
    match vm.exec(&code) {
        Ok(_) => (),
        Err(e) => eprintln!("{}", e),
    }
    vm.trace_report();

    Ok(())
}