add parser

This commit is contained in:
nora 2021-10-30 18:29:56 +02:00
parent 03fe10d7c0
commit a0e17c6042
4 changed files with 163 additions and 38 deletions

View file

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