Perroquet - Branches
Le code devient un peu ennuyeux sans contrôle de flux; pour commencer, Parrot connaît le branchement et les étiquettes. L'op de branche est équivalent au goto de Perl:
branch TERRY
JOHN: print "fjords\n"
branch END
MICHAEL: print " pining"
branch GRAHAM
TERRY: print "It's"
branch MICHAEL
GRAHAM: print " for the "
branch JOHN
END: end
Il peut également effectuer des tests simples pour voir si un registre contient une valeur vraie:
set I1, 12
set I2, 5
mod I3, I2, I2
if I3, REMAIND, DIVISOR
REMAIND: print "5 divides 12 with remainder "
print I3
branch DONE
DIVISOR: print "5 is an integer divisor of 12"
DONE: print "\n"
end
Voici à quoi cela ressemblerait en Perl, à titre de comparaison:
$i1 = 12;
$i2 = 5;
$i3 = $i1 % $i2;
if ($i3) {
print "5 divides 12 with remainder ";
print $i3;
} else {
print "5 is an integer divisor of 12";
}
print "\n";
exit;
Opérateur de perroquet
Nous avons la gamme complète de comparateurs numériques: eq, ne, lt, gt, le et ge. Notez que vous ne pouvez pas utiliser ces opérateurs sur des arguments de types disparates; vous devrez peut-être même ajouter le suffixe _i ou _n à l'op, pour lui dire quel type d'argument vous utilisez, bien que l'assembleur doive deviner cela pour vous, au moment où vous lirez ceci.