diff --git a/src/main.rs b/src/main.rs index 9379d1e..7338a4a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -13,6 +13,7 @@ use clap::Parser as ArgParser; use crate::{ast::parser::Parser, ir::{cfg, generator::Generator}, lexer::lexer::Lexer, sema::analyzer::Analyzer}; use crate::backend::generator::Generator as ASMGerenerator; + /// Simple minic compiler built by Rust #[derive(ArgParser, Debug)] #[command(version, about, long_about = None)] @@ -76,16 +77,19 @@ fn main() { let (tokens, diagnostics) = lexer.finish(); if !diagnostics.is_empty() { diagnostics.print(&format!("{}", source_path.display()), &full_text); + std::process::exit(1); } let mut parser = Parser::new(tokens, diagnostics); let compile_unit = parser.parse(); if !parser.diagnostics.is_empty() { parser.diagnostics.print(&format!("{}", source_path.display()), &full_text); + std::process::exit(1); } let mut analyzer = Analyzer::new(); let hir = analyzer.analyze(compile_unit); if !analyzer.get_diagnostics().is_empty() { analyzer.get_diagnostics().print(&format!("{}", source_path.display()), &full_text); + std::process::exit(1); } let mut generator = Generator::new(&analyzer); let ir = cfg::optimize_ir(generator.emit(hir));