| author | wenzelm | 
| Thu, 06 Mar 2008 19:21:26 +0100 | |
| changeset 26215 | 94d32a7cd0fb | 
| parent 24605 | 98689b0e5956 | 
| child 26378 | bac8d5e5f833 | 
| 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  | 
||
| 
26215
 
94d32a7cd0fb
rearrangements to make latest Poly/ML the default, not old 4.x;
 
wenzelm 
parents: 
24605 
diff
changeset
 | 
7  | 
use "ML-Systems/polyml_common.ML";  | 
| 21653 | 8  | 
|
9  | 
val pointer_eq = PolyML.pointerEq;  | 
|
| 
21771
 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 
wenzelm 
parents: 
21653 
diff
changeset
 | 
10  | 
|
| 
 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 
wenzelm 
parents: 
21653 
diff
changeset
 | 
11  | 
|
| 
 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 
wenzelm 
parents: 
21653 
diff
changeset
 | 
12  | 
(* improved versions of use_text/file *)  | 
| 
21853
 
ae3707892310
activated improved use_ml, which captures output and reports source positions;
 
wenzelm 
parents: 
21771 
diff
changeset
 | 
13  | 
|
| 
24600
 
5877b88f262c
use_text/file: tune text (cf. ML_Parse.fix_ints);
 
wenzelm 
parents: 
23139 
diff
changeset
 | 
14  | 
fun use_text (tune: string -> string) name (print, err) verbose txt =  | 
| 
21771
 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 
wenzelm 
parents: 
21653 
diff
changeset
 | 
15  | 
let  | 
| 
24600
 
5877b88f262c
use_text/file: tune text (cf. ML_Parse.fix_ints);
 
wenzelm 
parents: 
23139 
diff
changeset
 | 
16  | 
val in_buffer = ref (explode (tune txt));  | 
| 
21771
 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 
wenzelm 
parents: 
21653 
diff
changeset
 | 
17  | 
val out_buffer = ref ([]: string list);  | 
| 
 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 
wenzelm 
parents: 
21653 
diff
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: 
21653 
diff
changeset
 | 
19  | 
|
| 
 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 
wenzelm 
parents: 
21653 
diff
changeset
 | 
20  | 
val line_no = ref 1;  | 
| 
 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 
wenzelm 
parents: 
21653 
diff
changeset
 | 
21  | 
fun line () = ! line_no;  | 
| 
 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 
wenzelm 
parents: 
21653 
diff
changeset
 | 
22  | 
fun get () =  | 
| 
 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 
wenzelm 
parents: 
21653 
diff
changeset
 | 
23  | 
(case ! in_buffer of  | 
| 
 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 
wenzelm 
parents: 
21653 
diff
changeset
 | 
24  | 
[] => ""  | 
| 
 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 
wenzelm 
parents: 
21653 
diff
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: 
21853 
diff
changeset
 | 
26  | 
fun put s = out_buffer := s :: ! out_buffer;  | 
| 
21771
 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 
wenzelm 
parents: 
21653 
diff
changeset
 | 
27  | 
|
| 
 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 
wenzelm 
parents: 
21653 
diff
changeset
 | 
28  | 
fun exec () =  | 
| 
 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 
wenzelm 
parents: 
21653 
diff
changeset
 | 
29  | 
(case ! in_buffer of  | 
| 
 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 
wenzelm 
parents: 
21653 
diff
changeset
 | 
30  | 
[] => ()  | 
| 
21923
 
663108ee4eef
use_ml: reverted to simple output (Poly/ML changed);
 
wenzelm 
parents: 
21853 
diff
changeset
 | 
31  | 
| _ => (PolyML.compilerEx (get, put, line, name) (); exec ()));  | 
| 
21771
 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 
wenzelm 
parents: 
21653 
diff
changeset
 | 
32  | 
in  | 
| 
 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 
wenzelm 
parents: 
21653 
diff
changeset
 | 
33  | 
exec () handle exn => (err (output ()); raise exn);  | 
| 
21923
 
663108ee4eef
use_ml: reverted to simple output (Poly/ML changed);
 
wenzelm 
parents: 
21853 
diff
changeset
 | 
34  | 
if verbose then print (output ()) else ()  | 
| 
21771
 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 
wenzelm 
parents: 
21653 
diff
changeset
 | 
35  | 
end;  | 
| 
 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 
wenzelm 
parents: 
21653 
diff
changeset
 | 
36  | 
|
| 24605 | 37  | 
fun use_file tune output verbose name =  | 
| 
21771
 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 
wenzelm 
parents: 
21653 
diff
changeset
 | 
38  | 
let  | 
| 
 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 
wenzelm 
parents: 
21653 
diff
changeset
 | 
39  | 
val instream = TextIO.openIn name;  | 
| 
 
148c8aba89dd
added improved versions of use_text/file (still inactive);
 
wenzelm 
parents: 
21653 
diff
changeset
 | 
40  | 
val txt = TextIO.inputAll instream before TextIO.closeIn instream;  | 
| 24605 | 41  | 
in use_text tune name output verbose txt end;  |