#![allow(dead_code)] mod common; mod vm; use std::{env, fs, io, process}; type Result = std::result::Result>; fn get_input_string() -> io::Result { let args: Vec = env::args().collect(); if args.len() <= 1 { println!( "usage: {} file.asm", args.get(0).map(String::as_str).unwrap_or("rasp") ); process::exit(1); } else { fs::read_to_string(&args[1]) } } fn main() -> Result<()> { use vm::obj::syn::{lexer, parser}; let text = get_input_string()?; let lexerdef = lexer::lexerdef(); let lexer = lexerdef.lexer(&text); let (res, errors) = parser::parse(&lexer); for err in errors { println!("{}", err.pp(&lexer, &parser::token_epp)); } println!("{:?}", res); Ok(()) }