mirror of
https://github.com/Noratrieb/dilaria.git
synced 2026-01-14 17:35:03 +01:00
fix top level
This commit is contained in:
parent
9837713771
commit
c6e5a5d686
5 changed files with 68 additions and 39 deletions
25
src/lib.rs
25
src/lib.rs
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue