#ifndef STATEMENT_ASTNODE_H #define STATEMENT_ASTNODE_H #include #include "astnode.h" #include "expr_astnode.h" class Statement_ASTNode : public ASTNodeBase { public: virtual ~Statement_ASTNode() = default; }; class EmptyStatement_ASTNode : public Statement_ASTNode {}; class DefinitionStatement_ASTNode : public Statement_ASTNode { ExprTypeInfo type; std::vector>> vars; }; class ExprStatement_ASTNode : public Statement_ASTNode { std::shared_ptr expr; }; class IfStatement_ASTNode : public Statement_ASTNode { bool has_else_clause; std::shared_ptr condition; std::shared_ptr if_clause; std::shared_ptr else_clause; }; class WhileStatement_ASTNode : public Statement_ASTNode { std::shared_ptr condition; std::shared_ptr loop_body; }; class ForStatement_ASTNode : public Statement_ASTNode { std::shared_ptr initial; std::shared_ptr condition; std::shared_ptr update; std::shared_ptr loop_body; }; class JmpStatement_ASTNode : public Statement_ASTNode { std::shared_ptr return_value; }; class SuiteStatement_ASTNode : public Statement_ASTNode { std::vector> statements; }; #endif // STATEMENT_ASTNODE_H