src/Pure/ML-Systems/polyml_pp.ML
changeset 30627 fb9e73c01603
child 30672 beaadd5af500
equal deleted inserted replaced
30626:248de8dd839e 30627:fb9e73c01603
       
     1 (*  Title:      Pure/ML-Systems/polyml_pp.ML
       
     2 
       
     3 Toplevel pretty printing for Poly/ML before 5.3.
       
     4 *)
       
     5 
       
     6 fun ml_pprint (print, begin_blk, brk, end_blk) =
       
     7   let
       
     8     fun str "" = ()
       
     9       | str s = print s;
       
    10     fun pprint (ML_Pretty.Block ((bg, en), prts, ind)) =
       
    11           (str bg; begin_blk (ind, false); List.app pprint prts; end_blk (); str en)
       
    12       | pprint (ML_Pretty.String (s, _)) = str s
       
    13       | pprint (ML_Pretty.Break (false, wd)) = brk (wd, 0)
       
    14       | pprint (ML_Pretty.Break (true, _)) = brk (99999, 0);
       
    15   in pprint end;
       
    16 
       
    17 fun toplevel_pp tune str_of_pos output (_: string list) pp =
       
    18   use_text tune str_of_pos ML_NameSpace.global (1, "pp") output false
       
    19     ("install_pp (fn args => fn _ => fn _ => ml_pprint args o Pretty.to_ML o (" ^ pp ^ "))");
       
    20