37 lines
684 B
C
37 lines
684 B
C
#ifndef AST_H
|
|
#define AST_H
|
|
|
|
#include <stdlib.h>
|
|
|
|
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
|