#pragma once #include "AST/Base.h" #include #include namespace ast { class BlockExpr : public Expr { const std::vector> stmts; const std::unique_ptr result; public: BlockExpr(LOC_ARG, std::vector> &stmts, std::unique_ptr &result) : Expr(location), stmts(std::move(stmts)), result(std::move(result)) {} virtual std::string str() { std::stringstream ss; ss << "BlockExpr("; ss << "stmts=["; for (size_t i = 0; i < stmts.size(); i++) { ss << stmts[i]->str(); if (i != stmts.size() - 1) ss << ", "; } ss << "], "; ss << "result=" << result->str(); ss << ")"; return ss.str(); } }; }