use clap::Parser; use std::{fs, path::PathBuf}; use lang::parser::{ parser::{self, grammar, input, output::Output}, syntax_kind, }; #[derive(Parser)] struct Args { file: PathBuf, } #[allow(clippy::unwrap_used)] fn main() { let args = Args::parse(); let n = args.file.clone(); let f = fs::read_to_string(n.clone()).expect("failed to read file"); let toks = dbg!(syntax_kind::lex(&f)); let input = input::Input::new(&toks); let mut parser = parser::Parser::new(input); grammar::source_file(&mut parser); let p_out = dbg!(parser.finish()); let o = Output::from_parser_output(toks, p_out); println!("Out: {:?}", o); // let parse_res = parser::parse(&f); // println!("parse: {:?}", parse_res); // dbg!(lex::lex(&f)); // let mut err_collector = ErrorCollector::new(vec![(n.to_str().unwrap(), &f)]); // println!("file: {f}\n"); // let parse_res = parse(&f); // err_collector.insert_many( // args.file.to_str().unwrap(), // lang::err_reporting::Stage::Parse, // parse_res // .errors() // .into_iter() // .map(|e| e.to_owned()) // .collect::>(), // ); // err_collector.report_raw(); // println!("res: {:?}", parse_res); }