added unary ops and control flow for parser

This commit is contained in:
2024-10-14 00:54:27 -04:00
parent d67e612ff9
commit e33420e91f
19 changed files with 433 additions and 237 deletions
+13 -17
View File
@@ -1,33 +1,25 @@
use std::io::{stdout, BufRead, BufReader};
mod body;
mod cursor;
mod error;
mod expr;
mod module;
mod node;
mod op;
mod nodes;
mod parse;
mod token;
mod val;
mod statement;
mod func;
pub use body::*;
pub use cursor::*;
pub use error::*;
pub use expr::*;
pub use module::*;
pub use node::*;
pub use op::*;
pub use nodes::*;
pub use parse::*;
use token::*;
pub use val::*;
pub use statement::*;
pub fn parse_file(file: &str) {
let mut errors = ParserErrors::new();
let node = Module::parse_node(&mut TokenCursor::from(file), &mut errors);
let res = Module::parse_node(&mut TokenCursor::from(file), &mut errors);
println!("{:?}", res.node);
if errors.errs.is_empty() {
let module = node.resolve().expect("what");
let module = res.node.resolve().expect("what");
}
let out = &mut stdout();
for err in errors.errs {
@@ -40,8 +32,12 @@ 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) = Statement::parse_node(&mut cursor, &mut errors).as_ref() {
println!("{:?}", expr);
if let Ok(expr) = Statement::parse_node(&mut cursor, &mut errors).node.as_ref() {
if cursor.next().is_none() {
println!("{:?}", expr);
} else {
println!("uhhhh ehehe");
}
}
let out = &mut stdout();
for err in errors.errs {