mclangc/src/main.rs
2026-01-17 16:31:40 +02:00

37 lines
1003 B
Rust

use std::{path::PathBuf, process::ExitCode};
use clap::Parser;
// Importing logger here too cause the logger macros dont work outside the mclanc lib
mod logger;
fn main() -> anyhow::Result<()> {
let cli = mclangc::cli::CliArgs::parse();
cli.set_log_level();
cli.validate();
let mut progs = Vec::new();
for file in &cli.input {
let fp = PathBuf::from(file);
if !fp.exists() {
error!("File {fp:?} doesnt exits, exiting");
anyhow::bail!("")
}
let data = std::fs::read_to_string(&fp).unwrap();
info!("Tokenising {file}");
let tokens = mclangc::tokeniser::tokenise(&data, &file)?;
info!("Parsing {file}");
let mut prog = mclangc::parser::parse_program(tokens)?;
info!("Validating {file}");
dbg!(&prog);
mclangc::validator::validate_code(&mut prog)?;
//dbg!(&prog);
progs.push((fp, prog));
}
mclangc::targets::compile(&cli, progs)?;
Ok(())
}