(** Output any intermediate representation to [stdout] or [stderr]. *) (** The printing phase takes as input any intermediate representation, and prints its stringification. The input of the phase is also its output. Since node stringification is implemented by {!Stringify}, the phase simply calls {!Stringify.node2str} for [Ast] inputs. Stringification of assembly instructions is implemented in the module itself: {!print_assembly}. The output starts and ends with a separation line ({!Util.hline}). *) (** Print assembly instructions to the given file pointer. *) val print_assembly : out_channel -> Types.instr list -> unit (** Main phase function, called by {!Main}. *) val phase : Main.phase_func