if (ast == NULL)
return;
for (int i = 0; i<ast->ndecls; i++)
- decl_print(ast->decls[i], 0, out);
+ decl_print(ast->decls[i], out);
}
void vardecl_print(struct vardecl *decl, int indent, FILE *out)
safe_fprintf(out, ";\n");
}
-void decl_print(struct decl *decl, int indent, FILE *out)
+void decl_print(struct decl *decl, FILE *out)
{
if (decl == NULL)
return;
switch(decl->type) {
case dfundecl:
- pindent(indent, out);
safe_fprintf(out, "%s (", decl->data.dfun.ident);
for (int i = 0; i<decl->data.dfun.nargs; i++) {
safe_fprintf(out, "%s", decl->data.dfun.args[i]);
}
safe_fprintf(out, " {\n");
for (int i = 0; i<decl->data.dfun.nbody; i++)
- stmt_print(decl->data.dfun.body[i], indent+1, out);
- pindent(indent, out);
+ stmt_print(decl->data.dfun.body[i], 1, out);
safe_fprintf(out, "}\n");
break;
case dvardecl:
- vardecl_print(decl->data.dvar, indent, out);
+ vardecl_print(decl->data.dvar, 0, out);
+ break;
+ case dcomponent:
+ for (int i = 0; i<decl->data.dcomponent.ndecls; i++)
+ decl_print(decl, out);
break;
default:
die("Unsupported decl node\n");
if (decl == NULL)
return;
switch(decl->type) {
+ case dcomponent:
+ for (int i = 0; i<decl->data.dcomponent.ndecls; i++)
+ decl_free(decl->data.dcomponent.decls[i]);
+ free(decl->data.dcomponent.decls);
+ break;
case dfundecl:
free(decl->data.dfun.ident);
for (int i = 0; i<decl->data.dfun.nargs; i++)