can now resolve AST nodes

This commit is contained in:
2024-10-13 19:07:49 -04:00
parent 77735953a5
commit d67e612ff9
12 changed files with 351 additions and 214 deletions
+11 -6
View File
@@ -6,8 +6,11 @@ mod error;
mod expr;
mod module;
mod node;
mod op;
mod token;
mod val;
mod statement;
mod func;
pub use body::*;
pub use cursor::*;
@@ -15,15 +18,17 @@ pub use error::*;
pub use expr::*;
pub use module::*;
pub use node::*;
pub use val::*;
pub use op::*;
use token::*;
pub use val::*;
pub use statement::*;
pub fn parse_file(file: &str) {
let mut errors = ParserErrors::new();
let node = Node::<Module>::parse(&mut TokenCursor::from(file), &mut errors);
if let Ok(module) = node.as_ref() {
println!("{module:#?}");
};
let node = Module::parse_node(&mut TokenCursor::from(file), &mut errors);
if errors.errs.is_empty() {
let module = node.resolve().expect("what");
}
let out = &mut stdout();
for err in errors.errs {
err.write_for(out, file).unwrap();
@@ -35,7 +40,7 @@ pub fn run_stdin() {
let mut errors = ParserErrors::new();
let str = &line.expect("failed to read line");
let mut cursor = TokenCursor::from(&str[..]);
if let Ok(expr) = Node::<Statement>::parse(&mut cursor, &mut errors).as_ref() {
if let Ok(expr) = Statement::parse_node(&mut cursor, &mut errors).as_ref() {
println!("{:?}", expr);
}
let out = &mut stdout();