#ifndef AST_H #define AST_H #include typedef enum { AST_TYPE_NUM, AST_TYPE_CALL, AST_TYPE_MAX = AST_TYPE_CALL } ASTType; typedef struct { ASTType type; void* data; } AST; AST* ast_init(ASTType type, void* data); void ast_destroy(AST* ast); typedef struct { int val; } ASTTypeNum; ASTTypeNum* ast_type_num_init(int val); void ast_type_num_destroy(ASTTypeNum* num); typedef struct { char* to; // What the call's to. size_t argc; // Argument count. AST** argv; // Argument vector. } ASTTypeCall; ASTTypeCall* ast_type_call_init(char* to, size_t argc, AST** argv); void ast_type_call_destroy(ASTTypeCall* call); #endif