iowo/crates/lang/src/main.rs

49 lines
1.3 KiB
Rust
Raw Normal View History

2024-04-24 09:07:38 +00:00
use clap::Parser;
2024-04-02 22:08:00 +00:00
use std::{fs, path::PathBuf};
use lang::lst_parser::{self, grammar, input, output::Output, syntax_kind};
2024-04-02 22:08:00 +00:00
#[derive(Parser)]
struct Args {
file: PathBuf,
}
#[allow(clippy::unwrap_used)]
2024-04-02 22:08:00 +00:00
fn main() {
let args = Args::parse();
let n = args.file.clone();
let f = fs::read_to_string(n.clone()).expect("failed to read file");
2024-04-24 09:07:38 +00:00
let toks = dbg!(syntax_kind::lex(&f));
let input = input::Input::new(&toks);
let mut parser = lst_parser::Parser::new(input);
2024-04-24 09:07:38 +00:00
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)]);
2024-04-02 22:08:00 +00:00
// 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::<Vec<_>>(),
// );
// err_collector.report_raw();
// println!("res: {:?}", parse_res);
2024-04-02 22:08:00 +00:00
}