#ifndef AST_DECLARATION_H #define AST_DECLARATION_H #include "expression.h" #include "../bool.h" typedef struct { /** @brief The name of the module being imported. */ char* module_name; /** @brief Whether the import is public or not. */ bool is_public; } ImportTree; /** * A declaration that aliases one type to another. */ typedef struct { /** @brief The name of the alias. */ const char* name; /** @brief The value of the alias. */ TypeTree value; } AliasTree; /** * A declaration of a variable, which may be a constant or not, and may be static or not. */ typedef struct { /** @brief The name of the variable. */ char* name; /** @brief The type of the variable. */ TypeTree type; /** @brief The optional initializer expression. */ ExpressionTree* initializer; /** @brief Whether the variable is public or not. */ bool is_public; /** @brief Whether the variable is static or not. */ bool is_static; /** @brief Whether the variable is a constant or not. */ bool is_const; } VariableTree; #endif