added unary ops and control flow for parser
This commit is contained in:
+13
-17
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user