#pragma once #include namespace Fig::Ast { class ElseSt final : public StatementAst { public: BlockStatement body; ElseSt() { type = AstType::ElseSt; } ElseSt(BlockStatement _body) : body(_body) { type = AstType::ElseSt; } virtual FString toString() override { return FString(std::format("", aai.line, aai.column)); } }; using Else = std::shared_ptr; class ElseIfSt final : public StatementAst { public: Expression condition; BlockStatement body; ElseIfSt() { type = AstType::ElseIfSt; } ElseIfSt(Expression _condition, BlockStatement _body) : condition(_condition), body(_body) { type = AstType::ElseIfSt; } virtual FString toString() override { return FString(std::format("", aai.line, aai.column)); } }; using ElseIf = std::shared_ptr; class IfSt final : public StatementAst { public: Expression condition; BlockStatement body; std::vector elifs; Else els; IfSt() { type = AstType::IfSt; } IfSt(Expression _condition, BlockStatement _body, std::vector _elifs, Else _els) : condition(_condition), body(_body), elifs(_elifs), els(_els) { type = AstType::IfSt; } }; using If = std::shared_ptr; }; // namespace Fig