fix top level

This commit is contained in:
nora 2021-10-31 12:29:17 +01:00
parent 9837713771
commit c6e5a5d686
5 changed files with 68 additions and 39 deletions

View file

@ -7,24 +7,27 @@ mod parse;
pub fn run_program(program: &str) {
let lexer = lex::Lexer::lex(program);
let (success, errors) = lexer.partition::<Vec<_>, _>(|result| result.is_ok());
//
// // terrible, but works
// let tokens = success.into_iter().collect::<Result<_, _>>();
// let _ast = parse::parse(tokens.unwrap());
if errors.is_empty() {
let tokens = success.into_iter().collect::<Result<Vec<_>, _>>().unwrap();
println!(
"{:#?}",
success
.into_iter()
.map(Result::unwrap)
.map(|token| token.kind)
.collect::<Vec<_>>()
"{:?}",
tokens.iter().map(|token| &token.kind).collect::<Vec<_>>()
);
let ast = parse::parse(tokens);
match ast {
Ok(ast) => println!("{:#?}", ast),
Err(err) => {
eprintln!("{:?}", err)
}
}
} else {
errors
.into_iter()
.map(Result::unwrap_err)
.for_each(|err| crate::errors::display_error(program, err));
.for_each(|err| errors::display_error(program, err));
}
}