\subsection{Compositie}
De \textit{Composition} van $S_1$ en $S_2$ is gelijk aan de corresponderende
-blokken in \textit{Piet} waarbij het einde van het pad van het eerste blok met
-een wit blokje verbonden wordt met het blokje links bovenaan het tweede blok.
-Lukt dit niet omdat dan beide blokken overlappen of het einde van het pad van
-het eerste blok aan de boven of linkerkant ligt, dan kunnen het ook meerdere
-blokjes zijn eventueel door zwarte blokken gestuurd.\\
+blokken in \textit{Piet} waarbij het de paden aan elkaar verbonden worden met
+$0$ of meer skip blokken. Over het algemeen is er geen \textit{skip} blok nodig
+maar als $S_1$ eindigt met een breed kleurenvlak en $S_2$ begint met een breed
+kleuren vak kunnen de blokken met elkaar verbonden worden door het invoeren van
+\textit{skips}.
In dit voorbeeld van \textit{Piet} geven de '*' aan dat je hier elk willekeurig blok voor in kan vullen. De verschillende grijstinten geven de verschillende blokken aan. Lichtoranje geeft het begin van het pad van dat blok aan en donkeroranje het eind. Als laatste staat een underscore voor een wit blokje.\\
\textbf{While} $S_1;S_2$\\
\textbf{Piet}
\color{orange}$\ast$ & \color{gray}$\ast$ & \color{gray}$\ast$\\
\color{gray}$\ast$ & \color{gray}$\ast$ & \color{gray}$\ast$\\
\color{gray}$\ast$ & \color{gray}$\ast$ & \color{dorange}$\ast$\\
-\end{tabular}
\ No newline at end of file
+\end{tabular}
-\subsection{Skip}
-De \textit{Skip} is gelijk aan een enkel wit blokje. Als er naar een locatie
-gegaan moet worden voor de volgende operatie kunnen het ook meerdere blokjes
-zijn eventueel door zwarte blokken gestuurd.\\
+\subsection{Vertaling}
+Hieronder beschrijven we de vertaal stappen om van een arbitrair \textit{While}
+programma een \textit{Piet} te maken.
+
+\subsection{Skip en logistiek}
+De \textit{Skip} is gelijk aan een of meer witte blokjes gevolgd niet wit
+blokje. Het witte blokje laat piet niks doen en het eerstvolgende niet witte
+blokje zorgt ervoor dat de interpreter een aanknopingspunt heeft voor de
+volgende overgang.
\textbf{While} $skip$\\
\textbf{Piet} {\color{white}\#}\\
+Doormiddel van \textit{skip} en bochten kunnen code blokken met elkaar
+verbonden worden.
+
\input{an_compositie.tex}
\input{an_if_statement.tex}
\subsection{Structurele operationele semantiek}
Bij natuurlijke semantiek(ns) ligt de nadruk op de relatie tussen de begin en
-de eind state. Het nadeel hiervan is dat programma’s die niet termineren geen
+de eind state. Het nadeel hiervan is dat programma's die niet termineren geen
bewijsbomen hebben. Hierdoor is het niet mogelijk om eigenschappen te bewijzen
-voor zulke programma’s. Bij structurele operationele semantiek(sos) ligt de
+voor zulke programma's. Bij structurele operationele semantiek(sos) ligt de
nadruk juist op de individuele stappen van de executie en zijn er w\'el
-bewijsrijen voor programma’s die niet termineren.\\
+bewijsrijen voor programma's die niet termineren.\\
Om deze redenen hebben we gekozen voor sos.\\
Een toestand in onze semantiek wordt beschreven door drie stacks; input, output
en programma. Respectievelijk benoemen we deze met $s_i, s_o, s$ en beschrijven
ze de STDIN, STDOUT en interne stack van het programma. Stacks worden
gerepresenteerd als: $s=[e_0, e_1, \dots, e_n]$ waarbij $e_i\in\mathbb{Z}$
- en waarbij het bovenste element op de stack gerepresenteerd word door het
+ en waarbij het bovenste element op de stack gerepresenteerd wordt door het
eerste element in de lijst.\\
-Het transitie systeem zal twee verschillende transities kennen, namelijk:\\
+Het transitiesysteem zal twee verschillende transities kennen, namelijk:\\
$\langle S, s_i, s_o, s\rangle\Rightarrow\langle S', s_i', s_o', s'\rangle$ en\\
$\langle S, s_i, s_o, s\rangle\Rightarrow\langle s_i', s_o', s'\rangle$\\
-Waarbij de laatste transitie duidt op een terminerende transitie en de eerste
+Waarbij de laatste transitie duidt op een transitie waar een volgende transitie
+aanwezig is en genomen kan worden. De tweede duidt op een transitie waarbij er
+geen volgede beschikbaar is en het programma dus termineerd.
op een niet terminerende transitie.\\
\subsection{Semantiekbeschrijving}
-spelfouten!!
-uitleg bij tabel 4
-
-Mart:
-KLAAR variabelen opslag
-bijhouden huidige blok oppervlak
-stappen met codelgrootte en loop methode
-codelgrootte
-KLAAR voorbeeld variabelen ophalen uit stack
-stack volgorde aangeven e_n ... e_0
-loops beter beschrijven
-annoteren Piet' programma in paint
-uitleg terminatie Piet' programma
-
-Marjolein:
-KLAAR wiskundige operaties op stacks definieren
-KLAAR onderscheid wiskundige deel
-KLAAR natuurlijke taal toevoegen voor semantiekbeschrijving
-KLAAR toevoegen functies/regels aan semantiek
-KLAAR toepassen semantiekregels op faculteitsprogramma in Piet'
-KLAAR? verdere uitleg Piet'
-inchar/outchar eventueel toevoegen aan semantiek (voor nu weggelaten)
-voor later: waarschijnlijk nog meer analyses in de vorm van afleidingsrijen toevoegen
+Bochten uitleggen(analysis.tex)