vars in parsing tree
This commit is contained in:
parent
8518d632a8
commit
abb904e5f5
2
TODO
2
TODO
@ -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
2
gen.c
@ -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
1
gen.h
@ -10,7 +10,6 @@
|
||||
typedef struct Gen
|
||||
{
|
||||
size_t labelno;
|
||||
Vec var_desc;
|
||||
} Gen;
|
||||
|
||||
Gen gen_new(void);
|
||||
|
7
pnode.c
7
pnode.c
@ -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)
|
||||
|
1
pnode.h
1
pnode.h
@ -31,6 +31,7 @@ typedef struct PNode
|
||||
struct PNode*parentnode;
|
||||
Vec tokens;
|
||||
Vec pnodes;
|
||||
Vec vars;
|
||||
uint32_t type;
|
||||
size_t firstline;
|
||||
} PNode;
|
||||
|
2
x86_64.c
2
x86_64.c
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user