#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 { IdentifierType func_name; std::vector> params; std::shared_ptr func_body; }; class Constructor_ASTNode : public FuncDef_ASTNode {}; class ClassVariable_ASTNode : public DefinitionStatement_ASTNode {}; class ClassDef_ASTNode : public ASTNodeBase { private: using ClassElement = std::variant, std::shared_ptr, std::shared_ptr>; std::vector elements; }; class Program_ASTNode : public ASTNodeBase { using ProgramElement = std::variant, std::shared_ptr, std::shared_ptr>; std::vector elements; }; #endif