| author | wenzelm | 
| Thu, 31 May 2007 20:55:29 +0200 | |
| changeset 23171 | 861f63a35d31 | 
| parent 23139 | aa899bce7c3b | 
| child 24600 | 5877b88f262c | 
| permissions | -rw-r--r-- | 
| 21653 | 1 | (* Title: Pure/ML-Systems/polyml-5.0.ML | 
| 2 | ID: $Id$ | |
| 3 | ||
| 4 | Compatibility wrapper for Poly/ML 5.0. | |
| 5 | *) | |
| 6 | ||
| 7 | use "ML-Systems/polyml.ML"; | |
| 8 | ||
| 9 | val pointer_eq = PolyML.pointerEq; | |
| 21771 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 wenzelm parents: 
21653diff
changeset | 10 | |
| 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 wenzelm parents: 
21653diff
changeset | 11 | |
| 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 wenzelm parents: 
21653diff
changeset | 12 | (* improved versions of use_text/file *) | 
| 21853 
ae3707892310
activated improved use_ml, which captures output and reports source positions;
 wenzelm parents: 
21771diff
changeset | 13 | |
| 22144 | 14 | fun use_text name (print, err) verbose txt = | 
| 21771 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 wenzelm parents: 
21653diff
changeset | 15 | let | 
| 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 wenzelm parents: 
21653diff
changeset | 16 | val in_buffer = ref (explode txt); | 
| 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 wenzelm parents: 
21653diff
changeset | 17 | val out_buffer = ref ([]: string list); | 
| 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 wenzelm parents: 
21653diff
changeset | 18 | fun output () = implode (rev (case ! out_buffer of "\n" :: cs => cs | cs => cs)); | 
| 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 wenzelm parents: 
21653diff
changeset | 19 | |
| 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 wenzelm parents: 
21653diff
changeset | 20 | val line_no = ref 1; | 
| 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 wenzelm parents: 
21653diff
changeset | 21 | fun line () = ! line_no; | 
| 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 wenzelm parents: 
21653diff
changeset | 22 | fun get () = | 
| 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 wenzelm parents: 
21653diff
changeset | 23 | (case ! in_buffer of | 
| 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 wenzelm parents: 
21653diff
changeset | 24 | [] => "" | 
| 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 wenzelm parents: 
21653diff
changeset | 25 | | c :: cs => (in_buffer := cs; if c = "\n" then line_no := ! line_no + 1 else (); c)); | 
| 21923 
663108ee4eef
use_ml: reverted to simple output (Poly/ML changed);
 wenzelm parents: 
21853diff
changeset | 26 | fun put s = out_buffer := s :: ! out_buffer; | 
| 21771 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 wenzelm parents: 
21653diff
changeset | 27 | |
| 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 wenzelm parents: 
21653diff
changeset | 28 | fun exec () = | 
| 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 wenzelm parents: 
21653diff
changeset | 29 | (case ! in_buffer of | 
| 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 wenzelm parents: 
21653diff
changeset | 30 | [] => () | 
| 21923 
663108ee4eef
use_ml: reverted to simple output (Poly/ML changed);
 wenzelm parents: 
21853diff
changeset | 31 | | _ => (PolyML.compilerEx (get, put, line, name) (); exec ())); | 
| 21771 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 wenzelm parents: 
21653diff
changeset | 32 | in | 
| 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 wenzelm parents: 
21653diff
changeset | 33 | exec () handle exn => (err (output ()); raise exn); | 
| 21923 
663108ee4eef
use_ml: reverted to simple output (Poly/ML changed);
 wenzelm parents: 
21853diff
changeset | 34 | if verbose then print (output ()) else () | 
| 21771 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 wenzelm parents: 
21653diff
changeset | 35 | end; | 
| 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 wenzelm parents: 
21653diff
changeset | 36 | |
| 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 wenzelm parents: 
21653diff
changeset | 37 | fun use_file output verbose name = | 
| 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 wenzelm parents: 
21653diff
changeset | 38 | let | 
| 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 wenzelm parents: 
21653diff
changeset | 39 | val instream = TextIO.openIn name; | 
| 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 wenzelm parents: 
21653diff
changeset | 40 | val txt = TextIO.inputAll instream before TextIO.closeIn instream; | 
| 22144 | 41 | in use_text name output verbose txt end; |