use clap::Parser;
use std::{fs, path::PathBuf};

use lang::lst_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 = lst_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!("{}", o.debug_colored());

    // World::new(n);
}
