diff --git a/funcparser.c b/funcparser.c index 76f355a..648190f 100644 --- a/funcparser.c +++ b/funcparser.c @@ -9,8 +9,9 @@ int main(int argc, char** argv){ Token tk = tokenize_all("fn add(x: int, y: int) int {\n let z = x+y; return z;\n }"); size_t i=0; - Token final = {0}; - + Block final = {0}; + block_init(&final, 9191); + SymbolTable tb = {0}; symbol_table_init(&tb, 1212); @@ -23,7 +24,7 @@ int main(int argc, char** argv){ while (istatements = malloc(sizeof(Token) * initial_cap); + b->capacity = initial_cap; + b->size = 0; +} + void block_append(Block *b, Token t){ - if (b->capacity == 0) { - b->capacity = 192; - b = (Block*)malloc(sizeof(Token)*b->capacity); - } + // if (b->capacity == 0) { + // b->capacity = 192; + // b->size = 0; + // b->statements = (Token*)malloc(sizeof(Token)*b->capacity); + // } if (b->size >= b->capacity) { b->capacity *=2; b = (Block*)realloc(b, sizeof(Token)*b->capacity); @@ -392,7 +399,8 @@ Block *parse_func_def(Token *inp, size_t *idx, SymbolTable *sym) { (*idx)++; skip_space(inp, idx); - Block *block = {0}; + Block *block = (Block*)malloc(sizeof(Block)); + block_init(block, 55); Token statement = {0}; while (inp->type[*idx] != TOKEN_RCURLY && inp->type[*idx] != TOKEN_EOF) {