// Container Data Types --- Tuple/List/Map... #pragma once #include #include namespace Fig::Ast { class ListExprAst final : public ExpressionAst { public: std::vector val; ListExprAst() { type = AstType::ListExpr; } ListExprAst(std::vector _val) : val(std::move(_val)) { type = AstType::ListExpr; } }; using ListExpr = std::shared_ptr; class TupleExprAst final : public ExpressionAst { public: std::vector val; TupleExprAst() { type = AstType::TupleExpr; } TupleExprAst(std::vector _val) : val(std::move(_val)) { type = AstType::TupleExpr; } }; using TupleExpr = std::shared_ptr; class MapExprAst final : public ExpressionAst { public: std::map val; MapExprAst() { type = AstType::MapExpr; } MapExprAst(std::map _val) : val(std::move(_val)) { type = AstType::MapExpr; } }; using MapExpr = std::shared_ptr; }; // namespace Fig::Ast