#ifndef ASTNODE_H #define ASTNODE_H #include #include #include using IdentifierType = std::string; struct ArrayType { bool has_base_type; IdentifierType basetype; size_t level; }; using ExprTypeInfo = std::variant; class ASTNodeVisitorBase { public: virtual ~ASTNodeVisitorBase() = default; virtual void visit(class ASTNodeBase *context) = 0; }; enum class ASTNodeType { }; class ASTNodeBase { ASTNodeType type; // std::vector> children; size_t start_line, start_char_pos, end_line, end_char_pos; public: virtual ~ASTNodeBase() = default; virtual void accept(class ASTNodeVisitorBase *visitor) = 0; }; #endif