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();