home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-08-18 | 778 b | 27 lines | [TEXT/R*ch] |
- local
- open Obj Const Symtable;
- in
-
- (* To translate a structured constant into an object. *)
-
- fun translStructuredConst (ATOMsc(INTscon i)) = repr i
- | translStructuredConst (ATOMsc(WORDscon w)) = repr w
- | translStructuredConst (ATOMsc(CHARscon c)) = repr c
- | translStructuredConst (ATOMsc(REALscon f)) = repr f
- | translStructuredConst (ATOMsc(STRINGscon s)) = repr s
- | translStructuredConst (BLOCKsc(tag, comps)) =
- let val res = obj_block (intOfTag tag) (List.length comps) in
- fillStructuredConst 0 res comps;
- res
- end
- | translStructuredConst (QUOTEsc (ref v)) = v
-
- and fillStructuredConst n obj = fn
- [] => ()
- | cst::rest =>
- (set_obj_field obj n (translStructuredConst cst);
- fillStructuredConst (n+1) obj rest)
- ;
-
- end;
-