deimos-lang/src/bin/dmc/name_analysis.rs
2025-05-15 21:13:43 -05:00

36 lines
1.1 KiB
Rust

use deimos::ast::build::build_ast;
use deimos::compile::name_analysis::{analyze_names, SymbolTable};
use deimos::parser::{DeimosParser, Rule};
use pest::Parser;
use std::path::Path;
pub fn name_analysis(path: &Path) {
let src = std::fs::read_to_string(path).unwrap();
let parse_result = DeimosParser::parse(
Rule::CompilationUnit,
&src
);
match parse_result {
Ok(mut pairs) => {
let compilation_unit_pair = pairs.next().unwrap();
let mut compilation_unit = build_ast(compilation_unit_pair);
let mut symbol_table = SymbolTable::new();
let name_analysis_result = analyze_names(
&mut compilation_unit,
&mut symbol_table,
);
match name_analysis_result {
Err(e) => {
eprintln!("{}", e);
}
Ok(_) => {
println!("name_analysis complete");
println!("{}", symbol_table);
}
}
}
Err(e) => {
eprintln!("{}", e);
}
}
}