
    EXTEND
      GLOBAL: expr;
      expr: LEVEL "top"
        [ [ "repeat"; e1 = sequence; "until"; e2 = SELF ->
              &lt;:expr&lt; do { $e1$; while not $e2$ do { $e1$ } } &gt;&gt; ] ]
      ;
      sequence:
        [ [ el = LIST1 expr_semi -> &lt;:expr&lt; do { $list:el$ } &gt;&gt; ] ]
      ;
      expr_semi:
        [ [ e = expr; ";" -> e ] ]
      ;
    END;

  let i = ref 1 in
  repeat print_int i.val; print_endline ""; incr i; until i.val = 10;
</pre>

<p>The compilation of this example (n