let genSub (p: proc) (dect: dec_table) (proct: proc_table) (ic: intermediateCode) = match p with
        Proc(id,plist,dlist,c)          ->  (
                                             let convertedPlist = (convertList ([(Par(id,Int))]@plist)) in
                                             Hashtbl.add proct id (Building(Void, convertedPlist));
                                             Hashtbl.replace proct id (genSubroutine id (convertedPlist) dlist dect proct c ic Void)
                                            )
      | Func(id,plist,Ret(r),dlist,c)   ->  (
                                             let convertedPlist = (convertList ([(Par(id,r))]@plist)) in
                                             Hashtbl.add proct id (Building(SRet(r), convertedPlist));
                                             Hashtbl.replace proct id (genSubroutine id (convertedPlist) dlist dect proct c ic (SRet(r)))
                                            )