open Types let omega = "\207\137" let string_of_basic ins = ins let string_of_primitive = function | Basic ins -> string_of_basic ins | Terminate -> "!" | Ptest ins -> "+" ^ string_of_basic ins | Ntest ins -> "-" ^ string_of_basic ins | Jump len -> "#" ^ string_of_int len let rec string_of_program = function | Primitive p -> string_of_primitive p | Concat l -> String.concat ";" (List.map string_of_program l) | Repeat p -> "(" ^ string_of_program p ^ ")" ^ omega | Empty -> ""