#![feature(let_chains)] use std::{env, fs, io::Write, path::PathBuf}; mod asm_gen; mod compiler; mod interpreter; mod tokenizer; fn main() { let program: Vec = load_program(); let tokens = tokenizer::Tokenizer::default().tokenize(program); let asm = asm_gen::generate(tokens); let mut file = fs::File::create("./demo.asm").unwrap(); file.write_all(asm.as_bytes()).unwrap(); // interpreter::run(program); } fn load_program() -> Vec { let args: Vec = env::args().collect(); let input = args.get(1).expect("malformed arguments"); let path: PathBuf = input.into(); let input = fs::read_to_string(path).expect("failed to read the program file"); input.as_bytes().to_vec() }