Calling functions is working, same syntax as compound stmts
This commit is contained in:
52
ccodegen.cpp
52
ccodegen.cpp
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user