\subsection{Semantiekbeschrijving}
Om de semantiekregels te kunnen beschrijven maken we gebruik van hulpfuncties. Hieronder staat het type van de functies en een korte beschrijving.
-De implementatie van deze functies staat in de appendix bij het aangegeven regelnummer.\\
+De implementatie van deze functies staat in de appendix. De functies worden op de volgende manier aangegeven: \textit{naam functie} (\textit{naam in appendix}, r. \textit{regelnummer})\\
delete functie (d, r. 5):\\
Om het bovenste element van een stack weg te kunnen gooien gebruiken we de volgende
functie:\\
$$\mathcal{D} : Stack \rightarrow Stack$$
-Deze functie haalt het bovenste element van de stack en gooit deze weg.\\
+Deze functie haalt het bovenste element van de stack en gooit dit weg.\\
extend functie (e, r. 9):\\
Om een stack uit te kunnen breiden met een element gebruiken we de volgende
functie:\\
$$\mathcal{E} : \mathbb{Z}\rightarrow (Stack\rightarrow Stack)$$\\
-Deze functie neemt een stack en een integer en voegt de integer toe bovenop de
+Deze functie neemt een integer en een stack en voegt de integer toe bovenop de
stack.\\
add functie (add, r. 13):\\
Om de bovenste twee elementen van een stack op te tellen gebruiken we de volgende
functie:\\
$$\mathcal{ADD} : Stack \rightarrow Stack$$
-Deze functie haalt de bovenste twee waarden van de stack, telt ze bij elkaar op, en stopt
+Deze functie haalt de bovenste twee waarden van de stack, telt ze bij elkaar op, en legt
het resultaat bovenop de stack.\\
subtract functie (sub, r. 18)\\
de volgende functie:\\
$$\mathcal{SUB} : Stack \rightarrow Stack$$
Deze functie haalt de bovenste twee elementen van de stack, trekt de bovenste
-waarde van de tweede bovenste waarde af, en stopt het resultaat bovenop de stack.\\
+waarde van de tweede bovenste waarde af, en legt het resultaat bovenop de stack.\\
multiply functie (mul, r. 23):\\
Om de bovenste twee elementen van een stack te vermenigvuldigen gebruiken we de
en de bovenste waarde bovenop de stack.\\
not functie (notc, r. 42):\\
-Om de not van de bovenste waarde te berekenen gebruiken we de
+Om te kijken of de bovenste waarde gelijk is aan 0 gebruiken we de
volgende functie:\\
$$\mathcal{NOT} : Stack \rightarrow Stack$$\\
Deze functie neemt het bovenste element van de stack en stopt 0 bovenaan de
stack als deze waarde niet gelijk is aan 0 en 1 als deze waarde gelijk is aan 0.\\
greater functie (gre, r. 47):\\
-Om kijken of de tweede bovenste waarde groter is dan de bovenste waarde
+Om te kijken of de tweede bovenste waarde groter is dan de bovenste waarde
gebruiken we de volgende functie:\\
$$\mathcal{GRE} : Stack \rightarrow Stack$$\\
Deze functie haalt de bovenste twee waarden van de stack en stopt een 1 bovenop
de stack als de tweede bovenste waarde groter is dan de bovenste waarde. Anders
-word een 0 bovenop de stack gestopt.\\
+wordt een 0 bovenop de stack gestopt.\\
roll functie (roll, r. 54):\\
-Om de stack te rollen gebruiken we de volgende functie:\\
+Om de stack elementen te verschuiven gebruiken we de volgende functie:\\
$$\mathcal{ROLL} : Stack \rightarrow Stack$$\\
-Deze functie haalt de bovenste twee elementen van de stack en stopt 1 bovenop
-de stack als het tweede bovenste element een hogere waarde heeft als dat van het
-bovenste element. Anders word 1 bovenop de stack gestopt.\\
+Deze functie haalt de bovenste twee elementen van de stack 'rolt' de rest van de stack tot een diepte die gelijk is aan de waarde van het tweede bovenste element. Een rol tot diepte \textit{n} verschuift de elementen 1 tot en met \textit{n} allemaal 1 plaats naar boven. Vervolgens wordt het eerste element van de stack op plaats \textit{n} neergelegd. Het aantal keren dat de stack gerold wordt is gelijk aan de waarde van het bovenste element. Als deze waarde negatief is word de stack in tegenovergestelde richting gerold. Dit houdt in dat bij elke rol het element op plaats \textit{n} bovenop de stack word gelegt, en de rest van de elementen (dat boven het element op plaats \textit{n} lagen) 1 plaats naar beneden wordt verschoven.\\
out number (output stack) functie (outnum, r. 70):\\
-Deze functie past de output stack aan als er een integer naartoe geschreven word:\\
+Deze functie past de output stack aan als er een integer naartoe geschreven wordt:\\
$$\mathcal{OUTN_{SO}} : Stack \rightarrow Stack$$\\
Deze functie haalt het bovenste element van de stack en stopt dit element bovenop de output stack.\\
in number (stack) functie (innum, r. 75):\\
-Deze functie past de stack aan als er een integer naartoe geschreven word:\\
+Deze functie past de stack aan als er een integer naartoe geschreven wordt:\\
$$\mathcal{INN_S} : Stack \rightarrow Stack$$\\
Deze functie haalt het bovenste element van de input stack en stopt dit element bovenop de output stack.\\
\begin{alignat*}{2}
{[comp^1_{sos}]}\qquad &
-\frac{\langle S_2, s\rangle \Rightarrow \langle S'_2, s'\rangle}
-{\langle S_1 ;S_2, s\rangle \Rightarrow \langle S_1;S'_2, s'\rangle}\\
+\frac{\langle S_2, s\rangle \Rightarrow \langle S'_2, s_i', s_o', s'\rangle}
+{\langle S_1 ;S_2, s\rangle \Rightarrow \langle S_1;S'_2, s_i', s_o', s'\rangle}\\
{[comp^2_{sos}]}\qquad &
-\frac{\langle S_2, s\rangle \Rightarrow \langle s'\rangle}
-{\langle S_1 ;S_2, s\rangle \Rightarrow \langle S_1, s'\rangle}\\
+\frac{\langle S_2, s\rangle \Rightarrow \langle s_i', s_o', s'\rangle}
+{\langle S_1 ;S_2, s\rangle \Rightarrow \langle S_1, s_i', s_o', s'\rangle}\\
{[pop_{sos}]}\qquad &
\langle pop, s_i, s_o, s\rangle \Rightarrow
\langle s_i, s_o,\mathcal{D}(s)\rangle\\