Compare commits
1 Commits
6b13991e39
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
| b0acadc601 |
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user