807 and print_nodes prefix_fragments nodes = (map_filter |
807 and print_nodes prefix_fragments nodes = (map_filter |
808 (fn name => print_node prefix_fragments (name, snd (Graph.get_node nodes name))) |
808 (fn name => print_node prefix_fragments (name, snd (Graph.get_node nodes name))) |
809 o rev o flat o Graph.strong_conn) nodes |
809 o rev o flat o Graph.strong_conn) nodes |
810 |> split_list |
810 |> split_list |
811 |> (fn (decls, body) => (flat decls, body)) |
811 |> (fn (decls, body) => (flat decls, body)) |
812 val names' = map (try (deresolver [])) names; |
|
813 val p = Pretty.chunks2 (map snd includes @ snd (print_nodes [] ml_program)); |
812 val p = Pretty.chunks2 (map snd includes @ snd (print_nodes [] ml_program)); |
814 fun write width NONE = writeln o format [] width |
813 fun write width NONE = writeln o format [] width |
815 | write width (SOME p) = File.write p o format [] width; |
814 | write width (SOME p) = File.write p o format [] width; |
816 in |
815 in |
817 Code_Target.serialization write (rpair names' ooo format) p |
816 Code_Target.serialization write (rpair (try (deresolver [])) ooo format) p |
818 end; |
817 end; |
819 |
818 |
820 val serializer_sml : Code_Target.serializer = |
819 val serializer_sml : Code_Target.serializer = |
821 Code_Target.parse_args (Scan.optional (Args.$$$ "no_signatures" >> K false) true |
820 Code_Target.parse_args (Scan.optional (Args.$$$ "no_signatures" >> K false) true |
822 >> (fn with_signatures => serialize_ml target_SML |
821 >> (fn with_signatures => serialize_ml target_SML |