\langle pointer; not, [\:], [\:], [1,1,1]\rangle \Rightarrow\\
\langle pointer [\:], [\:], [0,1,1]\rangle \Rightarrow\\
\langle [\:], [\:], [1,1]\rangle\\
-\
+\\
$
-Eerst worden x en y op de stack gepusht zodat de stack [y,x] = [1,1].
+Eerst worden x en y op de stack gestopt zodat de stack [y,x] = [1,1].
Deze stack is gelijk aan de stack in de termineerende configuratie: 1 = 1! dus y = x!.
Als bewijs dat de wiskundige operaties op de stack goed zijn uitgevoerd staat in
de appendix onder het kopje voorbeelden een stukje code. In het programma
eenfaculteit worden alle wiskundige operaties die bij de commando's horen
-achter elkaar uitgevoerd op de stack, waarbij het resultaat [1,1] is.
+achter elkaar uitgevoerd op de stack, waarbij het resultaat [1,1] is.\\
+Bij de voorbeelden staan ook nog de programma's tweefaculteit en
+vijffaculteit die respectievelijk 2! en 5! uitrekenen.
\end{landscape}
\ No newline at end of file
$$\mathcal{INN_S} : Stack \rightarrow Stack$$\\
Deze functie haalt het bovenste element van de input stack en stopt dit element bovenop de output stack.\\
-(outchar, inchar)\\
-
Met behulp van deze gedefinieerde functies kunnen we nu de volgende semantiekregels opstellen:\\
\begin{alignat*}{2}
{[outnum_{sos}]} \qquad &
\langle outnum, s_i, s_o, s\rangle \Rightarrow
\langle s_i, \mathcal{OUTN_{SO}}(s_o),\mathcal{D}(s)\rangle\\
-{[inchar_{sos}]} \qquad &
-\langle inchar, s_i, s_o, s\rangle \Rightarrow
-\langle s_i, s_o, s\rangle\\
-{[outchar_{sos}]} \qquad &
-\langle outchar, s_i, s_o, s\rangle \Rightarrow
-\langle s_i, s_o, s\rangle\\
\end{alignat*}
niet in de oorspronkelijke kleuren notatie maar gebruiken we een woordelijke
notatie. Dan ziet de grammatica er als volgt uit:\\
$S ::= S_1 ; S_2\ |\ push \: n\ |\ pop\ |\ add\ |\ subtract\
-|\ multiply\ |\ divide\ |\\mod\ |\ not\ |\ greater\
-|\ pointer\ |\ switch\ |\ duplicate\ |\ roll\ |\\
-inchar\ |\ innum\ |\ outchar\ |\ outnum$\\
+|\ multiply\ |\ divide\ |\mod\ |\\ not\ |\ greater\
+|\ pointer\ |\ switch\ |\ duplicate\ |\ roll\ |\
+innum\ |\ outnum$\\
-Waarbij $n \in \mathbb{N}_1$.
+Waarbij $n \in \mathbb{N}_1$.\\
+De commando's in(char) en out(char) worden hier niet behandeld.
\subsection{Piet'}
Omdat sommige simpele expressies in \textit{While} veel regels in beslag nemen
KLAAR onderscheid wiskundige deel
KLAAR natuurlijke taal toevoegen voor semantiekbeschrijving
KLAAR toevoegen functies/regels aan semantiek
-BEZIG toepassen semantiekregels op faculteitsprogramma in Piet'
+KLAAR toepassen semantiekregels op faculteitsprogramma in Piet'
KLAAR? verdere uitleg Piet'
-inchar/outchar eventueel toevoegen aan semantiek
+inchar/outchar eventueel toevoegen aan semantiek (voor nu weggelaten)
+voor later: waarschijnlijk nog meer analyses in de vorm van afleidingsrijen toevoegen