use crate::errors::CLIArgumentError; use lrlex::lrlex_mod; use lrpar::lrpar_mod; use std::error::Error; use std::fmt::{Display, format}; use std::io; use std::io::ErrorKind::InvalidInput; mod ast; mod errors; mod optimising; mod tests; lrlex_mod!("grammar.l"); lrpar_mod!("grammar.y"); fn main() -> Result<(), Box> { let src_path = std::env::args() .nth(1) .ok_or(Box::new(CLIArgumentError("Source File Not Provided")))?; let src_string = std::fs::read_to_string(&src_path)?; let lexerdef = grammar_l::lexerdef(); let lexer = lexerdef.lexer((src_string.as_str())); let (res, errs) = grammar_y::parse(&lexer); if let Some(Ok(res)) = res { println!("{:#?}", res); } Ok(()) } // fn main() { // if let Err(ref e) = main_() { // return e.fmt() // } // }