From 3de063134159235e4dcf9560b3d1a4e801154db3 Mon Sep 17 00:00:00 2001 From: LunarAkai Date: Thu, 7 Aug 2025 20:05:16 +0200 Subject: [PATCH] error on whitespaces / newlines :( --- .../abstract_syntax_tree/parser.rs | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/language_frontend/abstract_syntax_tree/parser.rs b/src/language_frontend/abstract_syntax_tree/parser.rs index eb4ef84..7e53c62 100644 --- a/src/language_frontend/abstract_syntax_tree/parser.rs +++ b/src/language_frontend/abstract_syntax_tree/parser.rs @@ -64,19 +64,21 @@ where add_sub }); + let decl = recursive(|decl| { + let r#var = just(Token::Var) + .ignore_then(ident) + .then_ignore(just(Token::Assign)) + .then(expr.clone()) + .then_ignore(just(Token::NewLine).or_not()) + .then(decl) + .map(|(name, rhs)| Expr::Assignment { + target: Box::new(Expr::Ident(name.0)), + value: Box::new(rhs), + }); + r#var.or(expr) + }); - let var = just(Token::Var) - .ignore_then(ident) - .then_ignore(just(Token::Assign)) - .then(expr.clone()) - .then_ignore(just(Token::NewLine).or_not()) - .map(|(name, rhs)| Expr::Assignment { - target: Box::new(Expr::Ident(name)), - value: Box::new(rhs), - }); - - - var.or(expr) + decl.then_ignore(end()) }