2 Als we de analyse op een compleet programma toepassen komt er een
\textit{Piet
}
3 programma uit dat behoorlijk fors is maar netjes zijn werk doet. Dit programma
4 berekent de faculteit van $x$ en stopt dat uiteindelijk in $y$.
5 \begin{lstlisting
}[title=Faculteit in
\textit{While
}]
15 In
\textit{Piet
} ziet dit er als volgt uit...
16 \begin{lstlisting
}[title=Faculteit in
\textit{Piet'
}]
17 push
5 // x is vanaf nu variabele
1
18 push
1 // y is vanaf nu variabele
2
21 Un(
1) // variabele x wordt klaargezet
22 push
1 // de waarde
1 wordt klaargezet
23 sub // subtractie om straks gelijkheid te kunnen bepalen
24 push
1 // de waarde
1 word gepushed om
0 te maken
25 dup // de waarde
1 staat er nu twee keer op
26 sub //
0 staat op de stack om groterdan relatie te bepalen
27 push
2 // klaarmaken om de bovenste twee te swappen
30 gre // als x>
0 dan ligt
1 op de stack anders
0
31 not // als x=
0 dan ligt
1 op de stack anders
0
32 pointer // als x=
0 dan draait de DP niet en gaat het programma naar pad A
33 // als x$
\neq$ dan draait de DP en gaat het programma naar pad B
36 skip //een oneindig aantal witte blokken, y is nu x!
39 Bin(
1,
2) // x en y worden klaargezet om y opnieuw te assignen
40 mul // x*y ligt boven op de stack
41 Ass(
2) // x*y wordt geassigned aan y
42 Un(
1) // x wordt klaargezet
43 push
1 //
1 wordt klaargezet
44 sub // x-
1 ligt op de stack
45 Ass(
1) // x-
1 wordt geassigned aan x
46 // nu gaat het programma weer via een wit pad naar markering A