src/Pure/ML/ml_compiler.ML
changeset 56281 03c3d1a7c3b8
parent 56275 600f432ab556
child 56303 4cc3f4db3447
equal deleted inserted replaced
56280:f7de8392a507 56281:03c3d1a7c3b8
     9   val exn_messages_ids: exn -> Runtime.error list
     9   val exn_messages_ids: exn -> Runtime.error list
    10   val exn_messages: exn -> (serial * string) list
    10   val exn_messages: exn -> (serial * string) list
    11   val exn_message: exn -> string
    11   val exn_message: exn -> string
    12   val exn_error_message: exn -> unit
    12   val exn_error_message: exn -> unit
    13   val exn_trace: (unit -> 'a) -> 'a
    13   val exn_trace: (unit -> 'a) -> 'a
       
    14   val print_depth_raw: Config.raw
       
    15   val print_depth: int Config.T
       
    16   val get_print_depth: unit -> int
    14   type flags = {SML: bool, verbose: bool}
    17   type flags = {SML: bool, verbose: bool}
    15   val eval: flags -> Position.T -> ML_Lex.token list -> unit
    18   val eval: flags -> Position.T -> ML_Lex.token list -> unit
    16 end
    19 end
    17 
    20 
    18 structure ML_Compiler: ML_COMPILER =
    21 structure ML_Compiler: ML_COMPILER =
    19 struct
    22 struct
       
    23 
       
    24 (* exceptions *)
    20 
    25 
    21 val exn_info =
    26 val exn_info =
    22  {exn_position = fn _: exn => Position.none,
    27  {exn_position = fn _: exn => Position.none,
    23   pretty_exn = Pretty.str o General.exnMessage};
    28   pretty_exn = Pretty.str o General.exnMessage};
    24 
    29 
    26 val exn_messages = Runtime.exn_messages exn_info;
    31 val exn_messages = Runtime.exn_messages exn_info;
    27 val exn_message = Runtime.exn_message exn_info;
    32 val exn_message = Runtime.exn_message exn_info;
    28 
    33 
    29 val exn_error_message = Output.error_message o exn_message;
    34 val exn_error_message = Output.error_message o exn_message;
    30 fun exn_trace e = print_exception_trace exn_message e;
    35 fun exn_trace e = print_exception_trace exn_message e;
       
    36 
       
    37 
       
    38 (* print depth *)
       
    39 
       
    40 val print_depth_raw =
       
    41   Config.declare "ML_print_depth" (fn _ => Config.Int (get_default_print_depth ()));
       
    42 val print_depth = Config.int print_depth_raw;
       
    43 
       
    44 fun get_print_depth () =
       
    45   (case Context.thread_data () of
       
    46     NONE => get_default_print_depth ()
       
    47   | SOME context => Config.get_generic context print_depth);
       
    48 
       
    49 
       
    50 (* eval *)
    31 
    51 
    32 type flags = {SML: bool, verbose: bool};
    52 type flags = {SML: bool, verbose: bool};
    33 
    53 
    34 fun eval {SML, verbose} pos toks =
    54 fun eval {SML, verbose} pos toks =
    35   let
    55   let