[t][TT #1610] Add tests for Parrot_compile_string
[parrot.git] / examples / tutorial / 53_loop.pir
blobafe5da4869125cd515bd6f0331d29ff639194a53
1 # Copyright (C) 2007-2009, Parrot Foundation.
2 # $Id$
4 =head1 Loops
6 PIR has no built-in looping structures such as C<for>, C<while>,
7 C<repeat> or C<until>. All loops are built by using conditionals
8 and C<goto>.
10 The loop below calculates 5 factorial, stored in C<$I0>.  C<$I1>
11 is the loop counter. In each loop iteration we decrement the counter
12 to see if we've done the loop enough times. The conditional jump
13 moves control flow back to the top of the loop if more iterations
14 are needed.
16 =cut
18 .sub main :main
20     $I0 = 1               # product
21     $I1 = 5               # counter
23   REDO:                   # start of loop
24     $I0 = $I0 * $I1
25     dec $I1               # decrement counter
26     if $I1 > 0 goto REDO  # end of loop
28     print $I0
29     print "\n"
31 .end
33 # Local Variables:
34 #   mode: pir
35 #   fill-column: 100
36 # End:
37 # vim: expandtab shiftwidth=4 ft=pir: