home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / C / Applications / Moscow ML 1.42 / src / compiler / Tr_const.sml < prev    next >
Encoding:
Text File  |  1997-08-18  |  778 b   |  27 lines  |  [TEXT/R*ch]

  1. local
  2.   open Obj Const Symtable;
  3. in
  4.  
  5. (* To translate a structured constant into an object. *)
  6.  
  7. fun translStructuredConst (ATOMsc(INTscon i)) = repr i
  8.   | translStructuredConst (ATOMsc(WORDscon w)) = repr w
  9.   | translStructuredConst (ATOMsc(CHARscon c)) = repr c
  10.   | translStructuredConst (ATOMsc(REALscon f)) = repr f
  11.   | translStructuredConst (ATOMsc(STRINGscon s)) = repr s
  12.   | translStructuredConst (BLOCKsc(tag, comps)) =
  13.       let val res = obj_block (intOfTag tag) (List.length comps) in
  14.         fillStructuredConst 0 res comps;
  15.         res
  16.       end
  17.   | translStructuredConst (QUOTEsc (ref v)) = v
  18.  
  19. and fillStructuredConst n obj = fn
  20.     [] => ()
  21.   | cst::rest =>
  22.       (set_obj_field obj n (translStructuredConst cst);
  23.        fillStructuredConst (n+1) obj rest)
  24. ;
  25.  
  26. end;
  27.