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); } } }