## Full example

    // https://github.com/Qiskit/openqasm
    /*
     * Repeat-until-success circuit for Rz(theta),
     * cos(theta-pi)=3/5, from Nielsen and Chuang, Chapter 4.
     */
    OPENQASM 3;
    include "stdgates.inc";

    /*
     * Applies identity if out is 01, 10, or 11 and a Z-rotation by
     * theta + pi where cos(theta)=3/5 if out is 00.
     * The 00 outcome occurs with probability 5/8.
     */
    def segment qubit[2]:anc, qubit:psi -> bit[2] {
      bit[2] b;
      reset anc;
      h anc;
      ccx anc[0], anc[1], psi;
      s psi;
      ccx anc[0], anc[1], psi;
      z psi;
      h anc;
      measure anc -> b;
      return b;
    }

    qubit input;
    qubit ancilla[2];
    bit flags[2] = "11";
    bit output;

    reset input;
    h input;

    // braces are optional in this case
    while(int(flags) != 0) {
      flags = segment ancilla, input;
    }
    rz(pi - arccos(3 / 5)) input;
    h input;
    output = measure input;  // should get zero