From 28c733a5c818a45c8f7e3bed7fe1f69724025dd3 Mon Sep 17 00:00:00 2001 From: Sofia Date: Thu, 30 Apr 2026 19:59:38 +0300 Subject: [PATCH] Add parsing of compound statements --- src/parsing.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/parsing.cpp b/src/parsing.cpp index 74141af..529839e 100644 --- a/src/parsing.cpp +++ b/src/parsing.cpp @@ -523,6 +523,23 @@ namespace parsing { token::TokenStream inner{ stream }; auto before_meta = inner.metadata(); try { + if (inner.peek().type == token::Type::Symbol && inner.peek().content == "{") { + inner.expect(token::Type::Symbol, "{"); + std::vector> statements{}; + Scope inner_scope{ scope }; + while (inner.peek().content != "}") { + auto res = parse_statement(inner, inner_scope).unwrap(); + if (res.second) + inner.expect(token::Type::Symbol, ";"); + statements.push_back(std::move(res.first)); + } + inner.expect(token::Type::Symbol, "}"); + auto ret = new AST::CompoundStatement{ before_meta + stream.metadata(),std::move(statements) }; + + stream.m_position = inner.m_position; + + return std::pair{ std::unique_ptr{ret}, false }; + } if (inner.peek().type == token::Type::ReturnKeyword) { inner.next(); auto expression = parse_expression(inner, scope).unwrap();