diff --git a/schala-lang/language/src/parser.rs b/schala-lang/language/src/parser.rs index 704e05d..a3d1b3e 100644 --- a/schala-lang/language/src/parser.rs +++ b/schala-lang/language/src/parser.rs @@ -346,9 +346,13 @@ fn expr_or_block(text: &str) -> ParseResult { fn block(text: &str) -> ParseResult { //TODO fix this so it can handle nested statements + let make_expr = |e| Statement { id: ItemId::new(0), kind: StatementKind::Expression(e) }; delimited(ws(tag("{")), - separated_nonempty_list(statement_sep, - map(expression, |e| Statement { id: ItemId::new(0), kind: StatementKind::Expression(e) }) + delimited(opt(many0(statement_sep)), + separated_nonempty_list(many1(statement_sep), + map(expression, make_expr) + ), + opt(many0(statement_sep)) ), ws(tag("}")))(text) }