src/Pure/Tools/codegen_serializer.ML
changeset 20216 f30b73385060
parent 20203 914433927687
child 20353 d73e49780ef2
equal deleted inserted replaced
20215:96a4b3b7a6aa 20216:f30b73385060
    24   val serializers: {
    24   val serializers: {
    25     ml: string * (string -> serializer),
    25     ml: string * (string -> serializer),
    26     haskell: string * (string * string list -> serializer)
    26     haskell: string * (string * string list -> serializer)
    27   };
    27   };
    28   val mk_flat_ml_resolver: string list -> string -> string;
    28   val mk_flat_ml_resolver: string list -> string -> string;
    29   val eval_term: string -> string list list
    29   val eval_term: string -> string -> string list list
    30       -> (string -> CodegenThingol.itype pretty_syntax option)
    30       -> (string -> CodegenThingol.itype pretty_syntax option)
    31             * (string -> CodegenThingol.iterm pretty_syntax option)
    31             * (string -> CodegenThingol.iterm pretty_syntax option)
    32       -> string list
    32       -> string list
    33       -> (string * 'a ref) * CodegenThingol.iterm -> CodegenThingol.module
    33       -> (string * 'a ref) * CodegenThingol.iterm -> CodegenThingol.module
    34       -> 'a;
    34       -> 'a;
   795     || parse_internal serializer
   795     || parse_internal serializer
   796     || parse_stdout serializer
   796     || parse_stdout serializer
   797     || parse_single_file serializer
   797     || parse_single_file serializer
   798   end;
   798   end;
   799 
   799 
   800 fun eval_term nsp_dtcon nspgrp (syntax_tyco, syntax_const) hidden ((ref_name, reff), e) modl =
   800 fun eval_term nsp_eval nsp_dtcon nspgrp (syntax_tyco, syntax_const) hidden ((ref_name, reff), e) modl =
   801   let
   801   let
   802     val (val_name, modl') = CodegenThingol.add_eval_def e modl;
   802     val (val_name, modl') = CodegenThingol.add_eval_def (nsp_eval, e) modl;
   803     val struct_name = "EVAL";
   803     val struct_name = "EVAL";
   804     val serializer = ml_serializer struct_name "ml" nsp_dtcon nspgrp
   804     val serializer = ml_serializer struct_name "ml" nsp_dtcon nspgrp
   805       (fn "" => (fn p => (use_text Context.ml_output false (Pretty.output p); NONE))
   805       (fn "" => (fn p => (use_text Context.ml_output false (Pretty.output p); NONE))
   806         | _ => SOME) (K NONE, syntax_tyco, syntax_const) (hidden, SOME [val_name]);
   806         | _ => SOME) (K NONE, syntax_tyco, syntax_const) (hidden, SOME [NameSpace.pack [nsp_eval, val_name]]);
   807     val _ = serializer modl';
   807     val _ = serializer modl';
   808     val val_name_struct = NameSpace.append struct_name val_name;
   808     val val_name_struct = NameSpace.append struct_name val_name;
   809     val _ = use_text Context.ml_output false ("val _ = (" ^ ref_name ^ " := " ^ val_name_struct ^ ")");
   809     val _ = use_text Context.ml_output false ("val _ = (" ^ ref_name ^ " := " ^ val_name_struct ^ "())");
   810     val value = ! reff;
   810     val value = ! reff;
   811   in value end;
   811   in value end;
   812 
   812 
   813 fun mk_flat_ml_resolver names =
   813 fun mk_flat_ml_resolver names =
   814   let
   814   let