(* Simulation des constructions break et continue de C avec des exceptions.
   L'idée est très simple :
   - la boucle est englobée par try ... with Break -> ()
     et la construction break est traduite par raise Break
   - le corps de la boucle est englobé par try ... with Continue -> ()
     et la construction continue est traduite par raise Continue
*)

exception Break
exception Continue

(* Ainsi le programme C donné en exemple devient *)

let () =
  try
    for i = 0 to 9 do
      try
        if i = 3 then raise Continue;
        if i = 8 then raise Break;
        Printf.printf "%d" i
      with Continue -> ()
    done
  with Break ->
    ()

(* et il affiche bien 0124567 *)

This document was generated using caml2html