#ifndef STRUCTURAL_ASTNODE_H #define STRUCTURAL_ASTNODE_H #include #include #include #include "astnode.h" #include "expr_astnode.h" #include "statement_astnode.h" class FuncDef_ASTNode : public ASTNodeBase { friend Visitor; bool is_constructor; IdentifierType func_name; ExprTypeInfo return_type; std::vector> params; std::shared_ptr func_body; public: FuncDef_ASTNode() = default; }; class ClassDef_ASTNode : public ASTNodeBase { friend Visitor; private: std::string class_name; std::vector> member_variables; std::vector> member_functions; std::shared_ptr constructor; public: ClassDef_ASTNode() = default; }; class Program_ASTNode : public ASTNodeBase { friend Visitor; std::vector> global_variables; std::vector> classes; std::vector> functions; public: Program_ASTNode() = default; }; #endif