1 \subsection{Aritmetische expressies
}
2 Het uitrekenen van een arithmetische expressie in
\textit{Piet
} moet in
3 verschillende stappen gebeuren. Volgens de regels van de wiskunde worden er
4 telkens binaire operaties uitgevoerd tot het vereenvoudigd is tot een enkele
5 numerieke waarde. Het opvragen van variabelen uit het geheugen wordt in een
6 volgende paragraaf besproken en we gaan er nu van uit dat dat een triviale
7 operatie is die een of twee variabelen boven aan zetten op een gekozen
9 Na het opvragen van variabele $n$ wordt de variabele bovenop de stack gezet en
10 krijgen de andere variabelen automatisch andere nummers. De variabelen met een
11 positie strikt kleiner dan $n$ krijgen een positieverhoging van $
1$ en de
12 variabelen met een positie strikt groter dan $n$ krijgen een positieverlaging
13 van $
1$.\\ Bijvoorbeeld bij de expressie $
1+
1$ is de eerste stap twee keer een
14 $
1$ op de stack duwen en vervolgens de binare $+$ operator toepassen en dat
16 \textbf{While
} $x :=
1 +
1$\\
24 \textbf{Piet'
} $push
1, push
1, add$\\
26 \textbf{While
} $x := y +
3 *
2$\\
28 \begin{tabular
}{cccccccc
}
29 {\color{red
}\#
} &
{\color{dred
}\#
} &
{\color{dred
}\#
} &
{\color{lred
}\#
}
30 {\color{dyellow
}\#
} & ...variable retrieval... &
{\color{dyellow
}\#
} &
32 {\color{red
}\#
} &
{\color{dred
}\#
}\\
34 \textbf{Piet'
} $push\
2, push\
3, mul, get\ y, add$\\
36 \subsection{Booleaanse expressies
}
37 Het evalueren van booleaanse expressies gaat hetzelfde als aritmetische
38 expressies, het enige verschil is dat er binnen de booleanse operatoren van
39 \textit{While
} operatoren bestaan die niet voorkomen in
\textit{Piet
} en deze
40 moeten dus herschreven worden. De operatoren die herschreven worden zijn: $=,
42 De herschrijving van onbestaande operatoren in
\textit{Piet
} gaat als volgt:\\
48 \textbf{While
} $
3=
2\wedge 3\leq 4$\\
50 \begin{tabular
}{ccccccccccccccc
}
51 {\color{red
}\#
} &
{\color{dred
}\#
} &
{\color{lred
}\#
} &
{\color{yellow
}\#
}
52 &
{\color{dyellow
}\#
} &
{\color{lyellow
}\#
} &
{\color{dgreen
}\#
} &
53 {\color{dmagenta
}\#
} &
{\color{lyellow
}\#
} &
{\color{yellow
}\#
} &
54 {\color{blue
}\#
} &
{\color{dred
}\#
} &
{\color{magenta
}\#
} &
55 {\color{dmagenta
}\#
} &
{\color{green
}\#
}\\
56 {\color{red
}\#
} &
{\color{dred
}\#
} & & & & & & &
{\color{lyellow
}\#
} &
58 {\color{red
}\#
} & & & & & & & &
{\color{lyellow
}\#
} &
{\color{yellow
}\#
}\\
59 & & & & & & & & &
{\color{yellow
}\#
}
61 \textbf{Piet'
} $push \:
3, push \:
2, sub, push \:
1, push \:
1, sub, gre, not, push \:
3,
62 push \:
4, gre, not, add, push \:
1, gre$\\