386 snd (Graph.get_node nodes name))) |
386 snd (Graph.get_node nodes name))) |
387 ((rev o flat o Graph.strong_conn) nodes); |
387 ((rev o flat o Graph.strong_conn) nodes); |
388 in if null ps then NONE else SOME (Pretty.chunks2 ps) end; |
388 in if null ps then NONE else SOME (Pretty.chunks2 ps) end; |
389 |
389 |
390 (* serialization *) |
390 (* serialization *) |
391 val p_includes = if null presentation_names |
391 val p_includes = if null presentation_names then map snd includes else []; |
392 then map (fn (base, p) => print_module base [] p) includes else []; |
|
393 val p = Pretty.chunks2 (p_includes @ the_list (print_nodes [] sca_program)); |
392 val p = Pretty.chunks2 (p_includes @ the_list (print_nodes [] sca_program)); |
394 fun write width NONE = writeln_pretty width |
393 fun write width NONE = writeln_pretty width |
395 | write width (SOME p) = File.write p o string_of_pretty width; |
394 | write width (SOME p) = File.write p o string_of_pretty width; |
396 in |
395 in |
397 Code_Target.serialization write (rpair [] oo string_of_pretty) p |
396 Code_Target.serialization write (rpair [] oo string_of_pretty) p |
413 else quote (string_of_int k) |
412 else quote (string_of_int k) |
414 in Literals { |
413 in Literals { |
415 literal_char = Library.enclose "'" "'" o char_scala, |
414 literal_char = Library.enclose "'" "'" o char_scala, |
416 literal_string = quote o translate_string char_scala, |
415 literal_string = quote o translate_string char_scala, |
417 literal_numeral = fn k => "BigInt(" ^ numeral_scala k ^ ")", |
416 literal_numeral = fn k => "BigInt(" ^ numeral_scala k ^ ")", |
418 literal_positive_numeral = fn k => "Nat.Nat(" ^ numeral_scala k ^ ")", |
417 literal_positive_numeral = fn k => "Nat(" ^ numeral_scala k ^ ")", |
419 literal_alternative_numeral = fn k => "Natural.Nat(" ^ numeral_scala k ^ ")", |
418 literal_alternative_numeral = fn k => "Natural(" ^ numeral_scala k ^ ")", |
420 literal_naive_numeral = fn k => "BigInt(" ^ numeral_scala k ^ ")", |
419 literal_naive_numeral = fn k => "BigInt(" ^ numeral_scala k ^ ")", |
421 literal_list = fn [] => str "Nil" | ps => Pretty.block [str "List", enum "," "(" ")" ps], |
420 literal_list = fn [] => str "Nil" | ps => Pretty.block [str "List", enum "," "(" ")" ps], |
422 infix_cons = (6, "::") |
421 infix_cons = (6, "::") |
423 } end; |
422 } end; |
424 |
423 |