let rec c_generator (il: instruction list) (ic: intermediateCode) (out: out_channel) (n: int) (pl: element list) (proct: proc_table) = match il with
          []    ->  ()
        | i::is ->  (
                     if(ic#hasLabel n) then (
                        let l = (ic#getInstrLabel n) in 
                        output_string out ((c_element l) ^ ":\n");
                     );
                     let plnew = (c_instruction i out pl proct) in 
                     (c_generator is ic out (n+1) plnew proct)
                    )