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 |