typedef struct decl_var {
char *name;
unsigned pointer_level;
+ unsigned array_size;
struct decl_arg *arg;
} decl_var;
-static inline decl_var *init_decl_var(char *name, unsigned pl) {
+static inline decl_var *init_decl_var(char *name, unsigned pl, unsigned as) {
decl_var *v = malloc(sizeof(*v));
v->name = (char *) strdup((const char *) name);
v->pointer_level = pl;
+ v->array_size = as;
return v;
}
typedef struct let_func {
token_t type;
char *name;
+ size_t size;
} let_func;
-static inline let_func *init_let_func(token_t type, char *name) {
+static inline let_func *init_let_func(token_t type, char *name, size_t size) {
let_func *func = malloc(sizeof(*func));
func->type = type;
- func->name = (char *) strdup((const char *) name);
+ func->name = strdup(name);
+ func->size = size;
return func;
}
static inline void free_let_stmt(let_stmt *stmt) {
free_decl_var(stmt->var);
- free_let_value(stmt->val);
+ if (stmt->val) {
+ free_let_value(stmt->val);
+ }
free(stmt);
}