Calling functions is working, same syntax as compound stmts

This commit is contained in:
Krzosa Karol
2022-05-30 09:04:34 +02:00
parent 802dce749e
commit c305d4da44
6 changed files with 118 additions and 95 deletions

View File

@@ -134,30 +134,40 @@ gen_expr(Ast_Expr *ast){
BREAK();
}
CASE(COMPOUND, Compound){
gen("(");
gen_simple_decl(node->type, {});
gen(")");
CASE(CALL, Call){
if(node->type == type_type){
gen("(");
gen_simple_decl(node->type, {});
gen(")");
gen("{");
For(node->exprs){
auto comp = it[0];
if(comp->name){
gen("[");
gen_expr(comp->name);
gen("] = ");
}
if(comp->index){
gen("[");
gen_expr(comp->index);
gen("] = ");
}
assert(comp->item);
gen_expr(comp->item);
gen("{");
For(node->exprs){
auto comp = it[0];
if(comp->name){
gen("[");
gen_expr(comp->name);
gen("] = ");
}
if(comp->index){
gen("[");
gen_expr(comp->index);
gen("] = ");
}
assert(comp->item);
gen_expr(comp->item);
if(!node->exprs.is_last(it)) gen(", ");
if(!node->exprs.is_last(it)) gen(", ");
}
gen("}");
}
else{
gen_expr(node->name);
gen("(");
For(node->exprs){
gen_expr(it[0]->item);
}
gen(")");
}
gen("}");
BREAK();
}