vars in parsing tree

This commit is contained in:
corey 2023-11-11 13:12:43 -06:00
parent 8518d632a8
commit abb904e5f5
6 changed files with 11 additions and 4 deletions

2
TODO
View File

@ -28,6 +28,8 @@ Code Generator
* Code generator state
- Variable data
> Binding vars to memory locations
>> register, immediate, RAM
> Connect to stack frames
- Function data
- "Run" build architecture

2
gen.c
View File

@ -4,11 +4,9 @@ Gen gen_new(void)
{
Gen gen;
gen.labelno=0;
gen.var_desc=vec_new(sizeof(Var));
return gen;
}
void gen_free(Gen*gen)
{
vec_free(&gen->var_desc);
}

1
gen.h
View File

@ -10,7 +10,6 @@
typedef struct Gen
{
size_t labelno;
Vec var_desc;
} Gen;
Gen gen_new(void);

View File

@ -59,6 +59,13 @@ void pnode_free(PNode*n)
tok_free(vec_at(&n->tokens,i,Tok*));
vec_free(&n->tokens);
}
if(n->vars.buffer)
{
var_free(vec_at(&n->vars,0,Var*));
vec_free(&n->vars);
}
}
PNode*pnode_pushnode(PNode*n)

View File

@ -31,6 +31,7 @@ typedef struct PNode
struct PNode*parentnode;
Vec tokens;
Vec pnodes;
Vec vars;
uint32_t type;
size_t firstline;
} PNode;

View File

@ -44,7 +44,7 @@ void gen_x86_64(Gen*gen,const PNode*pn,FILE*file)
.name=vec_at(&pn->tokens,0,const Tok*)->str.buffer,
.type=I32,
};
vec_push(&gen->var_desc,&var);
/* vec_push(&gen->var_desc,&var); */
}
else if(pn->tokens.size==0)
err_log("%u: expected identifier",pn->firstline);