let c_procedure (out: out_channel) (ic: intermediateCode) (proct: proc_table) (Ide(id): ide) (p: proc_entry) = match p with
Subroutine(r,dlist,dect,funcPar) -> (
let oldinstr = ic#getInstructionClass in (
ic#setInstructionClass funcPar;
print_DecTable (out) (dect);
output_string out (
(print_return r) ^ (id) ^ "(int baseptr) {\n" ^
(newstack_pointer ((Hashtbl.length dect) - List.length dlist))
);
c_generator (funcPar#getInl) (ic) (out) (0) [] proct;
output_string out "}\n\013";
ic#setInstructionClass oldinstr;
)
)
| Building(r,dlist) -> raise (CONFIRM_RULE "Why should I have some subroutines in building phase here?")